X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcomponent.cpp;h=6d02ad319e690a33be59823edbf4ddc35d85fcb3;hb=1a46151c99a406123c4ddfc797a7841baf3e4cc2;hp=a94a5663563d677e5a14f9fde795599ff48de93d;hpb=59ac0a44d6edf179c01604c6ced744873213f855;p=builder.git diff --git a/source/component.cpp b/source/component.cpp index a94a566..6d02ad3 100644 --- a/source/component.cpp +++ b/source/component.cpp @@ -6,12 +6,28 @@ using namespace std; Component::Component(Package &p, Type t, const string &n): pkg(p), type(t), - name(n) + name(n), + install(false) { } +void Component::resolve_refs() +{ + for(PkgRefList::iterator i=requires.begin(); i!=requires.end(); ++i) + i->resolve(); +} + void Component::create_build_info() { - build_info=pkg.get_build_info(); + build_info.add(pkg.get_build_info()); + + for(PkgRefList::iterator i=requires.begin(); i!=requires.end(); ++i) + { + if(!i->get_package()) + continue; + i->get_package()->create_build_info(); + build_info.add(i->get_package()->get_exported_binfo()); + } + build_info.unique(); } @@ -21,9 +37,21 @@ Component::Loader::Loader(Component &c): add("source", &Loader::source); add("install", &Component::install); add("install_headers", &Component::install_headers); + add("build_info", &Loader::build_info); + add("require", &Loader::require); } void Component::Loader::source(const string &s) { - comp.source=comp.pkg.get_source()/s; + comp.sources.push_back(comp.pkg.get_source()/s); +} + +void Component::Loader::require(const string &n) +{ + comp.requires.push_back(PackageRef(comp.pkg.get_builder(), n)); +} + +void Component::Loader::build_info() +{ + load_sub(comp.build_info); }