#!/bin/sh
set -e

TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
configarchitecture 'amd64' 'armel'

insertinstalledpackage 'build-essential' 'all' '11.5' 'Multi-Arch: foreign'

insertpackage 'unstable' 'doxygen' 'amd64,armel' '1.0' 'Multi-Arch: foreign'
insertpackage 'unstable' 'libc6' 'amd64,armel' '1.0' 'Multi-Arch: same'
insertpackage 'unstable' 'libc6-dev' 'amd64,armel' '1.0' 'Depends: libc6
Multi-Arch: same'
insertpackage 'unstable' 'libfwibble1' 'amd64,armel' '1.0' 'Depends: libc6
Multi-Arch: same'
insertpackage 'unstable' 'libfwibble-dev' 'amd64,armel' '1.0' 'Depends: libfwibble1'
insertpackage 'unstable' 'cool' 'amd64,armel' '1.0' 'Multi-Arch: allowed'
insertpackage 'unstable' 'amdboot' 'amd64' '1.0'
insertpackage 'unstable' 'foreigner' 'amd64,armel' '1.0' 'Multi-Arch: foreign'
insertpackage 'unstable' 'arm-stuff' 'armel' '1.0'
insertpackage 'unstable' 'linux-stuff' 'amd64,armel' '1.0'

insertsource 'unstable' 'apt' 'any' '0.8.15' 'Build-Depends: doxygen, libc6-dev, libc6-dev:native, cool:any, amdboot:amd64, foreigner, libfwibble-dev, arm-stuff [eabi-any-any-arm gnueabi-any-arm] | linux-stuff [ linux-any]'

insertsource 'unstable' 'forbidden-no' 'any' '1' 'Build-Depends: amdboot:any'
insertsource 'unstable' 'forbidden-same' 'any' '1' 'Build-Depends: libc6:any'
insertsource 'unstable' 'forbidden-foreign' 'any' '1' 'Build-Depends: doxygen:any'

insertpackage 'unstable' 'specific' 'amd64' '1.0' 'Depends: libc6:amd64'
insertpackage 'unstable' 'specific' 'armel' '1.0' 'Depends: libc6:armel'

insertsource 'unstable' 'source-specific-amd64' 'amd64' '1' 'Build-Depends: specific:amd64'
insertsource 'unstable' 'source-specific-armel' 'armel' '1' 'Build-Depends: specific:armel'

setupaptarchive

testfailureequal 'Reading package lists...
Reading package lists...
Building dependency tree...
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:
 builddeps:forbidden-no:armel : Depends: amdboot:any but it is not installable
E: Unable to correct problems, you have held broken packages.' aptget build-dep forbidden-no -s -a armel
testfailureequal 'Reading package lists...
Reading package lists...
Building dependency tree...
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:
 builddeps:forbidden-same:armel : Depends: libc6:any but it is not installable
E: Unable to correct problems, you have held broken packages.' aptget build-dep forbidden-same -s -a armel
testfailureequal 'Reading package lists...
Reading package lists...
Building dependency tree...
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:
 builddeps:forbidden-foreign:armel : Depends: doxygen:any but it is not installable
E: Unable to correct problems, you have held broken packages.' aptget build-dep forbidden-foreign -s -a armel

testsuccessequal 'Reading package lists...
Reading package lists...
Building dependency tree...
The following NEW packages will be installed:
  libc6 specific
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Inst libc6 (1.0 unstable [amd64])
Inst specific (1.0 unstable [amd64])
Conf libc6 (1.0 unstable [amd64])
Conf specific (1.0 unstable [amd64])' aptget build-dep source-specific-amd64 -s
testsuccessequal 'Reading package lists...
Reading package lists...
Building dependency tree...
The following NEW packages will be installed:
  libc6 specific
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Inst libc6 (1.0 unstable [amd64])
Inst specific (1.0 unstable [amd64])
Conf libc6 (1.0 unstable [amd64])
Conf specific (1.0 unstable [amd64])' aptget build-dep source-specific-amd64 -s -a armel

testsuccessequal 'Reading package lists...
Reading package lists...
Building dependency tree...
The following NEW packages will be installed:
  libc6:armel specific:armel
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Inst libc6:armel (1.0 unstable [armel])
Inst specific:armel (1.0 unstable [armel])
Conf libc6:armel (1.0 unstable [armel])
Conf specific:armel (1.0 unstable [armel])' aptget build-dep source-specific-armel -s
testsuccessequal 'Reading package lists...
Reading package lists...
Building dependency tree...
The following NEW packages will be installed:
  libc6:armel specific:armel
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Inst libc6:armel (1.0 unstable [armel])
Inst specific:armel (1.0 unstable [armel])
Conf libc6:armel (1.0 unstable [armel])
Conf specific:armel (1.0 unstable [armel])' aptget build-dep source-specific-armel -s -a armel

testsuccessequal 'Reading package lists...
Reading package lists...
Building dependency tree...
The following NEW packages will be installed:
  amdboot cool doxygen foreigner libc6 libc6-dev libfwibble-dev libfwibble1
  linux-stuff
0 upgraded, 9 newly installed, 0 to remove and 0 not upgraded.
Inst amdboot (1.0 unstable [amd64])
Inst cool (1.0 unstable [amd64])
Inst doxygen (1.0 unstable [amd64])
Inst foreigner (1.0 unstable [amd64])
Inst libc6 (1.0 unstable [amd64])
Inst libc6-dev (1.0 unstable [amd64])
Inst libfwibble1 (1.0 unstable [amd64])
Inst libfwibble-dev (1.0 unstable [amd64])
Inst linux-stuff (1.0 unstable [amd64])
Conf amdboot (1.0 unstable [amd64])
Conf cool (1.0 unstable [amd64])
Conf doxygen (1.0 unstable [amd64])
Conf foreigner (1.0 unstable [amd64])
Conf libc6 (1.0 unstable [amd64])
Conf libc6-dev (1.0 unstable [amd64])
Conf libfwibble1 (1.0 unstable [amd64])
Conf libfwibble-dev (1.0 unstable [amd64])
Conf linux-stuff (1.0 unstable [amd64])' aptget build-dep apt -s

testsuccessequal 'Reading package lists...
Reading package lists...
Building dependency tree...
The following NEW packages will be installed:
  amdboot arm-stuff:armel cool doxygen foreigner libc6 libc6:armel libc6-dev
  libc6-dev:armel libfwibble-dev:armel libfwibble1:armel
0 upgraded, 11 newly installed, 0 to remove and 0 not upgraded.
Inst amdboot (1.0 unstable [amd64])
Inst arm-stuff:armel (1.0 unstable [armel])
Inst cool (1.0 unstable [amd64])
Inst doxygen (1.0 unstable [amd64])
Inst foreigner (1.0 unstable [amd64])
Inst libc6 (1.0 unstable [amd64])
Inst libc6:armel (1.0 unstable [armel])
Inst libc6-dev (1.0 unstable [amd64])
Inst libc6-dev:armel (1.0 unstable [armel])
Inst libfwibble1:armel (1.0 unstable [armel])
Inst libfwibble-dev:armel (1.0 unstable [armel])
Conf amdboot (1.0 unstable [amd64])
Conf arm-stuff:armel (1.0 unstable [armel])
Conf cool (1.0 unstable [amd64])
Conf doxygen (1.0 unstable [amd64])
Conf foreigner (1.0 unstable [amd64])
Conf libc6 (1.0 unstable [amd64])
Conf libc6:armel (1.0 unstable [armel])
Conf libc6-dev (1.0 unstable [amd64])
Conf libc6-dev:armel (1.0 unstable [armel])
Conf libfwibble1:armel (1.0 unstable [armel])
Conf libfwibble-dev:armel (1.0 unstable [armel])' aptget build-dep apt -s -a armel

configarchitecture 'armel' 'amd64'

testsuccessequal 'Reading package lists...
Building dependency tree...
The following NEW packages will be installed:
  amdboot:amd64 arm-stuff cool doxygen foreigner libc6 libc6-dev
  libfwibble-dev libfwibble1
0 upgraded, 9 newly installed, 0 to remove and 0 not upgraded.
Inst amdboot:amd64 (1.0 unstable [amd64])
Inst arm-stuff (1.0 unstable [armel])
Inst cool (1.0 unstable [armel])
Inst doxygen (1.0 unstable [armel])
Inst foreigner (1.0 unstable [armel])
Inst libc6 (1.0 unstable [armel])
Inst libc6-dev (1.0 unstable [armel])
Inst libfwibble1 (1.0 unstable [armel])
Inst libfwibble-dev (1.0 unstable [armel])
Conf amdboot:amd64 (1.0 unstable [amd64])
Conf arm-stuff (1.0 unstable [armel])
Conf cool (1.0 unstable [armel])
Conf doxygen (1.0 unstable [armel])
Conf foreigner (1.0 unstable [armel])
Conf libc6 (1.0 unstable [armel])
Conf libc6-dev (1.0 unstable [armel])
Conf libfwibble1 (1.0 unstable [armel])
Conf libfwibble-dev (1.0 unstable [armel])' aptget build-dep apt -s

testsuccessequal 'Reading package lists...
Reading package lists...
Building dependency tree...
The following NEW packages will be installed:
  amdboot:amd64 cool doxygen foreigner libc6 libc6:amd64 libc6-dev
  libc6-dev:amd64 libfwibble-dev:amd64 libfwibble1:amd64 linux-stuff:amd64
0 upgraded, 11 newly installed, 0 to remove and 0 not upgraded.
Inst amdboot:amd64 (1.0 unstable [amd64])
Inst cool (1.0 unstable [armel])
Inst doxygen (1.0 unstable [armel])
Inst foreigner (1.0 unstable [armel])
Inst libc6 (1.0 unstable [armel])
Inst libc6:amd64 (1.0 unstable [amd64])
Inst libc6-dev (1.0 unstable [armel])
Inst libc6-dev:amd64 (1.0 unstable [amd64])
Inst libfwibble1:amd64 (1.0 unstable [amd64])
Inst libfwibble-dev:amd64 (1.0 unstable [amd64])
Inst linux-stuff:amd64 (1.0 unstable [amd64])
Conf amdboot:amd64 (1.0 unstable [amd64])
Conf cool (1.0 unstable [armel])
Conf doxygen (1.0 unstable [armel])
Conf foreigner (1.0 unstable [armel])
Conf libc6 (1.0 unstable [armel])
Conf libc6:amd64 (1.0 unstable [amd64])
Conf libc6-dev (1.0 unstable [armel])
Conf libc6-dev:amd64 (1.0 unstable [amd64])
Conf libfwibble1:amd64 (1.0 unstable [amd64])
Conf libfwibble-dev:amd64 (1.0 unstable [amd64])
Conf linux-stuff:amd64 (1.0 unstable [amd64])' aptget build-dep apt -s -a amd64

configarchitecture 'amd64' 'armel'

insertinstalledpackage 'cool' 'amd64' '0.5'
insertinstalledpackage 'foreigner' 'armel' '0.5'

testsuccessequal 'Reading package lists...
Building dependency tree...
The following NEW packages will be installed:
  amdboot doxygen libc6 libc6-dev libfwibble-dev libfwibble1 linux-stuff
The following packages will be upgraded:
  foreigner:armel
1 upgraded, 7 newly installed, 0 to remove and 1 not upgraded.
Inst amdboot (1.0 unstable [amd64])
Inst doxygen (1.0 unstable [amd64])
Inst foreigner:armel [0.5] (1.0 unstable [armel])
Inst libc6 (1.0 unstable [amd64])
Inst libc6-dev (1.0 unstable [amd64])
Inst libfwibble1 (1.0 unstable [amd64])
Inst libfwibble-dev (1.0 unstable [amd64])
Inst linux-stuff (1.0 unstable [amd64])
Conf amdboot (1.0 unstable [amd64])
Conf doxygen (1.0 unstable [amd64])
Conf foreigner:armel (1.0 unstable [armel])
Conf libc6 (1.0 unstable [amd64])
Conf libc6-dev (1.0 unstable [amd64])
Conf libfwibble1 (1.0 unstable [amd64])
Conf libfwibble-dev (1.0 unstable [amd64])
Conf linux-stuff (1.0 unstable [amd64])' aptget build-dep apt -s

testsuccessequal 'Reading package lists...
Reading package lists...
Building dependency tree...
The following NEW packages will be installed:
  amdboot arm-stuff:armel doxygen libc6 libc6:armel libc6-dev libc6-dev:armel
  libfwibble-dev:armel libfwibble1:armel
The following packages will be upgraded:
  cool
1 upgraded, 9 newly installed, 0 to remove and 1 not upgraded.
Inst amdboot (1.0 unstable [amd64])
Inst arm-stuff:armel (1.0 unstable [armel])
Inst cool [0.5] (1.0 unstable [amd64])
Inst doxygen (1.0 unstable [amd64])
Inst libc6 (1.0 unstable [amd64])
Inst libc6:armel (1.0 unstable [armel])
Inst libc6-dev (1.0 unstable [amd64])
Inst libc6-dev:armel (1.0 unstable [armel])
Inst libfwibble1:armel (1.0 unstable [armel])
Inst libfwibble-dev:armel (1.0 unstable [armel])
Conf amdboot (1.0 unstable [amd64])
Conf arm-stuff:armel (1.0 unstable [armel])
Conf cool (1.0 unstable [amd64])
Conf doxygen (1.0 unstable [amd64])
Conf libc6 (1.0 unstable [amd64])
Conf libc6:armel (1.0 unstable [armel])
Conf libc6-dev (1.0 unstable [amd64])
Conf libc6-dev:armel (1.0 unstable [armel])
Conf libfwibble1:armel (1.0 unstable [armel])
Conf libfwibble-dev:armel (1.0 unstable [armel])' aptget build-dep apt -s -a armel

configarchitecture 'armel' 'amd64'

# cool 0.5 is not M-A: allowed, so amd64 is not acceptable
testsuccessequal 'Reading package lists...
Building dependency tree...
The following packages will be REMOVED:
  cool:amd64
The following NEW packages will be installed:
  amdboot:amd64 arm-stuff cool doxygen libc6 libc6-dev libfwibble-dev
  libfwibble1
0 upgraded, 8 newly installed, 1 to remove and 1 not upgraded.
Remv cool:amd64 [0.5]
Inst amdboot:amd64 (1.0 unstable [amd64])
Inst arm-stuff (1.0 unstable [armel])
Inst cool (1.0 unstable [armel])
Inst doxygen (1.0 unstable [armel])
Inst libc6 (1.0 unstable [armel])
Inst libc6-dev (1.0 unstable [armel])
Inst libfwibble1 (1.0 unstable [armel])
Inst libfwibble-dev (1.0 unstable [armel])
Conf amdboot:amd64 (1.0 unstable [amd64])
Conf arm-stuff (1.0 unstable [armel])
Conf cool (1.0 unstable [armel])
Conf doxygen (1.0 unstable [armel])
Conf libc6 (1.0 unstable [armel])
Conf libc6-dev (1.0 unstable [armel])
Conf libfwibble1 (1.0 unstable [armel])
Conf libfwibble-dev (1.0 unstable [armel])' aptget build-dep apt -s

testsuccessequal 'Reading package lists...
Reading package lists...
Building dependency tree...
The following NEW packages will be installed:
  amdboot:amd64 doxygen libc6 libc6:amd64 libc6-dev libc6-dev:amd64
  libfwibble-dev:amd64 libfwibble1:amd64 linux-stuff:amd64
The following packages will be upgraded:
  cool:amd64 foreigner
2 upgraded, 9 newly installed, 0 to remove and 0 not upgraded.
Inst amdboot:amd64 (1.0 unstable [amd64])
Inst cool:amd64 [0.5] (1.0 unstable [amd64])
Inst doxygen (1.0 unstable [armel])
Inst foreigner [0.5] (1.0 unstable [armel])
Inst libc6 (1.0 unstable [armel])
Inst libc6:amd64 (1.0 unstable [amd64])
Inst libc6-dev (1.0 unstable [armel])
Inst libc6-dev:amd64 (1.0 unstable [amd64])
Inst libfwibble1:amd64 (1.0 unstable [amd64])
Inst libfwibble-dev:amd64 (1.0 unstable [amd64])
Inst linux-stuff:amd64 (1.0 unstable [amd64])
Conf amdboot:amd64 (1.0 unstable [amd64])
Conf cool:amd64 (1.0 unstable [amd64])
Conf doxygen (1.0 unstable [armel])
Conf foreigner (1.0 unstable [armel])
Conf libc6 (1.0 unstable [armel])
Conf libc6:amd64 (1.0 unstable [amd64])
Conf libc6-dev (1.0 unstable [armel])
Conf libc6-dev:amd64 (1.0 unstable [amd64])
Conf libfwibble1:amd64 (1.0 unstable [amd64])
Conf libfwibble-dev:amd64 (1.0 unstable [amd64])
Conf linux-stuff:amd64 (1.0 unstable [amd64])' aptget build-dep apt -s -a amd64