X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbuilder.cpp;h=b90f2c4153651628c04ffbf552c9450095931110;hb=93f48173c60fd6ac16b1fde9c795cd45423e87cb;hp=1de726bcb2b3393f267e363741525da20d6c72e6;hpb=cbb3c4c6aab7b04f7bd2178fb8f12846d532a472;p=builder.git diff --git a/source/builder.cpp b/source/builder.cpp index 1de726b..b90f2c4 100644 --- a/source/builder.cpp +++ b/source/builder.cpp @@ -132,11 +132,15 @@ Package *Builder::get_package(const string &n) Package *pkg=Package::create(*this, n); packages.insert(PackageMap::value_type(n, pkg)); - new_pkgs.push_back(pkg); + if(pkg) + new_pkgs.push_back(pkg); return pkg; } +/** +Returns the target with the given name, or 0 if no such target exists. +*/ Target *Builder::get_target(const string &n) { TargetMap::iterator i=targets.find(n); @@ -213,17 +217,12 @@ int Builder::main() std::list missing; for(PackageMap::iterator i=packages.begin(); i!=packages.end(); ++i) - { - const list &requires=i->second->get_requires(); - for(list::const_iterator j=requires.begin(); j!=requires.end(); ++j) - if(!j->get_package()) - missing.push_back(j->get_name()); - } + if(!i->second) + missing.push_back(i->first); if(!missing.empty()) { missing.sort(); - missing.unique(); cerr<<"The following packages were not found on the system:\n"; for(list::iterator i=missing.begin(); i!=missing.end(); ++i) cerr<<" "<<*i<<'\n'; @@ -385,6 +384,8 @@ int Builder::create_targets() Target *tgt=new_tgts.front(); new_tgts.erase(new_tgts.begin()); tgt->find_depends(); + if(!tgt->get_depends_ready()) + new_tgts.push_back(tgt); } Target *cmdline=new VirtualTarget(*this, "cmdline");