summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulian Andres Klode <jak@debian.org>2016-03-27 00:20:05 +0100
committerJulian Andres Klode <jak@debian.org>2016-03-27 01:09:14 +0100
commit6df5632313e9ce77c47ee4bcf6e32a028c4534d0 (patch)
treed6094e1ade53ad048d4a2ead2ffba2235aedd2ce
parenta2025a9a307bf4796e90623b002a7fa80ae814ef (diff)
Do not mark packages for keep that we want to remove
If the package is marked for removal, keep it marked for removal and do not mark it for keep. If we mark it for keep, we some how later get to a different stage where it is marked for unpack instead of removal. In the example in the bug report, we would get a: SmartUnPack maas-region-controller-min:amd64 (replace version 2.0.0~alpha3+bzr4810-0ubuntu1 with Segmentation fault maas-region-controller-min:amd64 was marked for removal, but we changed it to keep and somehow it thinks that this is to be replaced now instead of removed (probably because the InstallVer != CandidateVer [with InstallVer = 0]). This fixes a regression introduced in release 1.2.7, commit: 0390edd5452b081f8efcf412f96d535a1d959457 Reported-by: LaMont Jones on IRC LP: #1562402
-rw-r--r--apt-pkg/depcache.cc7
-rwxr-xr-xtest/integration/test-bug-lp1562402-nomark-removals-as-keep39
2 files changed, 44 insertions, 2 deletions
diff --git a/apt-pkg/depcache.cc b/apt-pkg/depcache.cc
index 4940387a6..b2173d2e4 100644
--- a/apt-pkg/depcache.cc
+++ b/apt-pkg/depcache.cc
@@ -1424,8 +1424,11 @@ bool pkgDepCache::IsInstallOkDependenciesSatisfiableByCandidates(PkgIterator con
{
SetCandidateVersion(Pkg.CurrentVer());
StateCache &State = PkgState[Pkg->ID];
- State.Mode = ModeKeep;
- State.Update(Pkg, *this);
+ if (State.Mode != ModeDelete)
+ {
+ State.Mode = ModeKeep;
+ State.Update(Pkg, *this);
+ }
}
return false;
}
diff --git a/test/integration/test-bug-lp1562402-nomark-removals-as-keep b/test/integration/test-bug-lp1562402-nomark-removals-as-keep
new file mode 100755
index 000000000..05f43701d
--- /dev/null
+++ b/test/integration/test-bug-lp1562402-nomark-removals-as-keep
@@ -0,0 +1,39 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+insertpackage 'unstable' 'maas-common' 'all' '2.0.0~alpha4+bzr4843-0ubuntu1~xenial2'
+insertpackage 'unstable' 'maas-region-controller-min' 'amd64' '2.0.0~alpha4+bzr4837-0ubuntu1~xenial1' 'Depends: maas-common (= 2.0.0~alpha4+bzr4837-0ubuntu1~xenial1)'
+insertpackage 'unstable' 'maas-region-api' 'amd64' '2.0.0~alpha4+bzr4843-0ubuntu1~xenial2' 'Depends: maas-common (= 2.0.0~alpha4+bzr4843-0ubuntu1~xenial2)\nConflicts: maas-region-controller-min\nProvides: maas-region-controller-min'
+insertpackage 'unstable' 'maas-region-controller' 'all' '2.0.0~alpha4+bzr4843-0ubuntu1~xenial2' 'Depends: maas-region-api (= 2.0.0~alpha4+bzr4843-0ubuntu1~xenial2)'
+
+insertinstalledpackage 'maas-common' 'all' '2.0.0~alpha3+bzr4810-0ubuntu1'
+insertinstalledpackage 'maas-region-controller-min' 'amd64' '2.0.0~alpha3+bzr4810-0ubuntu1' 'Depends: maas-common (= 2.0.0~alpha3+bzr4810-0ubuntu1)'
+insertinstalledpackage 'maas-region-controller' 'all' '2.0.0~alpha3+bzr4810-0ubuntu1' 'Depends: maas-region-controller-min (= 2.0.0~alpha3+bzr4810-0ubuntu1)'
+
+setupaptarchive
+
+testsuccess aptget dist-upgrade -s -o Debug::pkgDepCache::AutoInstall=true -o Debug::pkgPackageManager=yes -o Debug::pkgProblemResolver=yes
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be REMOVED:
+ maas-region-controller-min
+The following NEW packages will be installed:
+ maas-region-api
+The following packages will be upgraded:
+ maas-common maas-region-controller
+2 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Inst maas-region-controller [2.0.0~alpha3+bzr4810-0ubuntu1] (2.0.0~alpha4+bzr4843-0ubuntu1~xenial2 unstable [all]) []
+Remv maas-region-controller-min [2.0.0~alpha3+bzr4810-0ubuntu1] []
+Inst maas-common [2.0.0~alpha3+bzr4810-0ubuntu1] (2.0.0~alpha4+bzr4843-0ubuntu1~xenial2 unstable [all]) []
+Inst maas-region-api (2.0.0~alpha4+bzr4843-0ubuntu1~xenial2 unstable [amd64])
+Conf maas-common (2.0.0~alpha4+bzr4843-0ubuntu1~xenial2 unstable [all])
+Conf maas-region-api (2.0.0~alpha4+bzr4843-0ubuntu1~xenial2 unstable [amd64])
+Conf maas-region-controller (2.0.0~alpha4+bzr4843-0ubuntu1~xenial2 unstable [all])' \
+aptget dist-upgrade -s