29 #undef ZYPP_BASE_LOGGER_LOGGROUP
30 #define ZYPP_BASE_LOGGER_LOGGROUP "zypp::GetResolvablesToInsDel"
53 if ( deleteList_r.size() == 0 || instlist_r.size() == 0 )
60 for_( it, obsoleted.poolItemBegin(), obsoleted.poolItemEnd() )
62 DBG <<
"Ignore appl_delete (should be obsoleted): " << *it << endl;
63 deleteList_r.remove( *it );
66 MIL <<
"Undelayed deletes: " << deleteList_r << endl;
85 if (it->status().isToBeInstalled())
88 srclist_r.push_back( *it );
91 instlist_r.push_back( *it );
93 else if (it->status().isToBeUninstalled())
95 if ( it->status().isToBeUninstalledDueToObsolete() )
97 DBG <<
"Ignore auto_delete (should be obsoleted): " << *it << endl;
99 else if ( it->status().isToBeUninstalledDueToUpgrade() )
101 DBG <<
"Ignore auto_delete (should be upgraded): " << *it << endl;
104 dellist_r.push_back( *it );
109 MIL <<
"ResolvablesToInsDel: delete " << dellist_r.size()
110 <<
", install " << instlist_r.size()
111 <<
", srcinstall " << srclist_r.size() << endl;
122 if ( dellist_r.size() ) {
128 PoolItemSet delset( dellist_r.begin(), dellist_r.end() );
136 for ( PoolItemList::const_reverse_iterator cit = dsorted.rbegin();
137 cit != dsorted.rend(); ++cit )
139 dellist_r.push_back( *cit );
148 if ( instlist_r.empty() )
158 instbackup_r.swap( instlist_r );
160 PoolItemSet insset( instbackup_r.begin(), instbackup_r.end() );
161 PoolItemSet installed;
166 MIL <<
"order.init() done" << endl;
173 unsigned best_medianum = 0;
177 unsigned last_medianum = 0;
183 XXX <<
"order.computeNextSet: " << items.size() <<
" resolvables" << endl;
194 for ( PoolItemList::iterator cit = items.begin(); cit != items.end(); ++cit )
200 if ( ! cobj->mediaNr() ) {
201 XXX <<
"No media access required for " << *cit << endl;
203 other_list.push_back( *cit );
207 if ( cobj->satSolvable().repository().id() == last_prio &&
208 cobj->mediaNr() == last_medianum ) {
210 XXX <<
"Stay with current media " << *cit << endl;
211 last_list.push_back( *cit );
215 if ( last_list.empty() ) {
218 if ( ! best_list.empty() ) {
222 if ( cobj->mediaNr() < best_medianum ) {
224 }
else if ( cobj->mediaNr() == best_medianum ) {
225 if ( cobj->satSolvable().repository().id() < best_prio ) {
227 }
else if ( cobj->satSolvable().repository().id() == best_prio ) {
228 XXX <<
"Add to best list " << *cit << endl;
229 best_list.push_back( *cit );
240 if ( cobj->satSolvable().repository().id() < best_prio ) {
242 }
else if ( cobj->satSolvable().repository().id() == best_prio ) {
243 if ( cobj->mediaNr() < best_medianum ) {
245 }
else if ( cobj->mediaNr() == best_medianum ) {
246 XXX <<
"Add to best list " << *cit << endl;
247 best_list.push_back( *cit );
258 if ( best_list.empty() )
260 XXX <<
"NEW BEST LIST [S" << cobj->satSolvable().repository().id() <<
":" << cobj->mediaNr()
261 <<
"] (last [S" << best_prio <<
":" << best_medianum <<
"])" << endl;
262 best_prio = cobj->satSolvable().repository().id();
263 best_medianum = cobj->mediaNr();
265 XXX <<
"Add to best list " << *cit << endl;
266 best_list.push_back( *cit );
277 PoolItemList & take_list( last_list.empty() ? best_list : last_list );
278 if ( last_list.empty() )
280 MIL <<
"SET NEW media [S" << best_prio <<
":" << best_medianum <<
"]" << endl;
281 last_prio = best_prio;
282 last_medianum = best_medianum;
286 XXX <<
"SET CONTINUE [S" << best_prio <<
":" << best_medianum <<
"]" << endl;
289 for ( PoolItemList::iterator it = take_list.begin(); it != take_list.end(); ++it )
292 XXX <<
"SET collect " << (*it) << endl;
295 instlist_r.splice( instlist_r.end(), take_list );
297 instlist_r.splice( instlist_r.end(), other_list );
302 MIL <<
"order done" << endl;
303 if ( instbackup_r.size() != instlist_r.size() )
305 ERR <<
"***************** Lost packages in InstallOrder sort." << endl;
312 SEC <<
"START debugDiffTransaction" << endl;
317 for_( it, clist.begin(), clist.end() )
320 if ( ci == trans.
end() )
321 ERR <<
"Missing to del in NEW trans: " << *it << endl;
326 for_( it, clist.begin(), clist.end() )
329 if ( ci == trans.
end() )
330 ERR <<
"Missing to ins in NEW trans: " << *it << endl;
335 for_( it, clist.begin(), clist.end() )
338 if ( ci == trans.
end() )
339 ERR <<
"Missing srcins in NEW trans: " << *it << endl;
343 SEC <<
"END debugDiffTransaction" << endl;
353 dumpPoolStats( str <<
"toInstall: " << endl,
355 dumpPoolStats( str <<
"toDelete: " << endl,