+++ /dev/null
-#ifndef PACKAGE_H_
-#define PACKAGE_H_
-
-#include <list>
-#include <string>
-#include <msp/datafile/objectloader.h>
-#include "buildinfo.h"
-#include "config.h"
-
-class Builder;
-class Package;
-
-/**
-A package is a distributable piece of software. Package information may be
-obtained in several ways: Build files of source packages, pkg-config for binary
-packages and the builderrc file for binary packages with no pkg-config support.
-*/
-class Package
-{
-public:
- class Loader: public Msp::DataFile::ObjectLoader<Package>
- {
- public:
- Loader(Package &);
- private:
- void if_arch(const std::string &);
- void require(const std::string &);
- };
-
- typedef std::list<Package *> Requirements;
-
-protected:
- Builder &builder;
-
- std::string name;
-
- Requirements requires;
- BuildInfo export_binfo;
- bool prepared;
- std::list<std::string> problems;
-
- bool use_pkgconfig;
-
- Package(Builder &, const std::string &);
-public:
- virtual ~Package() { }
-
- Builder &get_builder() const { return builder; }
- const std::string &get_name() const { return name; }
- const Requirements &get_required_packages() const { return requires; }
-
- const BuildInfo &get_exported_build_info() const { return export_binfo; }
-
- /// Indicates whether or not this package supports pkg-config
- bool get_use_pkgconfig() const { return use_pkgconfig; }
-
- /** Prepares the package for building. Recursively prepares all required
- packages, populates build info and creates targets. */
- void prepare();
-
-protected:
- virtual void do_prepare() { }
-
-public:
- bool is_prepared() const { return prepared; }
-
- const std::list<std::string> &get_problems() const { return problems; }
-
- virtual void save_caches() { }
-};
-
-#endif