Browse Source

* apt-pkg/packagemanager.{cc,h}:

- propergate the Immediate flag to make hitting the 
    "E: Internal Error, Could not perform immediate configuration (2)"
    harder
debian/1.8.y
Michael Vogt 15 years ago
parent
commit
3a6d37fdcf
  1. 53
      apt-pkg/packagemanager.cc
  2. 1
      apt-pkg/packagemanager.h
  3. 4
      debian/changelog

53
apt-pkg/packagemanager.cc

@ -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

1
apt-pkg/packagemanager.h

@ -49,6 +49,7 @@ class pkgPackageManager : protected pkgCache::Namespace
bool Debug;
bool DepAdd(pkgOrderList &Order,PkgIterator P,int Depth = 0);
void ImmediateAdd(PkgIterator P, bool UseInstallVer);
virtual OrderResult OrderInstall();
bool CheckRConflicts(PkgIterator Pkg,DepIterator Dep,const char *Ver);
bool CreateOrderList();

4
debian/changelog

@ -43,6 +43,10 @@ apt (0.7.10) UNRELEASED; urgency=low
* apt-pkg/acquire-item.{cc,h}:
- make the authentication download code more robust against
servers/proxies with broken If-Range implementations
* apt-pkg/packagemanager.{cc,h}:
- propergate the Immediate flag to make hitting the
"E: Internal Error, Could not perform immediate configuration (2)"
harder
[ Chris Cheney ]
* ftparchive/contents.cc:

Loading…
Cancel
Save