From 5cf733e18af40fbed978ec84e60ccd0ffc1871d8 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Thu, 3 Feb 2011 22:48:37 +0100 Subject: remove duplicated config-option setting and rename testdpkgnotinstalled --- test/integration/framework | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'test/integration/framework') diff --git a/test/integration/framework b/test/integration/framework index fe1db14bc..e79d312ca 100644 --- a/test/integration/framework +++ b/test/integration/framework @@ -137,7 +137,6 @@ setupenvironment() { echo "APT::Get::Show-User-Simulation-Note \"false\";" >> aptconfig.conf echo "Dir::Bin::Methods \"${BUILDDIRECTORY}/methods\";" >> aptconfig.conf echo "Dir::Bin::dpkg \"fakeroot\";" >> aptconfig.conf - echo "Dir::Bin::methods \"${BUILDDIRECTORY}/methods\";" >> aptconfig.conf echo "DPKG::options:: \"dpkg\";" >> aptconfig.conf echo "DPKG::options:: \"--root=${TMPWORKINGDIRECTORY}/rootdir\";" >> aptconfig.conf echo "DPKG::options:: \"--force-not-root\";" >> aptconfig.conf @@ -634,9 +633,9 @@ testdpkginstalled() { msgpass } -testdpkgnoninstalled() { - msgtest "Test for correctly non-installed package(s) with" "dpkg -l $*" - local PKGS="$(dpkg -l $* | grep '^[a-z]' | grep '^[^u]' | wc -l)" +testdpkgnotinstalled() { + msgtest "Test for correctly not-installed package(s) with" "dpkg -l $*" + local PKGS="$(dpkg -l $* 2> /dev/null | grep '^[a-z]' | grep '^[^u]' | wc -l)" if [ "$PKGS" != 0 ]; then echo dpkg -l $* | grep '^[a-z]' -- cgit v1.2.3-70-g09d2 From 87bc1c45de94da47587d8e0314e9087f33a2b89e Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Thu, 3 Feb 2011 23:25:41 +0100 Subject: check that the right amount of packages is installed if multiple passed in --- test/integration/framework | 6 +++--- test/integration/test-autoremove | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'test/integration/framework') diff --git a/test/integration/framework b/test/integration/framework index e79d312ca..3aa80db23 100644 --- a/test/integration/framework +++ b/test/integration/framework @@ -623,8 +623,8 @@ testnopackage() { testdpkginstalled() { msgtest "Test for correctly installed package(s) with" "dpkg -l $*" - local PKGS="$(dpkg -l $* | grep '^[a-z]' | grep '^[^i]' | wc -l)" - if [ "$PKGS" != 0 ]; then + local PKGS="$(dpkg -l $* | grep '^i' | wc -l)" + if [ "$PKGS" != $# ]; then echo $PKGS dpkg -l $* | grep '^[a-z]' msgfail @@ -635,7 +635,7 @@ testdpkginstalled() { testdpkgnotinstalled() { msgtest "Test for correctly not-installed package(s) with" "dpkg -l $*" - local PKGS="$(dpkg -l $* 2> /dev/null | grep '^[a-z]' | grep '^[^u]' | wc -l)" + local PKGS="$(dpkg -l $* 2> /dev/null | grep '^i' | wc -l)" if [ "$PKGS" != 0 ]; then echo dpkg -l $* | grep '^[a-z]' diff --git a/test/integration/test-autoremove b/test/integration/test-autoremove index f1ce4e9e7..9dfab19f5 100755 --- a/test/integration/test-autoremove +++ b/test/integration/test-autoremove @@ -20,7 +20,7 @@ Auto-Installed: 1 ' aptget remove debhelper -y -qq 2>&1 > /dev/null testdpkgnotinstalled 'debhelper' -testdpkginstalled 'po-debconf unrelated' +testdpkginstalled 'po-debconf' 'unrelated' echo 'APT::NeverAutoRemove { "^debc.*nf$"; };' > rootdir/etc/apt/apt.conf.d/00autoremove testequal 'Reading package lists... -- cgit v1.2.3-70-g09d2 From 6a910c9db4d450241a57f61b2d3d3e302bb9c11c Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Mon, 7 Feb 2011 11:32:55 +0100 Subject: allow conflicts in the same group again (Closes: #612099) --- apt-pkg/depcache.cc | 2 +- debian/changelog | 3 +- test/integration/framework | 2 +- .../test-bug-612099-multiarch-conflicts | 209 +++++++++++++++++++++ 4 files changed, 213 insertions(+), 3 deletions(-) create mode 100755 test/integration/test-bug-612099-multiarch-conflicts (limited to 'test/integration/framework') diff --git a/apt-pkg/depcache.cc b/apt-pkg/depcache.cc index 5f59b6d49..7c09d3a38 100644 --- a/apt-pkg/depcache.cc +++ b/apt-pkg/depcache.cc @@ -339,7 +339,7 @@ bool pkgDepCache::CheckDep(DepIterator Dep,int Type,PkgIterator &Res) /* Check simple depends. A depends -should- never self match but we allow it anyhow because dpkg does. Technically it is a packaging bug. Conflicts may never self match */ - if (Dep.TargetPkg()->Group != Dep.ParentPkg()->Group || + if (Dep.TargetPkg() != Dep.ParentPkg() || (Dep->Type != Dep::Conflicts && Dep->Type != Dep::DpkgBreaks && Dep->Type != Dep::Obsoletes)) { PkgIterator Pkg = Dep.TargetPkg(); diff --git a/debian/changelog b/debian/changelog index 29d310871..7fb6557e9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -5,6 +5,7 @@ apt (0.8.11) UNRELEASED; urgency=low - add SetCandidateRelease() to set a candidate version and the candidates of dependencies if needed to a specified release (Closes: #572709) + - allow conflicts in the same group again (Closes: #612099) * cmdline/apt-get.cc: - if --print-uris is used don't setup downloader as we don't need progress, lock nor the directories it would create otherwise @@ -95,7 +96,7 @@ apt (0.8.11) UNRELEASED; urgency=low will actually test uncompressed indexes regardless of the internal default value of Acquire::GzipIndexes. - -- David Kalnischkies Mon, 07 Feb 2011 11:21:12 +0100 + -- David Kalnischkies Mon, 07 Feb 2011 11:26:03 +0100 apt (0.8.10.3) unstable; urgency=low diff --git a/test/integration/framework b/test/integration/framework index 3aa80db23..d91599f1b 100644 --- a/test/integration/framework +++ b/test/integration/framework @@ -267,7 +267,7 @@ Package: $NAME" > ${BUILDDIR}/debian/control (cd ${BUILDDIR}; dpkg-gencontrol -DArchitecture=$ARCH) (cd ${BUILDDIR}/debian/tmp; md5sum $(find usr/ -type f) > DEBIAN/md5sums) - dpkg-deb --build ${BUILDDIR}/debian/tmp ${BUILDDIR}/.. > /dev/null + dpkg-deb --build ${BUILDDIR}/debian/tmp ${BUILDDIR}/.. 2> /dev/null > /dev/null echo "pool/${NAME}_${VERSION}_${ARCH}.deb" >> ${BUILDDIR}/../${RELEASE}.${DISTSECTION}.pkglist for SRC in $SRCS; do echo "pool/${SRC}" >> ${BUILDDIR}/../${RELEASE}.${DISTSECTION}.srclist diff --git a/test/integration/test-bug-612099-multiarch-conflicts b/test/integration/test-bug-612099-multiarch-conflicts new file mode 100755 index 000000000..caac75db4 --- /dev/null +++ b/test/integration/test-bug-612099-multiarch-conflicts @@ -0,0 +1,209 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture "i386" "amd64" + +buildsimplenativepackage 'peace-dpkg' 'all' '1.0' 'stable' + +buildsimplenativepackage 'libc6' 'i386' '1.0' 'stable' +buildsimplenativepackage 'libc6' 'amd64' '1.0' 'stable' +buildsimplenativepackage 'libc6' 'all' '2.0' 'testing' + +buildsimplenativepackage 'foobar' 'i386' '1.0' 'stable' 'Depends: libc6' +buildsimplenativepackage 'foobar' 'amd64' '1.0' 'stable' 'Depends: libc6' + +setupaptarchive + +aptget install peace-dpkg:i386 -y -qq 2>&1 > /dev/null +testdpkginstalled peace-dpkg + +aptget install libc6:i386 -t stable -y -qq 2>&1 > /dev/null +testdpkginstalled libc6 +testequal 'Reading package lists... +Building dependency tree... +Reading state information... +The following packages will be REMOVED: + libc6 +The following NEW packages will be installed: + libc6:amd64 +0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded. +Remv libc6 [1.0] +Inst libc6:amd64 (1.0 stable [amd64]) +Conf libc6:amd64 (1.0 stable [amd64])' aptget install libc6:amd64 -s -t stable + +testequal 'Reading package lists... +Building dependency tree... +Reading state information... +The following NEW packages will be installed: + foobar +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Inst foobar (1.0 stable [i386]) +Conf foobar (1.0 stable [i386])' aptget install foobar -st stable + +testequal 'Reading package lists... +Building dependency tree... +Reading state information... +The following extra packages will be installed: + libc6:amd64 +The following packages will be REMOVED: + libc6 +The following NEW packages will be installed: + foobar:amd64 libc6:amd64 +0 upgraded, 2 newly installed, 1 to remove and 0 not upgraded. +Remv libc6 [1.0] +Inst libc6:amd64 (1.0 stable [amd64]) +Inst foobar:amd64 (1.0 stable [amd64]) +Conf libc6:amd64 (1.0 stable [amd64]) +Conf foobar:amd64 (1.0 stable [amd64])' aptget install foobar:amd64 -st stable + +# FIXME: libc6:i386 is installed, we are switching to libc6:all +testequal 'Reading package lists... +Building dependency tree... +Reading state information... +The following extra packages will be installed: + libc6 +The following NEW packages will be installed: + foobar libc6 +0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. +Inst libc6 (2.0 testing, testing [all]) +Inst foobar (1.0 stable [i386]) +Conf libc6 (2.0 testing, testing [all]) +Conf foobar (1.0 stable [i386])' aptget install foobar/stable libc6 -st testing + +# FIXME: libc6:i386 is installed, we are switching to libc6:all +testequal 'Reading package lists... +Building dependency tree... +Reading state information... +The following NEW packages will be installed: + libc6 +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Inst libc6 (2.0 testing, testing [all]) +Conf libc6 (2.0 testing, testing [all])' aptget upgrade -t testing -s +aptget upgrade -y -qq 2>&1 > /dev/null +testdpkginstalled libc6 + +testequal 'Reading package lists... +Building dependency tree... +Reading state information... +The following NEW packages will be installed: + foobar +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Inst foobar (1.0 stable [i386]) [] +Conf foobar (1.0 stable [i386])' aptget install foobar/stable -st testing + +testequal 'Reading package lists... +Building dependency tree... +Reading state information... +The following NEW packages will be installed: + foobar:amd64 +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Inst foobar:amd64 (1.0 stable [amd64]) +Conf foobar:amd64 (1.0 stable [amd64])' aptget install foobar:amd64/stable -st testing + + +# FIXME: the display is a strange (its a downgrade), but the handling itself correct +testequal "Reading package lists... +Building dependency tree... +Reading state information... +Selected version '1.0' (stable [i386]) for 'libc6' +The following packages will be REMOVED: + libc6 +The following NEW packages will be installed: + libc6 +0 upgraded, 1 newly installed, 2 to remove and 0 not upgraded. +Remv libc6 [2.0] +Inst libc6 (1.0 stable [i386]) +Conf libc6 (1.0 stable [i386])" aptget install libc6/stable -s -q=0 + + +buildsimplenativepackage 'libc6-same' 'i386' '1.0' 'stable' 'Multi-Arch: same' +buildsimplenativepackage 'libc6-same' 'amd64' '1.0' 'stable' 'Multi-Arch: same' +buildsimplenativepackage 'libc6-same' 'all' '2.0' 'testing' + +buildsimplenativepackage 'foobar-same' 'i386' '1.0' 'stable' 'Depends: libc6-same' +buildsimplenativepackage 'foobar-same' 'amd64' '1.0' 'stable' 'Depends: libc6-same' + +setupaptarchive + +aptget install libc6-same:i386 -t stable -y -qq 2>&1 > /dev/null +testdpkginstalled libc6-same + +testequal 'Reading package lists... +Building dependency tree... +Reading state information... +The following NEW packages will be installed: + foobar-same +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Inst foobar-same (1.0 stable [i386]) +Conf foobar-same (1.0 stable [i386])' aptget install foobar-same -st stable + +testequal 'Reading package lists... +Building dependency tree... +Reading state information... +The following extra packages will be installed: + libc6-same:amd64 +The following NEW packages will be installed: + foobar-same:amd64 libc6-same:amd64 +0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. +Inst libc6-same:amd64 (1.0 stable [amd64]) +Inst foobar-same:amd64 (1.0 stable [amd64]) +Conf libc6-same:amd64 (1.0 stable [amd64]) +Conf foobar-same:amd64 (1.0 stable [amd64])' aptget install foobar-same:amd64 -st stable + +testequal 'Reading package lists... +Building dependency tree... +Reading state information... +The following NEW packages will be installed: + libc6-same:amd64 +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Inst libc6-same:amd64 (1.0 stable [amd64]) +Conf libc6-same:amd64 (1.0 stable [amd64])' aptget install libc6-same:amd64 -s -t stable + +# FIXME: We should test installing libc6-same:amd64 here, but dpkg doesn't allow it currently + +# FIXME: upgrade any to all as above +testequal 'Reading package lists... +Building dependency tree... +Reading state information... +The following NEW packages will be installed: + libc6-same +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Inst libc6-same (2.0 testing, testing [all]) +Conf libc6-same (2.0 testing, testing [all])' aptget upgrade -t testing -s +aptget upgrade -y -qq 2>&1 > /dev/null +testdpkginstalled libc6-same + +# FIXME: the display is a strange (its a downgrade), but the handling itself correct +testequal "Reading package lists... +Building dependency tree... +Reading state information... +Selected version '1.0' (stable [i386]) for 'libc6-same' +The following packages will be REMOVED: + libc6-same +The following NEW packages will be installed: + libc6-same +0 upgraded, 1 newly installed, 2 to remove and 0 not upgraded. +Remv libc6-same [2.0] +Inst libc6-same (1.0 stable [i386]) +Conf libc6-same (1.0 stable [i386])" aptget install libc6-same/stable -s -q=0 + +testequal 'Reading package lists... +Building dependency tree... +Reading state information... +The following NEW packages will be installed: + foobar-same +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Inst foobar-same (1.0 stable [i386]) [] +Conf foobar-same (1.0 stable [i386])' aptget install foobar-same/stable -st testing + +testequal 'Reading package lists... +Building dependency tree... +Reading state information... +The following NEW packages will be installed: + foobar-same:amd64 +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Inst foobar-same:amd64 (1.0 stable [amd64]) +Conf foobar-same:amd64 (1.0 stable [amd64])' aptget install foobar-same:amd64/stable -st testing -- cgit v1.2.3-70-g09d2 From 1384504286b7923a85d6235ba6f8e2eb4766d967 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Mon, 7 Feb 2011 14:38:01 +0100 Subject: test changelogs locally instead of depending on an online service --- test/integration/framework | 3 +++ test/integration/test-changelog | 34 +++++++++++++--------------------- 2 files changed, 16 insertions(+), 21 deletions(-) (limited to 'test/integration/framework') diff --git a/test/integration/framework b/test/integration/framework index d91599f1b..e10709079 100644 --- a/test/integration/framework +++ b/test/integration/framework @@ -272,6 +272,9 @@ Package: $NAME" > ${BUILDDIR}/debian/control for SRC in $SRCS; do echo "pool/${SRC}" >> ${BUILDDIR}/../${RELEASE}.${DISTSECTION}.srclist done + mkdir -p ${BUILDDIR}/../${NAME}_${VERSION} + cp ${BUILDDIR}/debian/changelog ${BUILDDIR}/../${NAME}_${VERSION}/ + cp ${BUILDDIR}/debian/changelog ${BUILDDIR}/../${NAME}_${VERSION}.changelog rm -rf "${BUILDDIR}" msgdone "info" } diff --git a/test/integration/test-changelog b/test/integration/test-changelog index 292df6e32..f05279356 100755 --- a/test/integration/test-changelog +++ b/test/integration/test-changelog @@ -7,28 +7,20 @@ TESTDIR=$(readlink -f $(dirname $0)) setupenvironment configarchitecture "i386" -# this will be valid until ubuntu lucid is EOL (04/2015) -pkgchangelogtest="Package: apt -Architecture: i386 -Version: 0.7.25.3ubuntu7 -Filename: pool/main/a/apt/apt_0.7.25.3ubuntu7_i386.deb -Section: admin -" -cat <<-EOF >aptarchive/Packages -$pkgchangelogtest -EOF +buildsimplenativepackage 'apt' 'all' '1.0' 'stable' setupaptarchive +changetowebserver +aptget update -qq -echo "Apt::Changelogs::Server \"http://changelogs.ubuntu.com/\";" >> ./aptconfig.conf -msgnmsg "apt-get changelog: " -aptget changelog apt -qq > downloaded-changelog -expected="apt (0.7.25.3ubuntu7) lucid; urgency=low" -got="$(head -n1 downloaded-changelog)" -if [ -s downloaded-changelog ] && [ "$got" = "$expected" ]; then - msgpass -else - msgfail - msgwarn "$got != $expected" -fi +echo 'Apt::Changelogs::Server "http://localhost:8080/";' >> ./aptconfig.conf +aptget changelog apt -qq > apt.changelog +testfileequal 'apt.changelog' "$(cat aptarchive/pool/apt_1.0/changelog)" +rm aptarchive/pool/apt_1.0/changelog + +aptget changelog apt -qq -o APT::Changelogs::Server='http://not-on-the-main-server:8080/' > apt.changelog +testfileequal 'apt.changelog' "$(cat aptarchive/pool/apt_1.0.changelog)" +rm aptarchive/pool/apt_1.0.changelog + +testequal 'E: changelog download failed' aptget changelog apt -qq -o APT::Changelogs::Server='http://not-on-the-main-server:8080/' -- cgit v1.2.3-70-g09d2 From ec7f904e7ea1b0b8aaefbbb202ced9e19292dd76 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Thu, 10 Feb 2011 18:10:14 +0100 Subject: use apt-mark instead of hand-mangling with the extended_states file --- test/integration/framework | 14 +++++++ test/integration/test-apt-get-autoremove | 8 +--- .../integration/test-bug-604222-new-and-autoremove | 6 +-- test/integration/test-bug-611729-mark-as-manual | 47 ++++++---------------- test/integration/test-disappearing-packages | 4 +- 5 files changed, 34 insertions(+), 45 deletions(-) (limited to 'test/integration/framework') diff --git a/test/integration/framework b/test/integration/framework index e10709079..11d9a9659 100644 --- a/test/integration/framework +++ b/test/integration/framework @@ -79,6 +79,7 @@ aptcache() { runapt apt-cache $*; } aptget() { runapt apt-get $*; } aptftparchive() { runapt apt-ftparchive $*; } aptkey() { runapt apt-key $*; } +aptmark() { runapt apt-mark $*; } dpkg() { $(which dpkg) --root=${TMPWORKINGDIRECTORY}/rootdir --force-not-root --force-bad-path --log=${TMPWORKINGDIRECTORY}/rootdir/var/log/dpkg.log $* } @@ -647,3 +648,16 @@ testdpkgnotinstalled() { fi msgpass } + +testmarkedauto() { + local COMPAREFILE=$(mktemp) + addtrap "rm $COMPAREFILE;" + if [ -n "$1" ]; then + msgtest 'Test for correctly marked as auto-installed' "$*" + while [ -n "$1" ]; do echo "$1"; shift; done | sort > $COMPAREFILE + else + msgtest 'Test for correctly marked as auto-installed' 'no package' + echo > $COMPAREFILE + fi + aptmark showauto 2>&1 | checkdiff $COMPAREFILE - && msgpass || msgfail +} diff --git a/test/integration/test-apt-get-autoremove b/test/integration/test-apt-get-autoremove index 9dfab19f5..c25ce3f58 100755 --- a/test/integration/test-apt-get-autoremove +++ b/test/integration/test-apt-get-autoremove @@ -14,10 +14,7 @@ setupaptarchive aptget install unrelated debhelper -qq 2>&1 > /dev/null testdpkginstalled 'unrelated' 'debhelper' 'po-debconf' -testfileequal 'rootdir/var/lib/apt/extended_states' 'Package: po-debconf -Architecture: i386 -Auto-Installed: 1 -' +testmarkedauto 'po-debconf' aptget remove debhelper -y -qq 2>&1 > /dev/null testdpkgnotinstalled 'debhelper' testdpkginstalled 'po-debconf' 'unrelated' @@ -43,8 +40,7 @@ testdpkginstalled "po-debconf" rm rootdir/etc/apt/apt.conf.d/00autoremove aptget autoremove -y -qq 2>&1 > /dev/null testdpkgnotinstalled 'po-debconf' - -testfileequal 'rootdir/var/lib/apt/extended_states' '' +testmarkedauto sed -i rootdir/var/log/apt/history.log -e '/^Commandline: / d' -e '/^Start-Date: / d' -e '/^End-Date: / d' testfileequal 'rootdir/var/log/apt/history.log' ' diff --git a/test/integration/test-bug-604222-new-and-autoremove b/test/integration/test-bug-604222-new-and-autoremove index fa6dcdc70..9187dd1cd 100755 --- a/test/integration/test-bug-604222-new-and-autoremove +++ b/test/integration/test-bug-604222-new-and-autoremove @@ -7,9 +7,9 @@ setupenvironment configarchitecture "i386" setupaptarchive -echo 'Package: libvtk5.4 -Auto-Installed: 1 -Architecture: i386' > rootdir/var/lib/apt/extended_states +touch rootdir/var/lib/apt/extended_states +aptmark markauto 'libvtk5.4' +testmarkedauto 'libvtk5.4' testequal "Reading package lists... Building dependency tree... diff --git a/test/integration/test-bug-611729-mark-as-manual b/test/integration/test-bug-611729-mark-as-manual index 9c1cd3d1b..4e3e2fa0b 100755 --- a/test/integration/test-bug-611729-mark-as-manual +++ b/test/integration/test-bug-611729-mark-as-manual @@ -17,59 +17,41 @@ setupaptarchive # dpkg freaks out if the last package is removed so keep one around aptget install peace-dpkg -y -qq 2>&1 > /dev/null testdpkginstalled peace-dpkg -testfileequal 'rootdir/var/lib/apt/extended_states' '' +testmarkedauto aptget install a -y -qq 2>&1 > /dev/null testdpkginstalled a b testdpkgnotinstalled c -testfileequal 'rootdir/var/lib/apt/extended_states' 'Package: b -Architecture: i386 -Auto-Installed: 1 -' +testmarkedauto 'b' aptget remove a -y -qq 2>&1 > /dev/null testdpkgnotinstalled a c testdpkginstalled b -testfileequal 'rootdir/var/lib/apt/extended_states' 'Package: b -Architecture: i386 -Auto-Installed: 1 -' +testmarkedauto 'b' aptget install c -y -qq 2>&1 > /dev/null testdpkgnotinstalled a testdpkginstalled b c -testfileequal 'rootdir/var/lib/apt/extended_states' 'Package: b -Architecture: i386 -Auto-Installed: 1 -' +testmarkedauto 'b' testequal 'Reading package lists... Building dependency tree... Reading state information... b is already the newest version. 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget install b --only-upgrade -testfileequal 'rootdir/var/lib/apt/extended_states' 'Package: b -Architecture: i386 -Auto-Installed: 1 -' +testmarkedauto 'b' testequal 'Reading package lists... Building dependency tree... Reading state information... b is already the newest version. 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget install b -d -testfileequal 'rootdir/var/lib/apt/extended_states' 'Package: b -Architecture: i386 -Auto-Installed: 1 -' +testmarkedauto 'b' aptget install b --reinstall -y -qq 2>&1 > /dev/null testdpkgnotinstalled a testdpkginstalled b c -testfileequal 'rootdir/var/lib/apt/extended_states' 'Package: b -Architecture: i386 -Auto-Installed: 1 -' +testmarkedauto 'b' testequal 'Reading package lists... Building dependency tree... @@ -77,29 +59,26 @@ Reading state information... b is already the newest version. b set to manually installed. 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget install b -testfileequal 'rootdir/var/lib/apt/extended_states' 'Package: b -Architecture: i386 -Auto-Installed: 0 -' +testmarkedauto aptget remove b -y -qq 2>&1 > /dev/null testdpkgnotinstalled a b c -testfileequal 'rootdir/var/lib/apt/extended_states' '' +testmarkedauto aptget install a b -y -qq 2>&1 > /dev/null testdpkginstalled a b testdpkgnotinstalled c -testfileequal 'rootdir/var/lib/apt/extended_states' '' +testmarkedauto aptget purge a b -y -qq 2>&1 > /dev/null testdpkgnotinstalled a b c -testfileequal 'rootdir/var/lib/apt/extended_states' '' +testmarkedauto aptget install b c -y -qq 2>&1 > /dev/null testdpkgnotinstalled a testdpkginstalled b c -testfileequal 'rootdir/var/lib/apt/extended_states' '' +testmarkedauto aptget install a -y -qq 2>&1 > /dev/null testdpkginstalled a b c -testfileequal 'rootdir/var/lib/apt/extended_states' '' +testmarkedauto diff --git a/test/integration/test-disappearing-packages b/test/integration/test-disappearing-packages index 12d215d7a..b5d565c2f 100755 --- a/test/integration/test-disappearing-packages +++ b/test/integration/test-disappearing-packages @@ -31,7 +31,7 @@ setupaptarchive aptget install old-pkg=1.0 --trivial-only -qq 2>&1 > /dev/null -testfileequal "rootdir/var/lib/apt/extended_states" "" # old-pkg is manual installed +testmarkedauto # old-pkg is manual installed local CMD="aptget dist-upgrade -y -q=0" msgtest "Test for equality of" "$CMD" @@ -51,4 +51,4 @@ Install: new-pkg:i386 (2.0, automatic) Upgrade: old-pkg:i386 (1.0, 2.0) Disappeared: old-pkg (1.0)" -testfileequal "rootdir/var/lib/apt/extended_states" "" # new-pkg should have get the manual flag from old-pkg +testmarkedauto # new-pkg should have get the manual flag from old-pkg -- cgit v1.2.3-70-g09d2 From bc33e0f0b6b1fdb010dcd4a49a78b827530052aa Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Tue, 22 Feb 2011 12:50:47 +0100 Subject: * ftparchive/multicompress.cc, apt-inst/deb/debfile.cc: - support xz compressor to create xz-compressed Indexes and be able to open data.tar.xz files --- apt-inst/deb/debfile.cc | 8 +++++++- debian/changelog | 5 ++++- ftparchive/contents.cc | 6 +++++- ftparchive/multicompress.cc | 1 + test/integration/framework | 8 +++++--- 5 files changed, 22 insertions(+), 6 deletions(-) (limited to 'test/integration/framework') diff --git a/apt-inst/deb/debfile.cc b/apt-inst/deb/debfile.cc index cd7a88808..edd78adbb 100644 --- a/apt-inst/deb/debfile.cc +++ b/apt-inst/deb/debfile.cc @@ -46,7 +46,9 @@ debDebFile::debDebFile(FileFd &File) : File(File), AR(File) if (!CheckMember("data.tar.gz") && !CheckMember("data.tar.bz2") && - !CheckMember("data.tar.lzma")) { + !CheckMember("data.tar.lzma") && + !CheckMember("data.tar.xz")) { + // FIXME: add data.tar.xz here - adding it now would require a Translation round for a very small gain _error->Error(_("This is not a valid DEB archive, it has no '%s', '%s' or '%s' member"), "data.tar.gz", "data.tar.bz2", "data.tar.lzma"); return; } @@ -136,6 +138,10 @@ bool debDebFile::ExtractArchive(pkgDirStream &Stream) Member = AR.FindMember("data.tar.lzma"); Compressor = "lzma"; } + if (Member == 0) { + Member = AR.FindMember("data.tar.xz"); + Compressor = "xz"; + } if (Member == 0) return _error->Error(_("Internal error, could not locate member")); if (File.Seek(Member->Start) == false) diff --git a/debian/changelog b/debian/changelog index b3907ac0f..bf72e350d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -13,8 +13,11 @@ apt (0.8.10.3+squeeze1) UNRELEASED; urgency=low * apt-pkg/contrib/fileutl.cc: - reorder the loaded filesize bytes for big endian (Closes: #612986) Thanks to Jörg Sommer for the detailed analyse! + * ftparchive/multicompress.cc, apt-inst/deb/debfile.cc: + - support xz compressor to create xz-compressed Indexes and be able + to open data.tar.xz files - -- David Kalnischkies Tue, 22 Feb 2011 11:25:58 +0100 + -- David Kalnischkies Tue, 22 Feb 2011 12:47:31 +0100 apt (0.8.10.3) unstable; urgency=low diff --git a/ftparchive/contents.cc b/ftparchive/contents.cc index b761d9204..9e283cf33 100644 --- a/ftparchive/contents.cc +++ b/ftparchive/contents.cc @@ -317,9 +317,13 @@ bool ContentsExtract::Read(debDebFile &Deb) Member = Deb.GotoMember("data.tar.lzma"); Compressor = "lzma"; } + if (Member == 0) { + Member = Deb.GotoMember("data.tar.xz"); + Compressor = "xz"; + } if (Member == 0) { _error->Error(_("Internal error, could not locate member %s"), - "data.tar.{gz,bz2,lzma}"); + "data.tar.{gz,bz2,lzma,xz}"); return false; } diff --git a/ftparchive/multicompress.cc b/ftparchive/multicompress.cc index bb4beedf9..c33414a11 100644 --- a/ftparchive/multicompress.cc +++ b/ftparchive/multicompress.cc @@ -35,6 +35,7 @@ const MultiCompress::CompType MultiCompress::Compressors[] = {"gzip",".gz","gzip","-9n","-d",2}, {"bzip2",".bz2","bzip2","-9","-d",3}, {"lzma",".lzma","lzma","-9","-d",4}, + {"xz",".xz","xz","-6","-d",5}, {}}; // MultiCompress::MultiCompress - Constructor /*{{{*/ diff --git a/test/integration/framework b/test/integration/framework index 2422f0886..6545cf3ce 100644 --- a/test/integration/framework +++ b/test/integration/framework @@ -251,9 +251,9 @@ createaptftparchiveconfig() { echo -n '"; }; Default { - Packages::Compress ". gzip bzip2 lzma"; - Sources::Compress ". gzip bzip2 lzma"; - Contents::Compress ". gzip bzip2 lzma"; + Packages::Compress ". gzip bzip2 lzma xz"; + Sources::Compress ". gzip bzip2 lzma xz"; + Contents::Compress ". gzip bzip2 lzma xz"; }; TreeDefault { Directory "pool/"; @@ -332,6 +332,7 @@ buildaptarchivefromfiles() { cat Packages | gzip > Packages.gz cat Packages | bzip2 > Packages.bz2 cat Packages | lzma > Packages.lzma + cat Packages | xz > Packages.xz msgdone "info" fi if [ -f Sources ]; then @@ -339,6 +340,7 @@ buildaptarchivefromfiles() { cat Sources | gzip > Sources.gz cat Sources | bzip2 > Sources.bz2 cat Sources | lzma > Sources.lzma + cat Sources | xz > Sources.xz msgdone "info" fi msgninfo "\tRelease file… " -- cgit v1.2.3-70-g09d2