#!/bin/zsh declare -a CONTAINER #CONTAINERS=() new_env(){ echo "Starte container ${container}" podman run --detach --quiet --rm\ -v /etc/pacman.d/mirrorlist:/etc/pacman.d/mirrorlist\ -v "$PWD:/src"\ -v pkg_cache:/var/cache/pacman/pkg\ -v "$PWD/uploads:/uploads"\ -e PKGDEST="/uploads"\ -e BUILDDIR=/tmp/build\ -e SRCDEST=/tmp/src\ -e XDG_CACHE_HOME=/tmp/cache\ -e XDG_CONFIG_HOME=/tmp/config\ -e CARGO_HOME=/tmp/cargo\ -e GOPATH=/tmp/go\ -e HOME=/tmp/home\ -w "/src/packages/$pkg"\ --userns keep-id --name "${container}"\ docker.io/archlinux:base-devel /src/wait.sh >/dev/null CONTAINERS+=("${container}") } build_pkg(){ local pkg pkg=$(basename "$1") local container container=$(echo -n "makepkg-${pkg}" | sed 's;c++;cxx;g') if [ -z "${pkg}" ] ; then echo "kein Packet angegeben" exit 1 fi if [ ! -d "packages/${pkg}" ] ; then echo "Packet ${pkg} existiert noch nicht" exit 1 fi if [ ! -f "packages/${pkg}/.SRCINFO" ] ; then echo ".SRCINFO fehlt von ${pkg}" exit 1 fi new_env "$pkg" podman exec -ti -w "/src/packages/$pkg" -u 0 "${container}" /src/install_deps.sh || return 1 podman exec -t -w "/src/packages/${pkg}" "${container}" makepkg -C --skippgpcheck --nocheck || return 1 } cleanup() { echo "Stopping ${CONTAINERS[*]}" podman stop -i "${CONTAINERS[@]}" >/dev/null } trap cleanup INT TERM ZERR EXIT while [ -n "$1" ] ; do build_pkg "$1" || echo Failed to build "$1" shift done export $(echo 'url=forgejo://upload' | git-credential-keepassxc get --json | jq -r '"GITHUB_TOKEN="+.password+" GITHUB_SERVER_URL="+.username') forgejo-uploader packete arch aur uploads/*.pkg.tar.*