Support wrapper script on Debian 12 Cloud image

- Support *.source files in /etc/apt/sources
- Copy over /etc/apt/mirrors
- Install ca-certificates package for https repositories
- Don't rely on the local /etc/groups file being complete enough
  for the chroot
This commit is contained in:
matt335672 2024-09-06 14:33:18 +01:00
parent 791dc3f95c
commit 2e083f6a18

View File

@ -51,7 +51,11 @@ BUILDROOT=/var/lib/pa-build/$USER
# Extra packages to install in the build root which the wrapped script # Extra packages to install in the build root which the wrapped script
# may be using. These are packages available by default when using # may be using. These are packages available by default when using
# GitHub actions # GitHub actions
WRAPPED_SCRIPT_DEPS="sudo lsb-release" #
# ca-certificates are needed to fetch updates over https
#
# This list is comma-separated
WRAPPED_SCRIPT_DEPS="ca-certificates,sudo,lsb-release"
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# S U I T E E X I S T S # S U I T E E X I S T S
@ -113,11 +117,12 @@ RunWrappedScript()
# -d : Directory to switch to before running command # -d : Directory to switch to before running command
schroot="schroot -c pa-build-$USER -d /build" schroot="schroot -c pa-build-$USER -d /build"
# Install extra dependencies # Update the buildroot
$schroot -u root -- apt-get update $schroot -u root -- apt-get update
$schroot -u root -- apt-get install -y $WRAPPED_SCRIPT_DEPS
# Allow normal user to sudo without a password # Allow normal user to sudo without a password. We may need to add the
# normal user, as it probably isn't created by debootstrap
$schroot -u root -- useradd -m $USER || :
$schroot -u root -- \ $schroot -u root -- \
/bin/sh -c "echo '$USER ALL=(ALL) NOPASSWD:ALL'>/etc/sudoers.d/nopasswd-$USER" /bin/sh -c "echo '$USER ALL=(ALL) NOPASSWD:ALL'>/etc/sudoers.d/nopasswd-$USER"
$schroot -u root -- chmod 400 /etc/sudoers.d/nopasswd-$USER $schroot -u root -- chmod 400 /etc/sudoers.d/nopasswd-$USER
@ -130,7 +135,7 @@ RunWrappedScript()
# M A I N # M A I N
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
debootstrap_mirror="" debootstrap_mirror=""
debootstrap_switches="" debootstrap_switches="--include=$WRAPPED_SCRIPT_DEPS"
debootstrap_suite="" debootstrap_suite=""
# Parse command line switches # Parse command line switches
@ -214,12 +219,17 @@ echo "- Creating schroot config file $schroot_conf"
echo "root-users=$USER" echo "root-users=$USER"
echo "users=$USER" echo "users=$USER"
echo "type=directory" echo "type=directory"
# Make sure we don't clobber /etc/passwd, /etc/group (etc) which
# have been created by debootstrap
echo "setup.nssdatabases="
} | sudo tee $schroot_conf >/dev/null || exit $? } | sudo tee $schroot_conf >/dev/null || exit $?
# Copy some files to the build root # Copy some files to the build root
for file in $(find /etc/apt/ /etc/apt/sources.list.d -maxdepth 1 -type f -name '*.list'); do for file in $(find /etc/apt/ /etc/apt/sources.list.d/ /etc/apt/mirrors/ \
-maxdepth 1 \
-type f \( -name '*.list' -o -name '*.sources' \) ); do
echo "- Copying $file to the root" echo "- Copying $file to the root"
sudo install -m 0644 $file $BUILDROOT/$file || exit $? sudo install -Dm 0644 $file $BUILDROOT/$file || exit $?
done done
# Create a separate directory in $BUILDROOT to hold the build # Create a separate directory in $BUILDROOT to hold the build