#!/bin/sh set -e TESTDIR="$(readlink -f "$(dirname "$0")")" . "$TESTDIR/framework" setupenvironment configarchitecture 'amd64' insertpackage 'unversioned' 'libdb-dev' 'amd64' '5.3.0' 'Depends: libdb5.3-dev Conflicts: libdb5.1-dev' insertpackage 'unversioned' 'libdb5.1-dev' 'amd64' '5.1.29-7' insertpackage 'unversioned' 'libdb5.3-dev' 'amd64' '5.3.28-3' 'Conflicts: libdb5.1-dev' insertpackage 'unversioned' 'foo' 'amd64' '1' insertpackage 'unversioned' 'bar' 'amd64' '1' insertpackage 'unversioned' 'foo' 'amd64' '2' 'Conflicts: bar' insertpackage 'unversioned' 'bar' 'amd64' '2' 'Conflicts: foo' insertpackage 'unversioned' 'baz' 'amd64' '2' 'Depends: bar | foo' insertpackage 'versioned' 'libdb-dev' 'amd64' '5.3.0' 'Depends: libdb5.3-dev Conflicts: libdb5.1-dev (<< 5.2)' insertpackage 'versioned' 'libdb5.3-dev' 'amd64' '5.3.28-3' 'Conflicts: libdb5.1-dev (<< 5.2)' insertpackage 'versioned' 'foo' 'amd64' '2' 'Conflicts: bar (<= 2)' insertpackage 'versioned' 'bar' 'amd64' '2' 'Conflicts: foo (<= 2)' insertpackage 'versioned' 'baz' 'amd64' '2' 'Depends: bar (>= 2) | foo (>= 2)' insertpackage 'multipleno' 'foo' 'amd64' '2.1' 'Conflicts: bar (<= 3)' insertpackage 'multipleno' 'bar' 'amd64' '2.1' 'Conflicts: foo (<= 3), foo (<= 1)' insertpackage 'multipleyes' 'foo' 'amd64' '2.2' 'Conflicts: bar (<= 3)' # having foo multiple times as conflict is a non-advisable hack in general insertpackage 'multipleyes' 'bar' 'amd64' '2.2' 'Conflicts: foo (<= 3), foo (<= 3)' #774924 - slightly simplified insertpackage 'jessie' 'login' 'amd64' '2' 'Pre-Depends: libaudit1 (>= 0)' insertpackage 'jessie' 'libaudit1' 'amd64' '2' 'Depends: libaudit-common (>= 0)' insertpackage 'jessie' 'libaudit-common' 'amd64' '2' 'Breaks: libaudit0, libaudit1 (<< 2)' cp rootdir/var/lib/dpkg/status rootdir/var/lib/dpkg/status-backup setupaptarchive insertinstalledpackage 'libdb-dev' 'amd64' '5.1.7' 'Depends: libdb5.1-dev' insertinstalledpackage 'libdb5.1-dev' 'amd64' '5.1.29-7' testsuccessequal 'Reading package lists... Building dependency tree... Calculating upgrade... The following packages will be REMOVED: libdb5.1-dev The following NEW packages will be installed: libdb5.3-dev The following packages will be upgraded: libdb-dev 1 upgraded, 1 newly installed, 1 to remove and 0 not upgraded. Remv libdb5.1-dev [5.1.29-7] [libdb-dev:amd64 ] Inst libdb-dev [5.1.7] (5.3.0 unversioned [amd64]) [] Inst libdb5.3-dev (5.3.28-3 unversioned [amd64]) Conf libdb-dev (5.3.0 unversioned [amd64]) Conf libdb5.3-dev (5.3.28-3 unversioned [amd64])' aptget dist-upgrade -st unversioned testsuccessequal 'Reading package lists... Building dependency tree... Calculating upgrade... The following packages will be REMOVED: libdb5.1-dev The following NEW packages will be installed: libdb5.3-dev The following packages will be upgraded: libdb-dev 1 upgraded, 1 newly installed, 1 to remove and 0 not upgraded. Remv libdb5.1-dev [5.1.29-7] [libdb-dev:amd64 ] Inst libdb-dev [5.1.7] (5.3.0 versioned [amd64]) [] Inst libdb5.3-dev (5.3.28-3 versioned [amd64]) Conf libdb-dev (5.3.0 versioned [amd64]) Conf libdb5.3-dev (5.3.28-3 versioned [amd64])' aptget dist-upgrade -st versioned cp -f rootdir/var/lib/dpkg/status-backup rootdir/var/lib/dpkg/status insertinstalledpackage 'foo' 'amd64' '1' insertinstalledpackage 'bar' 'amd64' '1' testsuccessequal 'Reading package lists... Building dependency tree... Calculating upgrade... The following packages have been kept back: bar foo 0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.' aptget dist-upgrade -st unversioned testsuccessequal 'Reading package lists... Building dependency tree... Calculating upgrade... The following packages have been kept back: bar foo 0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.' aptget dist-upgrade -st versioned testsuccessequal 'Reading package lists... Building dependency tree... Calculating upgrade... The following packages have been kept back: bar foo 0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.' aptget dist-upgrade -st multipleno testsuccessequal 'Reading package lists... Building dependency tree... Calculating upgrade... The following packages will be REMOVED: foo The following packages will be upgraded: bar 1 upgraded, 0 newly installed, 1 to remove and 0 not upgraded. Remv foo [1] Inst bar [1] (2.2 multipleyes [amd64]) Conf bar (2.2 multipleyes [amd64])' aptget dist-upgrade -st multipleyes testsuccessequal 'Reading package lists... Building dependency tree... The following NEW packages will be installed: baz 0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded. Inst baz (2 unversioned [amd64]) Conf baz (2 unversioned [amd64])' aptget install baz -st unversioned testsuccessequal 'Reading package lists... Building dependency tree... The following additional packages will be installed: foo The following packages will be REMOVED: bar The following NEW packages will be installed: baz The following packages will be upgraded: foo 1 upgraded, 1 newly installed, 1 to remove and 0 not upgraded. Remv bar [1] Inst foo [1] (2 versioned [amd64]) Inst baz (2 versioned [amd64]) Conf foo (2 versioned [amd64]) Conf baz (2 versioned [amd64])' aptget install baz -st versioned testsuccessequal 'Reading package lists... Building dependency tree... The following NEW packages will be installed: baz 0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded. Inst baz (2 unversioned [amd64]) Conf baz (2 unversioned [amd64])' aptget install baz -st unversioned testsuccessequal 'Reading package lists... Building dependency tree... The following additional packages will be installed: foo The following packages will be REMOVED: bar The following NEW packages will be installed: baz The following packages will be upgraded: foo 1 upgraded, 1 newly installed, 1 to remove and 0 not upgraded. Remv bar [1] Inst foo [1] (2 versioned [amd64]) Inst baz (2 versioned [amd64]) Conf foo (2 versioned [amd64]) Conf baz (2 versioned [amd64])' aptget install baz -st versioned # recreating the exact situation is hard, so we pull tricks to get the score cp -f rootdir/var/lib/dpkg/status-backup rootdir/var/lib/dpkg/status insertinstalledpackage 'gdm3' 'amd64' '1' 'Depends: libaudit0, libaudit0' insertinstalledpackage 'login' 'amd64' '1' 'Essential: yes' insertinstalledpackage 'libaudit0' 'amd64' '1' testsuccessequal 'Reading package lists... Building dependency tree... Calculating upgrade... The following packages will be REMOVED: gdm3 libaudit0 The following NEW packages will be installed: libaudit-common libaudit1 The following packages will be upgraded: login 1 upgraded, 2 newly installed, 2 to remove and 0 not upgraded. Remv gdm3 [1] Remv libaudit0 [1] Inst libaudit-common (2 jessie [amd64]) Conf libaudit-common (2 jessie [amd64]) Inst libaudit1 (2 jessie [amd64]) Conf libaudit1 (2 jessie [amd64]) Inst login [1] (2 jessie [amd64]) Conf login (2 jessie [amd64])' aptget dist-upgrade -st jessie