X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fpackagemanager.h;h=9fb373ec48152b70a16a5e56b93604c08176b38c;hb=08015c0f27f377fcd4aa186fca5bd8cf70723a5a;hp=3484687e6191bf6a3c93bc72221f2ccac9b4c113;hpb=90bc57276bd8d82f4d95558ab7afc702edd4bdd2;p=builder.git diff --git a/source/packagemanager.h b/source/packagemanager.h index 3484687..9fb373e 100644 --- a/source/packagemanager.h +++ b/source/packagemanager.h @@ -24,13 +24,23 @@ private: Builder &builder; SearchPath pkg_path; SearchPath pkg_dirs; + SearchPath binpkg_path; + SearchPath binpkg_files; bool no_externals; PackageMap packages; + std::set not_found; + bool env_set; public: PackageManager(Builder &); ~PackageManager(); + /// Adds a location to look for source packages from. + void append_package_path(const Msp::FS::Path &); + + /// Adds a location to look for binary packages from. + void append_binary_package_path(const Msp::FS::Path &); + /** Prevent creation of source packages. */ void set_no_externals(bool); @@ -42,15 +52,20 @@ public: const PackageMap &get_packages() const { return packages; } - /** Locates a package and creates it if necessary. */ + /** Locates a package and loads it if necessary. */ Package *find_package(const std::string &); private: std::string run_pkgconfig(const std::string &, const std::string &); /** Determines the source directory of a package. Pkg-config is consulted - first, and if it fails, the package path is searched for matches. */ + first, and if it fails, the package path is searched for matches. The + package is expected to be located in a directory named after itself. */ Msp::FS::Path get_package_location(const std::string &); + + /** Determines the file containing a binary package. The file is expected + to be named after the package. */ + Msp::FS::Path get_binary_package_file(const std::string &); }; #endif