eris/test-distributions

80 lines
2.4 KiB
Bash
Executable file

#!/bin/bash
set -e
VIGIL_PATH=$(realpath $(dirname $0))
function run_in_container {
CONTAINER=$1
shift
[ -f $CONTAINER ] && OPTION="--image" || OPTION="--directory"
sudo systemd-nspawn --chdir=/vigil --overlay=$VIGIL_PATH:/vigil \
$OPTION=$CONTAINER /bin/bash --login -c "$*"
}
function build_ubuntu {
sudo debootstrap --components=main,restricted,universe,multiverse \
zesty ubuntu.part
run_in_container ubuntu.part \
ln -sf /lib/systemd/resolv.conf /etc/resolv.conf
run_in_container ubuntu.part apt-get update
mv ubuntu.part ubuntu
}
function build_fedora {
IMAGE="Fedora-Cloud-Base-25-1.3.x86_64.raw"
wget --continue "https://dl.fedoraproject.org/pub/fedora/linux/releases/25/CloudImages/x86_64/images/$IMAGE.xz"
unxz $IMAGE.xz
mv $IMAGE fedora
}
function build_debian {
sudo debootstrap --components=main,contrib,non-free \
--include=sudo jessie debian.part
run_in_container debian.part apt-get update
mv debian.part debian
}
function build_archlinux {
ARCHIVE="archlinux-bootstrap-2017.05.01-x86_64.tar.gz"
wget --continue "http://mirrors.kernel.org/archlinux/iso/latest/$ARCHIVE"
tar -zxf $ARCHIVE
mv root.x86_64 archlinux.part
run_in_container archlinux.part pacman-key --init
run_in_container archlinux.part pacman-key --populate archlinux
echo "Server = http://mirror.rackspace.com/archlinux/\$repo/os/\$arch" > \
archlinux.part/etc/pacman.d/mirrorlist
run_in_container archlinux.part pacman -Syyu --noconfirm
run_in_container archlinux.part pacman -S --noconfirm sudo grep
rm $ARCHIVE
mv archlinux.part archlinux
}
[ $# -eq 0 ] && WORK_PATH=$(mktemp -d --suffix=-vigil) || WORK_PATH="$1"
sudo apt-get install -y systemd-container debootstrap xz-utils wget
cd $WORK_PATH
for DISTRIBUTION in ubuntu fedora debian archlinux; do
if [ -e $DISTRIBUTION ]; then
echo "$DISTRIBUTION container already exists."
else
echo "Building $DISTRIBUTION container..."
build_$DISTRIBUTION
fi
echo "Installing vigil's dependencies in $DISTRIBUTION..."
run_in_container $DISTRIBUTION ./install-dependencies
echo "Testing executables are installed in $DISTRIBUTION..."
run_in_container $DISTRIBUTION ./tools_test.py ExecutablesTestCase
echo "Successfully installed vigil's dependencies in $DISTRIBUTION."
echo "Removing $DISTRIBUTION container..."
sudo rm -rf $DISTRIBUTION
done
rmdir $WORK_PATH
echo "Finished."