X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbuilder.cpp;h=b90f2c4153651628c04ffbf552c9450095931110;hb=93f48173c60fd6ac16b1fde9c795cd45423e87cb;hp=cb8ddf610fe7b0237fb5a9f078ebcd122144e3ee;hpb=0d80cabf649b931b26e7055385156c75a7385d35;p=builder.git diff --git a/source/builder.cpp b/source/builder.cpp index cb8ddf6..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'; @@ -233,15 +232,6 @@ int Builder::main() default_pkg->create_build_info(); - /*cout<<"Active packages:"; - for(PackageMap::iterator i=packages.begin(); i!=packages.end(); ++i) - { - cout<<' '<second->get_name(); - if(i->second->get_buildable()) - cout<<'*'; - } - cout<<'\n';*/ - if(create_targets()) return 1; @@ -261,8 +251,6 @@ int Builder::main() } } - //cout<<"Active targets: "<analyze(); @@ -396,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"); @@ -465,7 +455,7 @@ int Builder::build() while(!finish) { - if(actions.size()get_buildable_target(); if(tgt) @@ -506,7 +496,9 @@ int Builder::build() delete actions[i]; actions.erase(actions.begin()+i); if(status>0) - finish=fail=true; + fail=true; + if(actions.empty() && fail) + finish=true; } else ++i;