- (*i)->configure(opts, flag&2);
- if((*i)->get_need_path())
- (*i)->set_path(config.get_option((*i)->get_name()+"_path").value);
+ init_config();
+
+ StringMap::const_iterator prof=opts.find("profile");
+ if(prof!=opts.end() && flag)
+ config.select_profile(prof->second);
+ else
+ config.select_last_profile();
+
+ if(flag && config.update(opts))
+ {
+ if(builder.get_verbose()>=2)
+ cout<<"Configuration of "<<name<<" changed\n";
+ if(!builder.get_dry_run())
+ config.save();
+ }
+
+ config.finish();
+
+ for(ConditionList::iterator i=conditions.begin(); i!=conditions.end(); ++i)
+ if(i->eval())
+ {
+ const PkgRefList &reqs=i->get_requires();
+ requires.insert(requires.end(), reqs.begin(), reqs.end());
+ build_info.add(i->get_build_info());
+ }
+
+ for(PackageList::iterator i=all_reqs.begin(); i!=all_reqs.end(); ++i)
+ {
+ if((*i)->get_need_path())
+ (*i)->set_path(config.get_option((*i)->get_name()+"_path").value);
+ (*i)->configure(opts, flag&2);
+ }
+
+ deps_cache.load();