123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388 |
- #!/bin/sh
- set -e
- # dpkg implements versioned provides in commit 5bb02fe80e9f40dcad9703a72f67cf615ff217b5
- # but previous versions seem to allow parsing, working and ignoring it.
- TESTDIR="$(readlink -f "$(dirname "$0")")"
- . "$TESTDIR/framework"
- setupenvironment
- configarchitecture 'amd64' 'i386'
- insertinstalledpackage 'webapp' 'all' '1' 'Depends: httpd'
- insertinstalledpackage 'webserver' 'all' '1' 'Provides: httpd'
- insertpackage 'unstable' 'webapp' 'all' '2' 'Depends: httpd (>= 2)'
- insertpackage 'unstable' 'webserver' 'amd64' '2' 'Provides: httpd (= 2)'
- insertpackage 'unstable' 'foreign-webserver' 'i386' '2' 'Multi-Arch: foreign
- Provides: httpd (= 2)'
- insertpackage 'experimental' 'webapp' 'all' '3' 'Depends: httpd (>= 1.5)'
- insertpackage 'experimental' 'webserver' 'amd64' '3' 'Provides: httpd (= 3)'
- insertpackage 'experimental' 'foreign-webserver' 'i386' '4' 'Multi-Arch: foreign
- Provides: httpd (= 4)'
- insertpackage 'experimental' 'cool-webapp' 'all' '4' 'Depends: httpd (>= 4)'
- # arch-qualified provides, see #777071
- insertpackage 'unstable' 'foo' 'all' '1' 'Provides: bar:i386'
- insertpackage 'unstable' 'baz' 'i386,amd64' '1' 'Depends: bar'
- insertpackage 'experimental' 'baz' 'i386,amd64' '2' 'Depends: bar:i386'
- insertpackage 'experimental' 'baz-broken' 'i386' '2' 'Depends: bar:amd64'
- insertpackage 'unstable' 'next' 'amd64' '1' 'Multi-Arch: foreign
- Provides: next (= 2)'
- insertpackage 'unstable' 'needsrealnext' 'amd64,i386' '2' 'Depends: next (>= 2)'
- insertpackage 'unstable' 'virtualnext2' 'amd64' '1' 'Multi-Arch: foreign
- Provides: next2 (= 2)'
- insertpackage 'unstable' 'needsnext2' 'amd64,i386' '2' 'Depends: next2 (>= 2)'
- insertpackage 'unstable' 'virtualnext3' 'amd64' '1' 'Multi-Arch: no
- Provides: next3 (= 2)'
- insertpackage 'unstable' 'needsnext3' 'amd64,i386' '2' 'Depends: next3 (>= 2)'
- insertpackage 'unstable' 'selfprov' 'amd64' '2' 'Provides: selfprov (= 1)'
- insertpackage 'unstable' 'needsselfprov1' 'amd64' '1' 'Depends: selfprov (= 1)'
- insertpackage 'unstable' 'needsselfprov2' 'amd64' '1' 'Depends: selfprov (= 2)'
- insertpackage 'unstable' 'needsselfprov12' 'amd64' '1' 'Depends: selfprov (= 1), selfprov (= 2)'
- insertpackage 'unstable' 'needsselfprov123' 'amd64' '1' 'Depends: selfprov (= 1), selfprov (= 2), selfprov (= 3)'
- setupaptarchive
- SOMEPACKAGESCOULDNOT='Some packages could not be installed. This may mean that you have
- requested an impossible situation or if you are using the unstable
- distribution that some required packages have not yet been created
- or been moved out of Incoming.
- The following information may help to resolve the situation:
- The following packages have unmet dependencies:'
- for binary in 'aptget' 'apt'; do
- for method in 'upgrade' 'dist-upgrade'; do
- for solver in 'internal' 'apt'; do
- if [ "$solver" = 'apt' ]; then
- HEADER='Execute external solver...'
- else
- HEADER='Calculating upgrade...'
- fi
- testsuccessequal "Reading package lists...
- Building dependency tree...
- $HEADER
- The following packages will be upgraded:
- webapp webserver
- 2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
- Inst webserver [1] (2 unstable [amd64])
- Inst webapp [1] (2 unstable [all])
- Conf webserver (2 unstable [amd64])
- Conf webapp (2 unstable [all])" $binary $method -s --solver $solver
- done
- done
- done
- for solver in 'internal' 'apt'; do
- msgmsg 'Testing with solver' "$solver"
- HEADER_PRE='Reading package lists...
- Building dependency tree...'
- HEADER_POST='Execute external solver...'
- HEADER="${HEADER_PRE}"
- if [ "$solver" = 'apt' ]; then
- HEADER="${HEADER}
- ${HEADER_POST}"
- fi
- testsuccessequal "$HEADER
- The following packages will be upgraded:
- webapp webserver
- 2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
- Inst webserver [1] (2 unstable [amd64])
- Inst webapp [1] (2 unstable [all])
- Conf webserver (2 unstable [amd64])
- Conf webapp (2 unstable [all])" aptget install webapp webserver -s --solver $solver
- testsuccessequal "$HEADER
- The following packages will be upgraded:
- webapp webserver
- 2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
- Inst webserver [1] (2 unstable [amd64])
- Inst webapp [1] (3 experimental [all])
- Conf webserver (2 unstable [amd64])
- Conf webapp (3 experimental [all])" aptget install webapp=3 webserver -s --solver $solver
- testsuccessequal "$HEADER
- The following packages will be upgraded:
- webapp webserver
- 2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
- Inst webserver [1] (3 experimental [amd64])
- Inst webapp [1] (2 unstable [all])
- Conf webserver (3 experimental [amd64])
- Conf webapp (2 unstable [all])" aptget install webapp webserver=3 -s --solver $solver
- testsuccessequal "$HEADER
- The following NEW packages will be installed:
- foreign-webserver:i386
- The following packages will be upgraded:
- webapp
- 1 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
- Inst foreign-webserver:i386 (2 unstable [i386])
- Inst webapp [1] (2 unstable [all])
- Conf foreign-webserver:i386 (2 unstable [i386])
- Conf webapp (2 unstable [all])" aptget install webapp foreign-webserver:i386 -s --solver $solver
- testsuccessequal "$HEADER
- The following NEW packages will be installed:
- foreign-webserver:i386
- The following packages will be upgraded:
- webapp
- 1 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
- Inst foreign-webserver:i386 (2 unstable [i386])
- Inst webapp [1] (3 experimental [all])
- Conf foreign-webserver:i386 (2 unstable [i386])
- Conf webapp (3 experimental [all])" aptget install webapp=3 foreign-webserver:i386 -s --solver $solver
- testsuccessequal "$HEADER
- The following NEW packages will be installed:
- foreign-webserver:i386
- The following packages will be upgraded:
- webapp
- 1 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
- Inst foreign-webserver:i386 (4 experimental [i386])
- Inst webapp [1] (2 unstable [all])
- Conf foreign-webserver:i386 (4 experimental [i386])
- Conf webapp (2 unstable [all])" aptget install webapp foreign-webserver:i386=4 -s --solver $solver
- if [ "$solver" = 'apt' ]; then
- WEBAPP_ERR="$HEADER
- The solver encountered an error of type: ERR_UNSOLVABLE
- The following information might help you to understand what is wrong:
- The following packages have unmet dependencies:
- cool-webapp : Depends: httpd (>= 4)
- $SOMEPACKAGESCOULDNOT
- cool-webapp : Depends: httpd (>= 4)
- E: External solver failed with: The following packages have unmet dependencies:"
- else
- WEBAPP_ERR="$HEADER
- $SOMEPACKAGESCOULDNOT
- cool-webapp : Depends: httpd (>= 4)
- E: Unable to correct problems, you have held broken packages."
- fi
- testfailureequal "$WEBAPP_ERR" aptget install cool-webapp -s --solver $solver
- testfailureequal "$WEBAPP_ERR" aptget install cool-webapp foreign-webserver:i386 -s --solver $solver
- testsuccessequal "$HEADER
- The following NEW packages will be installed:
- cool-webapp foreign-webserver:i386
- 0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
- Inst foreign-webserver:i386 (4 experimental [i386])
- Inst cool-webapp (4 experimental [all])
- Conf foreign-webserver:i386 (4 experimental [i386])
- Conf cool-webapp (4 experimental [all])" aptget install cool-webapp foreign-webserver:i386=4 -s --solver $solver
- testsuccessequal "$HEADER
- The following additional packages will be installed:
- foo
- The following NEW packages will be installed:
- baz:i386 foo
- 0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
- Inst foo (1 unstable [all])
- Inst baz:i386 (1 unstable [i386])
- Conf foo (1 unstable [all])
- Conf baz:i386 (1 unstable [i386])" aptget install baz:i386 -s --solver $solver
- if [ "$solver" = 'apt' ]; then
- testfailureequal "$HEADER
- The solver encountered an error of type: ERR_UNSOLVABLE
- The following information might help you to understand what is wrong:
- The following packages have unmet dependencies:
- baz : Depends: bar but it is not installable
- $SOMEPACKAGESCOULDNOT
- baz : Depends: bar but it is not installable
- E: External solver failed with: The following packages have unmet dependencies:" aptget install baz:amd64 -s --solver $solver
- else
- testfailureequal "$HEADER
- $SOMEPACKAGESCOULDNOT
- baz : Depends: bar but it is not installable
- E: Unable to correct problems, you have held broken packages." aptget install baz:amd64 -s --solver $solver
- fi
- HEADER="${HEADER_PRE}
- Selected version '2' (experimental [amd64]) for 'baz'"
- if [ "$solver" = 'apt' ]; then
- HEADER="${HEADER}
- ${HEADER_POST}"
- fi
- testsuccessequal "$HEADER
- The following additional packages will be installed:
- foo
- The following NEW packages will be installed:
- baz foo
- 0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
- Inst foo (1 unstable [all])
- Inst baz (2 experimental [amd64])
- Conf foo (1 unstable [all])
- Conf baz (2 experimental [amd64])" aptget install baz/experimental -s --solver $solver
- HEADER="${HEADER_PRE}
- Selected version '2' (experimental [i386]) for 'baz:i386'"
- if [ "$solver" = 'apt' ]; then
- HEADER="${HEADER}
- ${HEADER_POST}"
- fi
- testsuccessequal "$HEADER
- The following additional packages will be installed:
- foo
- The following NEW packages will be installed:
- baz:i386 foo
- 0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
- Inst foo (1 unstable [all])
- Inst baz:i386 (2 experimental [i386])
- Conf foo (1 unstable [all])
- Conf baz:i386 (2 experimental [i386])" aptget install baz:i386/experimental -s --solver $solver
- if [ "$solver" = 'apt' ]; then
- HEADER="${HEADER_PRE}
- ${HEADER_POST}"
- else
- HEADER="${HEADER_PRE}"
- fi
- if [ "$solver" = 'apt' ]; then
- testfailureequal "$HEADER
- The solver encountered an error of type: ERR_UNSOLVABLE
- The following information might help you to understand what is wrong:
- The following packages have unmet dependencies:
- baz-broken:i386 : Depends: bar:amd64 but it is not installable
- $SOMEPACKAGESCOULDNOT
- baz-broken:i386 : Depends: bar:amd64 but it is not installable
- E: External solver failed with: The following packages have unmet dependencies:" aptget install baz-broken -s --solver $solver
- else
- testfailureequal "$HEADER
- $SOMEPACKAGESCOULDNOT
- baz-broken:i386 : Depends: bar:amd64 but it is not installable
- E: Unable to correct problems, you have held broken packages." aptget install baz-broken -s --solver $solver
- fi
- testsuccessequal "$HEADER
- The following additional packages will be installed:
- next
- The following NEW packages will be installed:
- needsrealnext next
- 0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
- Inst next (1 unstable [amd64])
- Inst needsrealnext (2 unstable [amd64])
- Conf next (1 unstable [amd64])
- Conf needsrealnext (2 unstable [amd64])" aptget install needsrealnext -s --solver $solver
- testsuccessequal "$HEADER
- The following additional packages will be installed:
- next
- The following NEW packages will be installed:
- needsrealnext:i386 next
- 0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
- Inst next (1 unstable [amd64])
- Inst needsrealnext:i386 (2 unstable [i386])
- Conf next (1 unstable [amd64])
- Conf needsrealnext:i386 (2 unstable [i386])" aptget install needsrealnext:i386 -s --solver $solver
- testsuccessequal "$HEADER
- The following additional packages will be installed:
- virtualnext2
- The following NEW packages will be installed:
- needsnext2 virtualnext2
- 0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
- Inst virtualnext2 (1 unstable [amd64])
- Inst needsnext2 (2 unstable [amd64])
- Conf virtualnext2 (1 unstable [amd64])
- Conf needsnext2 (2 unstable [amd64])" aptget install needsnext2 -s --solver $solver
- testsuccessequal "$HEADER
- The following additional packages will be installed:
- virtualnext2
- The following NEW packages will be installed:
- needsnext2:i386 virtualnext2
- 0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
- Inst virtualnext2 (1 unstable [amd64])
- Inst needsnext2:i386 (2 unstable [i386])
- Conf virtualnext2 (1 unstable [amd64])
- Conf needsnext2:i386 (2 unstable [i386])" aptget install needsnext2:i386 -s --solver $solver
- testsuccessequal "$HEADER
- The following additional packages will be installed:
- virtualnext3
- The following NEW packages will be installed:
- needsnext3 virtualnext3
- 0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
- Inst virtualnext3 (1 unstable [amd64])
- Inst needsnext3 (2 unstable [amd64])
- Conf virtualnext3 (1 unstable [amd64])
- Conf needsnext3 (2 unstable [amd64])" aptget install needsnext3 -s --solver $solver
- if [ "$solver" = 'apt' ]; then
- testfailureequal "$HEADER
- The solver encountered an error of type: ERR_UNSOLVABLE
- The following information might help you to understand what is wrong:
- The following packages have unmet dependencies:
- needsnext3:i386 : Depends: next3:i386 (>= 2) but it is not installable
- $SOMEPACKAGESCOULDNOT
- needsnext3:i386 : Depends: next3:i386 (>= 2) but it is not installable
- E: External solver failed with: The following packages have unmet dependencies:" aptget install needsnext3:i386 -s --solver $solver
- else
- testfailureequal "$HEADER
- $SOMEPACKAGESCOULDNOT
- needsnext3:i386 : Depends: next3:i386 (>= 2) but it is not installable
- E: Unable to correct problems, you have held broken packages." aptget install needsnext3:i386 -s --solver $solver
- fi
- testsuccessequal "$HEADER
- The following additional packages will be installed:
- selfprov
- The following NEW packages will be installed:
- needsselfprov1 selfprov
- 0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
- Inst selfprov (2 unstable [amd64])
- Inst needsselfprov1 (1 unstable [amd64])
- Conf selfprov (2 unstable [amd64])
- Conf needsselfprov1 (1 unstable [amd64])" aptget install needsselfprov1 -s --solver $solver
- testsuccessequal "$HEADER
- The following additional packages will be installed:
- selfprov
- The following NEW packages will be installed:
- needsselfprov2 selfprov
- 0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
- Inst selfprov (2 unstable [amd64])
- Inst needsselfprov2 (1 unstable [amd64])
- Conf selfprov (2 unstable [amd64])
- Conf needsselfprov2 (1 unstable [amd64])" aptget install needsselfprov2 -s --solver $solver
- testsuccessequal "$HEADER
- The following additional packages will be installed:
- selfprov
- The following NEW packages will be installed:
- needsselfprov12 selfprov
- 0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
- Inst selfprov (2 unstable [amd64])
- Inst needsselfprov12 (1 unstable [amd64])
- Conf selfprov (2 unstable [amd64])
- Conf needsselfprov12 (1 unstable [amd64])" aptget install needsselfprov12 -s --solver $solver
- if [ "$solver" = 'apt' ]; then
- testfailureequal "$HEADER
- The solver encountered an error of type: ERR_UNSOLVABLE
- The following information might help you to understand what is wrong:
- The following packages have unmet dependencies:
- needsselfprov123 : Depends: selfprov (= 3)
- $SOMEPACKAGESCOULDNOT
- needsselfprov123 : Depends: selfprov (= 1)
- Depends: selfprov (= 2)
- Depends: selfprov (= 3)
- E: External solver failed with: The following packages have unmet dependencies:" aptget install needsselfprov123 -s --solver $solver
- else
- testfailureequal "$HEADER
- $SOMEPACKAGESCOULDNOT
- needsselfprov123 : Depends: selfprov (= 3)
- E: Unable to correct problems, you have held broken packages." aptget install needsselfprov123 -s --solver $solver
- fi
- done
|