diff options
author | Julian Andres Klode <julian.klode@canonical.com> | 2021-02-23 18:23:30 +0100 |
---|---|---|
committer | Julian Andres Klode <julian.klode@canonical.com> | 2021-02-23 19:10:29 +0100 |
commit | f8ff3afcd42d8b2e6506bc6f44a894149bf87442 (patch) | |
tree | 37847887af449a251f9469192d53da424b2f23ce /test/integration/test-essential-force-loopbreak | |
parent | db391379e175aa742e390aab24dcf224a8a97e88 (diff) |
Do not require force-loopbreak on Protected packages
dpkg will be changed in 1.20.8 to not require --force-remove for
deconfiguration anymore, but we want to decouple our changes from the
dpkg ones, so let's always pass --force-remove-protected when installing
packages such that we can deconfigure protected packages.
Closes: #983014
Diffstat (limited to 'test/integration/test-essential-force-loopbreak')
-rwxr-xr-x | test/integration/test-essential-force-loopbreak | 57 |
1 files changed, 56 insertions, 1 deletions
diff --git a/test/integration/test-essential-force-loopbreak b/test/integration/test-essential-force-loopbreak index f585e9c42..2eba0a96a 100755 --- a/test/integration/test-essential-force-loopbreak +++ b/test/integration/test-essential-force-loopbreak @@ -18,6 +18,19 @@ Breaks: sysvinit-core' buildsimplenativepackage 'systemd-sysv' 'native' '2~break' 'sid-break' 'Breaks: sysvinit (<< 2), sysvinit-core' +# one more time, with Protected +insertinstalledpackage 'protected-sysvinit' 'native' '1' 'Protected: yes' + +buildsimplenativepackage 'protected-sysvinit' 'native' '2' 'sid' 'Pre-Depends: protected-sysvinit-core | protected-systemd-sysv +Protected: yes' +buildsimplenativepackage 'protected-sysvinit-core' 'native' '2' 'sid' + +buildsimplenativepackage 'protected-systemd-sysv' 'native' '2~conflict' 'sid-conflict' 'Conflicts: protected-sysvinit (<< 2) +Breaks: protected-sysvinit-core' + +buildsimplenativepackage 'protected-systemd-sysv' 'native' '2~break' 'sid-break' 'Breaks: protected-sysvinit (<< 2), protected-sysvinit-core' + + setupaptarchive cp -a rootdir/var/lib/dpkg/status dpkg.status.backup @@ -33,7 +46,7 @@ The following NEW packages will be installed: systemd-sysv The following packages will be upgraded: sysvinit -1 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +1 upgraded, 1 newly installed, 0 to remove and 1 not upgraded. E: This installation run will require temporarily removing the essential package sysvinit:$(getarchitecture 'native') due to a Conflicts/Pre-Depends loop. This is often bad, but if you really want to do it, activate the APT::Force-LoopBreak option. E: Internal Error, Could not early remove sysvinit:$(dpkg --print-architecture) (2)" aptget install systemd-sysv -t "$1" -s # ensure that really nothing happens @@ -52,3 +65,45 @@ E: Internal Error, Could not early remove sysvinit:$(dpkg --print-architecture) testforcebreak 'sid-conflict' testforcebreak 'sid-break' + +testnoforcebreak() { + cp -a dpkg.status.backup rootdir/var/lib/dpkg/status + rm -f rootdir/var/lib/apt/extended_states + testequalor2 "Reading package lists... +Building dependency tree... +The following additional packages will be installed: + protected-sysvinit +The following NEW packages will be installed: + protected-systemd-sysv +The following packages will be upgraded: + protected-sysvinit +1 upgraded, 1 newly installed, 0 to remove and 1 not upgraded. +Inst protected-systemd-sysv (2~$1 sid-$1 [$(getarchitecture 'native')]) [protected-systemd-sysv:$(getarchitecture 'native') on protected-sysvinit:$(getarchitecture 'native')] [] +Conf protected-systemd-sysv:$(getarchitecture 'native') broken + Breaks:protected-sysvinit:$(getarchitecture 'native') + [] +Inst protected-sysvinit [1] (2 sid [$(getarchitecture 'native')]) +Conf protected-sysvinit (2 sid [$(getarchitecture 'native')]) +E: Conf Broken protected-systemd-sysv:$(getarchitecture 'native')" "Reading package lists... +Building dependency tree... +The following additional packages will be installed: + protected-sysvinit +The following NEW packages will be installed: + protected-systemd-sysv +The following packages will be upgraded: + protected-sysvinit +1 upgraded, 1 newly installed, 0 to remove and 1 not upgraded. +Remv protected-sysvinit [1] +Inst protected-systemd-sysv (2~conflict sid-conflict [$(getarchitecture 'native')]) +Conf protected-systemd-sysv (2~conflict sid-conflict [$(getarchitecture 'native')]) +Inst protected-sysvinit [1] (2 sid [$(getarchitecture 'native')]) +Conf protected-sysvinit (2 sid [$(getarchitecture 'native')])" aptget install protected-systemd-sysv -t "sid-$1" -s + + # we check with 'real' packages here as the simulation reports a 'Conf broken' + cp -a dpkg.status.backup rootdir/var/lib/dpkg/status + testsuccess aptget install protected-systemd-sysv -y -t "sid-$1" + testdpkginstalled 'protected-sysvinit' 'protected-systemd-sysv' +} + +testnoforcebreak 'conflict' +testnoforcebreak 'break' |