Refactor container build and installation pipeline to use configurable Makefile parameters (e.g. DISTROS, base images) and propagate them through all build, install, and test scripts
This commit is contained in:
54
scripts/installation/arch/aur-builder-setup.sh
Executable file
54
scripts/installation/arch/aur-builder-setup.sh
Executable file
@@ -0,0 +1,54 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# ------------------------------------------------------------
|
||||
# aur-builder-setup.sh
|
||||
#
|
||||
# Setup helper for an 'aur_builder' user and yay on Arch-based
|
||||
# systems. Intended for host usage and can also be used in
|
||||
# containers if desired.
|
||||
# ------------------------------------------------------------
|
||||
|
||||
echo "[aur-builder-setup] Checking for pacman..."
|
||||
if ! command -v pacman >/dev/null 2>&1; then
|
||||
echo "[aur-builder-setup] pacman not found – this is not an Arch-based system. Skipping."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [[ "${EUID:-0}" -ne 0 ]]; then
|
||||
ROOT_CMD="sudo"
|
||||
else
|
||||
ROOT_CMD=""
|
||||
fi
|
||||
|
||||
echo "[aur-builder-setup] Installing base-devel, git, sudo..."
|
||||
${ROOT_CMD} pacman -Syu --noconfirm
|
||||
${ROOT_CMD} pacman -S --needed --noconfirm base-devel git sudo
|
||||
|
||||
echo "[aur-builder-setup] Ensuring aur_builder group/user..."
|
||||
if ! getent group aur_builder >/dev/null 2>&1; then
|
||||
${ROOT_CMD} groupadd -r aur_builder
|
||||
fi
|
||||
|
||||
if ! id -u aur_builder >/dev/null 2>&1; then
|
||||
${ROOT_CMD} useradd -m -r -g aur_builder -s /bin/bash aur_builder
|
||||
fi
|
||||
|
||||
echo "[aur-builder-setup] Configuring sudoers for aur_builder..."
|
||||
${ROOT_CMD} bash -c "echo '%aur_builder ALL=(ALL) NOPASSWD: /usr/bin/pacman' > /etc/sudoers.d/aur_builder"
|
||||
${ROOT_CMD} chmod 0440 /etc/sudoers.d/aur_builder
|
||||
|
||||
if command -v sudo >/dev/null 2>&1; then
|
||||
RUN_AS_AUR=(sudo -u aur_builder bash -lc)
|
||||
else
|
||||
RUN_AS_AUR=(su - aur_builder -c)
|
||||
fi
|
||||
|
||||
echo "[aur-builder-setup] Ensuring yay is installed for aur_builder..."
|
||||
if ! "${RUN_AS_AUR[@]}" 'command -v yay >/dev/null 2>&1'; then
|
||||
"${RUN_AS_AUR[@]}" 'cd ~ && rm -rf yay && git clone https://aur.archlinux.org/yay.git && cd yay && makepkg -si --noconfirm'
|
||||
else
|
||||
echo "[aur-builder-setup] yay already installed."
|
||||
fi
|
||||
|
||||
echo "[aur-builder-setup] Done."
|
||||
30
scripts/installation/arch/dependencies.sh
Executable file
30
scripts/installation/arch/dependencies.sh
Executable file
@@ -0,0 +1,30 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
|
||||
echo "[arch/dependencies] Installing Arch build dependencies..."
|
||||
|
||||
pacman -Syu --noconfirm
|
||||
pacman -S --noconfirm --needed \
|
||||
base-devel \
|
||||
git \
|
||||
rsync \
|
||||
curl \
|
||||
ca-certificates \
|
||||
xz
|
||||
|
||||
pacman -Scc --noconfirm
|
||||
|
||||
# Always run AUR builder setup for Arch
|
||||
AUR_SETUP="${SCRIPT_DIR}/aur-builder-setup.sh"
|
||||
|
||||
if [[ ! -x "${AUR_SETUP}" ]]; then
|
||||
echo "[arch/dependencies] ERROR: AUR builder setup script not found or not executable: ${AUR_SETUP}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "[arch/dependencies] Running AUR builder setup..."
|
||||
bash "${AUR_SETUP}"
|
||||
|
||||
echo "[arch/dependencies] Done."
|
||||
19
scripts/installation/arch/package.sh
Executable file
19
scripts/installation/arch/package.sh
Executable file
@@ -0,0 +1,19 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
echo "[arch/package] Building Arch package (makepkg --nodeps)..."
|
||||
|
||||
if id aur_builder >/dev/null 2>&1; then
|
||||
echo "[arch/package] Using 'aur_builder' user for makepkg..."
|
||||
chown -R aur_builder:aur_builder "$(pwd)"
|
||||
su aur_builder -c "cd '$(pwd)' && rm -f package-manager-*.pkg.tar.* && makepkg --noconfirm --clean --nodeps"
|
||||
else
|
||||
echo "[arch/package] WARNING: user 'aur_builder' not found, running makepkg as current user..."
|
||||
rm -f package-manager-*.pkg.tar.*
|
||||
makepkg --noconfirm --clean --nodeps
|
||||
fi
|
||||
|
||||
echo "[arch/package] Installing generated Arch package..."
|
||||
pacman -U --noconfirm package-manager-*.pkg.tar.*
|
||||
|
||||
echo "[arch/package] Done."
|
||||
Reference in New Issue
Block a user