|
|
@ -118,6 +118,41 @@ bool pkgPackageManager::FixMissing() |
|
|
|
} |
|
|
|
/*}}}*/ |
|
|
|
|
|
|
|
// PM::ImmediateAdd - Add the immediate flag recursivly /*{{{*/
|
|
|
|
// ---------------------------------------------------------------------
|
|
|
|
/* This adds the immediate flag to the pkg and recursively to the
|
|
|
|
dependendies |
|
|
|
*/ |
|
|
|
void pkgPackageManager::ImmediateAdd(PkgIterator I, bool UseInstallVer) |
|
|
|
{ |
|
|
|
DepIterator D; |
|
|
|
|
|
|
|
if(UseInstallVer) |
|
|
|
{ |
|
|
|
if(Cache[I].InstallVer == 0) |
|
|
|
return; |
|
|
|
D = Cache[I].InstVerIter(Cache).DependsList(); |
|
|
|
} else { |
|
|
|
if (I->CurrentVer == 0) |
|
|
|
return; |
|
|
|
D = I.CurrentVer().DependsList(); |
|
|
|
} |
|
|
|
|
|
|
|
for ( /* nothing */ ; D.end() == false; D++) |
|
|
|
if (D->Type == pkgCache::Dep::Depends || D->Type == pkgCache::Dep::PreDepends) |
|
|
|
{ |
|
|
|
if(!List->IsFlag(D.TargetPkg(), pkgOrderList::Immediate)) |
|
|
|
{ |
|
|
|
if(Debug) |
|
|
|
clog << "ImmediateAdd(): Adding Immediate flag to " << I.Name() << endl; |
|
|
|
List->Flag(D.TargetPkg(),pkgOrderList::Immediate); |
|
|
|
ImmediateAdd(D.TargetPkg(), UseInstallVer); |
|
|
|
} |
|
|
|
} |
|
|
|
return; |
|
|
|
} |
|
|
|
/*}}}*/ |
|
|
|
|
|
|
|
// PM::CreateOrderList - Create the ordering class /*{{{*/
|
|
|
|
// ---------------------------------------------------------------------
|
|
|
|
/* This populates the ordering list with all the packages that are
|
|
|
@ -144,21 +179,15 @@ bool pkgPackageManager::CreateOrderList() |
|
|
|
(I->Flags & pkgCache::Flag::Important) == pkgCache::Flag::Important) && |
|
|
|
NoImmConfigure == false) |
|
|
|
{ |
|
|
|
if(Debug) |
|
|
|
clog << "CreateOrderList(): Adding Immediate flag for " << I.Name() << endl; |
|
|
|
List->Flag(I,pkgOrderList::Immediate); |
|
|
|
|
|
|
|
// Look for other packages to make immediate configurea
|
|
|
|
if (Cache[I].InstallVer != 0) |
|
|
|
for (DepIterator D = Cache[I].InstVerIter(Cache).DependsList(); |
|
|
|
D.end() == false; D++) |
|
|
|
if (D->Type == pkgCache::Dep::Depends || D->Type == pkgCache::Dep::PreDepends) |
|
|
|
List->Flag(D.TargetPkg(),pkgOrderList::Immediate); |
|
|
|
|
|
|
|
// Look for other install packages to make immediate configurea
|
|
|
|
ImmediateAdd(I, true); |
|
|
|
|
|
|
|
// And again with the current version.
|
|
|
|
if (I->CurrentVer != 0) |
|
|
|
for (DepIterator D = I.CurrentVer().DependsList(); |
|
|
|
D.end() == false; D++) |
|
|
|
if (D->Type == pkgCache::Dep::Depends || D->Type == pkgCache::Dep::PreDepends) |
|
|
|
List->Flag(D.TargetPkg(),pkgOrderList::Immediate); |
|
|
|
ImmediateAdd(I, false); |
|
|
|
} |
|
|
|
|
|
|
|
// Not interesting
|
|
|
|