- if(find(direct_reqs.begin(), direct_reqs.end(), *i)!=direct_reqs.end())
- build_info.add((*i)->get_exported_binfo());
- else
- {
- const BuildInfo &ebi = (*i)->get_exported_binfo();
- build_info.cflags.insert(build_info.cflags.end(), ebi.cflags.begin(), ebi.cflags.end());
- build_info.incpath.insert(build_info.incpath.end(), ebi.incpath.begin(), ebi.incpath.end());
- build_info.defines.insert(build_info.defines.end(), ebi.defines.begin(), ebi.defines.end());
- }
-
- const PackageList &reqs = (*i)->get_requires();
- for(PackageList::const_iterator j=reqs.begin(); j!=reqs.end(); ++j)
- if(find(all_reqs.begin(), all_reqs.end(), *j)==all_reqs.end())
- all_reqs.push_back(*j);
+ BuildInfo::UpdateLevel level = BuildInfo::CHAINED;
+ if(any_equals(direct_reqs, r))
+ level = BuildInfo::DEPENDENCY;
+ final_build_info.update_from(r->get_exported_build_info(), level);
+
+ for(Package *q: r->get_required_packages())
+ if(!any_equals(all_reqs, q))
+ all_reqs.push_back(q);