summaryrefslogtreecommitdiff
path: root/apt-pkg/packagemanager.cc
diff options
context:
space:
mode:
authorArch Librarian <arch@canonical.com>2004-09-20 16:51:37 +0000
committerArch Librarian <arch@canonical.com>2004-09-20 16:51:37 +0000
commitd38b7b3d803a719b189df80820aeda6a818f4909 (patch)
tree28143d1b948d8b31fc8bec91b50d2fdfe6ff3341 /apt-pkg/packagemanager.cc
parentc217f42adc1a82c7400e85178f61bf429fea1bc4 (diff)
Needs Unpack fixes
Author: jgg Date: 1998-11-23 07:02:58 GMT Needs Unpack fixes
Diffstat (limited to 'apt-pkg/packagemanager.cc')
-rw-r--r--apt-pkg/packagemanager.cc12
1 files changed, 10 insertions, 2 deletions
diff --git a/apt-pkg/packagemanager.cc b/apt-pkg/packagemanager.cc
index 7dd6b8a27..04b77eb09 100644
--- a/apt-pkg/packagemanager.cc
+++ b/apt-pkg/packagemanager.cc
@@ -1,6 +1,6 @@
// -*- mode: cpp; mode: fold -*-
// Description /*{{{*/
-// $Id: packagemanager.cc,v 1.7 1998/11/22 23:37:05 jgg Exp $
+// $Id: packagemanager.cc,v 1.8 1998/11/23 07:03:01 jgg Exp $
/* ######################################################################
Package Manager - Abstacts the package manager
@@ -64,6 +64,10 @@ bool pkgPackageManager::GetArchives(pkgAcquire *Owner,pkgSourceList *Sources,
// Skip packages to erase
if (Cache[Pkg].Delete() == true)
continue;
+
+ // Skip Packages that need configure only.
+ if (Pkg.State() == pkgCache::PkgIterator::NeedsConfigure)
+ continue;
new pkgAcqArchive(Owner,Sources,Recs,Cache[Pkg].InstVerIter(Cache),
FileNames[Pkg->ID]);
@@ -106,15 +110,19 @@ bool pkgPackageManager::CreateOrderList()
// Generate the list of affected packages and sort it
for (PkgIterator I = Cache.PkgBegin(); I.end() == false; I++)
{
- // Consider all depends
+ // Mark the package for immediate configuration
if ((I->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential)
{
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);
+
+ // And again with the current version.
if (I->CurrentVer != 0)
for (DepIterator D = I.CurrentVer().DependsList();
D.end() == false; D++)