55 #define ITEMNAME(item) (item)->name()
60 , _toinstall( toinstall )
61 , _installed( installed )
65 _DEBUG(
"InstallOrder::InstallOrder(_toinstall " <<
_toinstall.size() <<
" items, _installed " <<
_installed.size() <<
" items)");
75 os <<
"digraph pkgdeps {" << endl;
76 for (Graph::const_iterator gcit = g.begin(); gcit != g.end(); ++gcit)
78 Nodes::const_iterator niit =
_nodes.find(gcit->first);
79 int order = niit->second.order;
80 string name = gcit->first->name();
81 os <<
"\"" << name <<
"\"" <<
"[label=\"" << name <<
"\\n" << order <<
"\"";
83 for (PoolItemList::const_iterator scit = gcit->second.begin(); scit != gcit->second.end(); ++scit)
85 os <<
"\"" << name <<
"\" -> \"" << (*scit)->name() <<
"\"" << endl;
102 for (Nodes::iterator it =
_nodes.begin(); it !=
_nodes.end(); ++it)
104 if (it->second.order == 0
107 XXX <<
"InstallOrder::computeNextSet found " <<
ITEMNAME(it->second.item) << endl;
109 newlist.push_back(it->second.item);
125 XXX <<
"InstallOrder::setInstalled " <<
ITEMNAME(item) << endl;
132 for (PoolItemList::iterator it = adj.begin(); it != adj.end(); ++it)
138 WAR <<
"order of node " << (*it) <<
" is < 0" << endl;
147 for (PoolItemList::const_iterator it = rl.begin(); it != rl.end(); ++it)
171 for( PoolItemSet::const_iterator citer = candidates.begin(); citer != candidates.end(); citer++) {
186 typedef list<Capability>
CapList;
189 XXX <<
"InstallOrder::rdfsvisit, visiting " <<
ITEMNAME(item) << endl;
201 for_( it, sel->installedBegin(), sel->installedEnd() )
204 prq.insert( p.begin(), p.end() );
211 prq.insert( p.begin(), p.end() );
215 for (CapabilitySet::const_iterator it = prq.begin(); it != prq.end(); ++it)
217 requires.push_back(*it);
226 requires.push_back(*it);
230 for (CapList::const_iterator iter = requires.begin(); iter != requires.end(); ++iter)
236 XXX <<
"check requirement " << requirement <<
" of " <<
ITEMNAME(item) << endl;
242 for_( iter, possibleProviders.
begin(), possibleProviders.
end() ) {
244 if ( provider == item )
252 providers.push_back (provider);
261 if (providers.empty()) {
262 for_( iter, possibleProviders.
begin(), possibleProviders.
end() ) {
268 tovisit.push_back (provider);
273 for (PoolItemList::iterator it = tovisit.begin(); it != tovisit.end(); ++it)
276 if (
_nodes[must_visit].visited ==
false)
279 _rgraph[must_visit].push_back( item );
280 _graph[item].push_back( must_visit );
283 else if (
_nodes[must_visit].endtime == 0)
285 if (must_visit != item)
291 if (
_logset.insert( lstr ).second )
293 WAR <<
"** dependency loop: " << lstr << endl;
301 if( find( lrg.begin(), lrg.end(), item) == lrg.end() )
304 lrg.push_back( item );
307 if( find( lg.begin(), lg.end(), must_visit ) == lg.end() )
308 lg.push_back( must_visit );
348 if (
_nodes[item].visited ==
false)
350 XXX <<
"start recursion on " <<
ITEMNAME(item) << endl;