diff options
author | David Kalnischkies <kalnischkies@gmail.com> | 2012-05-19 23:07:30 +0200 |
---|---|---|
committer | David Kalnischkies <kalnischkies@gmail.com> | 2012-05-19 23:07:30 +0200 |
commit | 177645edb5775337ccf6d3971835a122b12318d4 (patch) | |
tree | 4f5ccb632e2627f7d45fa9b5d3d6c0dc1cf7d1ec | |
parent | 2d49cf5eeb041ebb115ed2bdec4840f0523071ee (diff) |
* apt-pkg/packagemanager.cc:
- do not run into loop on new-pre-depends-breaks (Closes: #673536)
-rw-r--r-- | apt-pkg/packagemanager.cc | 2 | ||||
-rw-r--r-- | debian/changelog | 2 | ||||
-rwxr-xr-x | test/integration/test-673536-pre-depends-breaks-loop | 23 |
3 files changed, 26 insertions, 1 deletions
diff --git a/apt-pkg/packagemanager.cc b/apt-pkg/packagemanager.cc index 06151a165..46fc499c6 100644 --- a/apt-pkg/packagemanager.cc +++ b/apt-pkg/packagemanager.cc @@ -785,7 +785,7 @@ bool pkgPackageManager::SmartUnPack(PkgIterator Pkg, bool const Immediate, int c VerIterator V(Cache,*I); PkgIterator P = V.ParentPkg(); // we are checking for installation as an easy 'protection' against or-groups and (unchosen) providers - if (P->CurrentVer == 0 || P != Pkg || (P.CurrentVer() != V && Cache[P].InstallVer != V)) + if (P != Pkg || (P.CurrentVer() != V && Cache[P].InstallVer != V)) continue; circle = true; break; diff --git a/debian/changelog b/debian/changelog index d419f9986..196b94c8e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -33,6 +33,8 @@ apt (0.9.4) UNRELEASED; urgency=low to get the correct section titles provided by docbook * doc/po/de.po: - updated german manpage translation by Chris Leick, thanks! + * apt-pkg/packagemanager.cc: + - do not run into loop on new-pre-depends-breaks (Closes: #673536) [ Raphael Geissert ] * apt-pkg/acquire*.cc: diff --git a/test/integration/test-673536-pre-depends-breaks-loop b/test/integration/test-673536-pre-depends-breaks-loop new file mode 100755 index 000000000..e9d3c4de6 --- /dev/null +++ b/test/integration/test-673536-pre-depends-breaks-loop @@ -0,0 +1,23 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture 'native' + +buildsimplenativepackage 'basic' 'native' '1' 'stable' +buildsimplenativepackage 'basic' 'native' '2' 'unstable' 'Pre-Depends: common' +buildsimplenativepackage 'common' 'native' '2' 'unstable' 'Breaks: basic (<= 1)' + +setupaptarchive + +# we check with 'real' packages here as the simulation reports a 'Conf broken' +# which is technical correct for the simulation, but testing errormsg is ugly + +aptget install basic=1 -qq > /dev/null +testdpkginstalled basic +testdpkgnotinstalled common + +aptget dist-upgrade -qq > /dev/null +testdpkginstalled basic common |