
It took a moment to work out that there is actually no way of bootstrapping an arch environment without permanently installing things to the host system! So we just download a live image and unpack it. Then after that, getting erlang to work was very easy, just install it, install zx, run. No R26 incompatibility problems, life is good!
103 lines
1.9 KiB
Bash
Executable File
103 lines
1.9 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
if test `id -u` -ne 0
|
|
then
|
|
echo "$0 must be run as root."
|
|
return
|
|
fi
|
|
|
|
set -e
|
|
|
|
FRESH=clean_environment
|
|
ROOT=test_environment
|
|
|
|
add_mount() {
|
|
if mountpoint -q "$ROOT$1"
|
|
then
|
|
echo "$ROOT$1 already mounted."
|
|
else
|
|
echo "Mounting $2$1 to $ROOT$1"
|
|
mkdir -p "$ROOT$1"
|
|
mount -o bind "$2$1" "$ROOT$1"
|
|
fi
|
|
}
|
|
|
|
remove_mount() {
|
|
if mountpoint -q "$ROOT$1"
|
|
then
|
|
echo "Unmounting $ROOT$1"
|
|
umount -l "$ROOT$1"
|
|
fi
|
|
}
|
|
|
|
add_mounts() {
|
|
add_mount / "$ROOT"
|
|
add_mount /proc
|
|
add_mount /sys
|
|
add_mount /dev
|
|
add_mount /dev/pts
|
|
add_mount /tmp/.X11-unix
|
|
}
|
|
|
|
remove_mounts() {
|
|
remove_mount /tmp/.X11-unix
|
|
remove_mount /dev/pts
|
|
remove_mount /dev
|
|
remove_mount /sys
|
|
remove_mount /proc
|
|
remove_mount /
|
|
}
|
|
|
|
remove_environment() {
|
|
if test -d "$ROOT"
|
|
then
|
|
# Call this script that automatically unmounts the mount points too.
|
|
remove_mounts
|
|
echo "Removing $ROOT"
|
|
rm -r "$ROOT"
|
|
else
|
|
echo "No environment found at $ROOT. Doing nothing."
|
|
fi
|
|
}
|
|
|
|
remove_everything() {
|
|
if test -d "$ROOT"
|
|
then
|
|
# Call this script that automatically unmounts the mount points too.
|
|
remove_environment
|
|
fi
|
|
|
|
if test -d "$FRESH"
|
|
then
|
|
echo "Removing $FRESH"
|
|
rm -r "$FRESH"
|
|
fi
|
|
|
|
if test -d debootstrap
|
|
then
|
|
echo "Removing debootstrap"
|
|
rm -r debootstrap
|
|
fi
|
|
|
|
if test -f pkglist.x86_64.txt
|
|
then
|
|
echo "Removing pkglist.x86_64.txt"
|
|
rm pkglist.x86_64.txt
|
|
fi
|
|
|
|
if test -f archlinux-bootstrap*.tar.zst
|
|
then
|
|
echo "Removing archlinux bootstrap tarballs."
|
|
rm archlinux-bootstrap*.tar.zst
|
|
fi
|
|
}
|
|
|
|
case "$1" in
|
|
everything) remove_everything ;;
|
|
mounts) remove_mounts ;;
|
|
add_mounts) add_mounts ;;
|
|
environment) remove_environment ;;
|
|
"") remove_environment ;;
|
|
esac
|
|
|