X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fpackagemanager.cpp;h=240bf60caafd888ad9b56845331235c8849dce62;hb=b58e16b078df97d8aabf64a8e4d0d8ce37ad3877;hp=7f186382a3e76cf4b8a490095ec9c91f1e416ba4;hpb=a5ea586a080ef6766a7d68b1c40633c6ae8b8ba4;p=builder.git diff --git a/source/packagemanager.cpp b/source/packagemanager.cpp index 7f18638..240bf60 100644 --- a/source/packagemanager.cpp +++ b/source/packagemanager.cpp @@ -59,9 +59,10 @@ void PackageManager::add_package(Package *pkg) Package *PackageManager::find_package(const string &name) { - PackageMap::iterator i = packages.find(format("%s/%s", name, builder.get_current_arch().get_system())); - if(i==packages.end()) - i = packages.find(name); + if(not_found.count(name)) + return 0; + + PackageMap::iterator i = packages.find(name); if(i!=packages.end()) return i->second; @@ -86,22 +87,21 @@ Package *PackageManager::find_package(const string &name) return i->second; } - Package *pkg = 0; try { // Package source not found - create a binary package string flags_str = run_pkgconfig(name, "flags"); vector flags = split(flags_str); - pkg = BinaryPackage::from_flags(builder, name, flags); + Package *pkg = BinaryPackage::from_flags(builder, name, flags); + packages.insert(PackageMap::value_type(name, pkg)); + return pkg; } catch(...) { builder.problem(name, "not found"); + not_found.insert(name); + return 0; } - - packages.insert(PackageMap::value_type(name, pkg)); - - return pkg; } string PackageManager::run_pkgconfig(const string &pkg, const string &what) @@ -163,7 +163,7 @@ FS::Path PackageManager::get_package_location(const string &name) if(pkg_dirs.empty()) { - for(list::const_iterator i=pkg_path.begin(); i!=pkg_path.end(); ++i) + for(SearchPath::const_iterator i=pkg_path.begin(); i!=pkg_path.end(); ++i) { builder.get_logger().log("files", format("Traversing %s", *i)); list files = list_files(*i); @@ -185,9 +185,9 @@ FS::Path PackageManager::get_package_location(const string &name) } bool msp = !name.compare(0, 3, "msp"); - for(list::const_iterator i=pkg_dirs.begin(); i!=pkg_dirs.end(); ++i) + for(SearchPath::const_iterator i=pkg_dirs.begin(); i!=pkg_dirs.end(); ++i) { - string base = basename(*i); + string base = FS::basename(*i); unsigned dash = base.rfind('-'); if(!base.compare(0, dash, name))