You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

129 lines
2.2 KiB
Bash

#!/bin/sh
set -x
PWD="`pwd`"
APTROOT="$PWD/aptroot"
EXPREPO="$PWD/exprepo"
SIDREPO="$PWD/sidrepo"
ARCH="amd64"
rm -rf "$EXPREPO"
rm -rf "$SIDREPO"
rm -rf "$APTROOT"
# populate experimental repository
mkdir -p "$EXPREPO"
cat << END > "$EXPREPO/Packages"
Package: pkg-a
Version: 1.0
Architecture: amd64
Depends: pkg-b (= 2.0), pkg-c, pkg-d (= 1.0)
Package: pkg-b
Version: 2.0
Architecture: amd64
Package: pkg-c
Version: 2.0
Architecture: amd64
Package: pkg-d
Version: 2.0
Architecture: amd64
END
md5=`md5sum "$EXPREPO/Packages" | awk '{print $1}'`
size=`stat -c %s "$EXPREPO/Packages"`
cat << END > "$EXPREPO/Release"
Codename: experimental
MD5Sum:
$md5 $size Packages
END
# populate unstable repository
mkdir -p "$SIDREPO"
cat << END > "$SIDREPO/Packages"
Package: pkg-b
Version: 1.0
Architecture: amd64
Package: pkg-c
Version: 1.0
Architecture: amd64
Package: pkg-d
Version: 1.0
Architecture: amd64
END
md5=`md5sum "$SIDREPO/Packages" | awk '{print $1}'`
size=`stat -c %s "$SIDREPO/Packages"`
cat << END > "$SIDREPO/Release"
Codename: unstable
MD5Sum:
$md5 $size Packages
END
# setup apt
mkdir -p $APTROOT
mkdir -p $APTROOT/etc/apt/
mkdir -p $APTROOT/etc/apt/apt.conf.d/
mkdir -p $APTROOT/etc/apt/preferences.d/
mkdir -p $APTROOT/var/lib/dpkg/
mkdir -p $APTROOT/var/cache/apt/
touch $APTROOT/var/lib/dpkg/status
cat << END > "$APTROOT/etc/apt/apt.conf"
Apt::Architecture "$ARCH";
Apt::Architectures "$ARCH";
Dir "$APTROOT/";
Dir::State::Status "$APTROOT/var/lib/dpkg/status";
Debug::pkgProblemResolver true;
Debug::pkgDepCache::Marker 1;
Debug::pkgDepCache::AutoInstall 1;
END
cat << END > "$APTROOT/etc/apt/sources.list"
deb file:$EXPREPO ./
deb file:$SIDREPO ./
END
cat << END > "$APTROOT/etc/apt/preferences.d/sid.pref"
Package: *
Pin: release n=unstable
Pin-Priority: 900
END
cat << END > "$APTROOT/etc/apt/preferences.d/exp.pref"
Package: *
Pin: release n=experimental
Pin-Priority: 500
END
APT_CONFIG="$APTROOT/etc/apt/apt.conf"
export APT_CONFIG
# run test
apt-get update
apt-cache policy
apt-get install --simulate pkg-a
apt-get install --simulate pkg-a -t experimental
apt-get install --simulate --solver aspcud \
-o APT::Solver::Strict-Pinning=false \
-o APT::Solver::aspcud::Preferences="-new,-removed,-changed,+sum(solution,apt-pin)" \
pkg-a