Michael Vogt лет назад: 14
Родитель
Сommit
cf4f17a9d8

+ 2 - 9
apt-pkg/packagemanager.cc

@@ -551,14 +551,6 @@ bool pkgPackageManager::SmartUnPack(PkgIterator Pkg, bool const Immediate, int c
       cout << endl;
    }
 
-   // Check if it is already unpacked
-   if (Pkg.State() == pkgCache::PkgIterator::NeedsConfigure &&
-       Cache[Pkg].Keep() == true)
-   {
-      cout << OutputInDepth(Depth) << "SmartUnPack called on Package " << Pkg.Name() << " but its unpacked" << endl;
-      return false;
-   }
- 
    VerIterator const instVer = Cache[Pkg].InstVerIter(Cache);
 
    /* PreUnpack Checks: This loop checks and attempts to rectify and problems that would prevent the package being unpacked.
@@ -768,7 +760,8 @@ bool pkgPackageManager::SmartUnPack(PkgIterator Pkg, bool const Immediate, int c
 	    return false;
       }
    }
-   else if (Install(Pkg,FileNames[Pkg->ID]) == false)
+   // packages which are already unpacked don't need to be unpacked again
+   else if (Pkg.State() != pkgCache::PkgIterator::NeedsConfigure && Install(Pkg,FileNames[Pkg->ID]) == false)
       return false;
 
    if (Immediate == true) {

+ 9 - 0
debian/changelog

@@ -1,3 +1,12 @@
+apt (0.8.16~exp8) experimental; urgency=low
+
+  [ David Kalnischkies ]
+  * apt-pkg/packagemanager.cc:
+    - do not fail on unpacked packages in SmartUnPack, just don't
+      shedule them for unpack, but do all checks and configure them
+
+ -- David Kalnischkies <kalnischkies@gmail.com>  Mon, 17 Oct 2011 11:21:21 +0200
+
 apt (0.8.16~exp7) experimental; urgency=low
 
   [ David Kalnischkies ]

+ 18 - 1
test/integration/test-conflicts-loop

@@ -15,4 +15,21 @@ insertpackage 'unstable' 'openjdk-6-jre-headless' 'i386' '6b20-1.9.8-0ubuntu1~10
 
 setupaptarchive
 
-aptget dist-upgrade -s -o Debug::pkgPackageManager=true -o Debug::pkgDpkgPM=true -o APT::Immediate-Configure-All=true
+testequal 'Reading package lists...
+Building dependency tree...
+The following packages will be upgraded:
+  openjdk-6-jre openjdk-6-jre-headless openjdk-6-jre-lib
+3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+  openjdk-6-jre-lib conflicts with openjdk-6-jre
+    openjdk-6-jre conflicts with openjdk-6-jre-headless
+      openjdk-6-jre-headless conflicts with openjdk-6-jre
+Remv openjdk-6-jre [6b16-1.8-0ubuntu1]
+      openjdk-6-jre-headless conflicts with openjdk-6-jre-lib
+Remv openjdk-6-jre-lib [6b16-1.8-0ubuntu1]
+Inst openjdk-6-jre-headless [6b16-1.8-0ubuntu1] (6b20-1.9.8-0ubuntu1~10.04.1 unstable [i386])
+    openjdk-6-jre conflicts with openjdk-6-jre-lib
+Inst openjdk-6-jre [6b16-1.8-0ubuntu1] (6b20-1.9.8-0ubuntu1~10.04.1 unstable [i386])
+Inst openjdk-6-jre-lib [6b16-1.8-0ubuntu1] (6b20-1.9.8-0ubuntu1~10.04.1 unstable [i386])
+Conf openjdk-6-jre-lib (6b20-1.9.8-0ubuntu1~10.04.1 unstable [i386])
+Conf openjdk-6-jre (6b20-1.9.8-0ubuntu1~10.04.1 unstable [i386])
+Conf openjdk-6-jre-headless (6b20-1.9.8-0ubuntu1~10.04.1 unstable [i386])' aptget dist-upgrade -s -o APT::Immediate-Configure-All=true

+ 7 - 1
test/integration/test-package-reinstallation

@@ -14,4 +14,10 @@ insertinstalledpackage 'apt' 'i386' '0.8.15' 'Depends: libc6'
 
 setupaptarchive
 
-aptget install --reinstall libc6 libc-bin -s -o Debug::pkgPackageManager=1
+testequal 'Reading package lists...
+Building dependency tree...
+0 upgraded, 0 newly installed, 2 reinstalled, 0 to remove and 0 not upgraded.
+Inst libc-bin [2.13-8] (2.13-8 unstable [i386])
+Conf libc-bin (2.13-8 unstable [i386])
+Inst libc6 [2.13-8] (2.13-8 unstable [i386])
+Conf libc6 (2.13-8 unstable [i386])' aptget install --reinstall libc6 libc-bin -s

+ 1 - 21
test/integration/test-provides-gone-with-upgrade

@@ -13,26 +13,6 @@ Replaces: apt (<< 0.8.15)'
 
 setupaptarchive
 
-#testequal 'Reading package lists...
-#Building dependency tree...
-#The following NEW packages will be installed:
-#  libapt-pkg4.10
-#The following packages will be upgraded:
-#  apt
-#1 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
-#Inst libapt-pkg4.10 (0.8.15 unstable [i386]) [libapt-pkg4.10:i386 on apt:i386] []
-#Conf libapt-pkg4.10:i386 broken
-# Breaks:apt:i386
-# []
-#Inst apt [0.8.14] (0.8.15 unstable [i386])
-#Conf apt (0.8.15 unstable [i386])
-#E: Conf Broken libapt-pkg4.10:i386' 
-aptget dist-upgrade -s -o Debug::pkgPackageManager=1
-# the solution by dpkg will be to deconfigure apt with the configuration of libapt-pkg4.10
-
-exit 0
-
-#FIXME: a good result would be this instead, but it requires that APT can delay his immediate configuration…
 testequal 'Reading package lists...
 Building dependency tree...
 The following NEW packages will be installed:
@@ -40,7 +20,7 @@ The following NEW packages will be installed:
 The following packages will be upgraded:
   apt
 1 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst apt [0.8.14] (0.8.15 unstable [i386]) []
 Inst libapt-pkg4.10 (0.8.15 unstable [i386])
 Conf libapt-pkg4.10 (0.8.15 unstable [i386])
-Inst apt [0.8.14] (0.8.15 unstable [i386])
 Conf apt (0.8.15 unstable [i386])' aptget dist-upgrade -s