]> git.tdb.fi Git - builder.git/blobdiff - source/packagemanager.cpp
Move the bpk files into a subdirectory and install them
[builder.git] / source / packagemanager.cpp
index 93fbbc9c0ed204b56b11fea1dde7a9f33dae9099..ee07987d0186e86641cf43cf8aa11f801d3ea18f 100644 (file)
@@ -61,6 +61,15 @@ void PackageManager::add_package(Package *pkg)
        packages.insert(PackageMap::value_type(pkg->get_name(), pkg));
 }
 
+Package *PackageManager::get_package(const string &name) const
+{
+       PackageMap::const_iterator i = packages.find(name);
+       if(i!=packages.end())
+               return i->second;
+
+       return 0;
+}
+
 Package &PackageManager::get_main_package() const
 {
        if(!main_pkg)
@@ -73,9 +82,8 @@ Package *PackageManager::find_package(const string &name)
        if(not_found.count(name))
                return 0;
 
-       PackageMap::iterator i = packages.find(name);
-       if(i!=packages.end())
-               return i->second;
+       if(Package *pkg = get_package(name))
+               return pkg;
 
        if(!no_externals)
        {
@@ -83,7 +91,7 @@ Package *PackageManager::find_package(const string &name)
                if(!path.empty())
                {
                        builder.load_build_file(path/"Build");
-                       i = packages.find(name);
+                       PackageMap::iterator i = packages.find(name);
                        if(i!=packages.end())
                                return i->second;
                }
@@ -93,9 +101,8 @@ Package *PackageManager::find_package(const string &name)
        if(!path.empty())
        {
                builder.load_build_file(path);
-               i = packages.find(name);
-               if(i!=packages.end())
-                       return i->second;
+               if(Package *pkg = get_package(name))
+                       return pkg;
        }
 
        try
@@ -109,7 +116,6 @@ Package *PackageManager::find_package(const string &name)
        }
        catch(...)
        {
-               builder.problem(name, "not found");
                not_found.insert(name);
                return 0;
        }
@@ -237,3 +243,9 @@ FS::Path PackageManager::get_binary_package_file(const string &name)
 
        return FS::Path();
 }
+
+void PackageManager::save_all_caches() const
+{
+       for(PackageMap::const_iterator i=packages.begin(); i!=packages.end(); ++i)
+               i->second->save_caches();
+}