diff --git a/.gitignore b/.gitignore index 9ee6e38..79dbdfe 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ packages/*/.config packages/*/.cache packages/*/*.pkg.tar.* -packages/*/*.tar.gz \ No newline at end of file +packages/*/*.tar.gz +uploads diff --git a/add_aur.sh b/add_aur.sh index 42281b8..23c3185 100755 --- a/add_aur.sh +++ b/add_aur.sh @@ -1,4 +1,5 @@ #!/bin/zsh +packages=() while [ ! -z "$1" ] ; do pkg="$1" if [ -d "packages/${pkg}" ] ; then @@ -6,6 +7,7 @@ while [ ! -z "$1" ] ; do else git submodule add "https://aur.archlinux.org/${pkg}.git" "packages/${pkg}" fi - ./build_pkg.sh "$pkg" + packages+=("$pkg") shift done +./build.sh "$packages[@]" \ No newline at end of file diff --git a/build_pkg.sh b/build_pkg.sh index 3dbb85d..696c973 100755 --- a/build_pkg.sh +++ b/build_pkg.sh @@ -1,31 +1,61 @@ #!/bin/zsh -set -e -pkg="$1" -container=$(echo -n "makepkg-${pkg}" | sed 's;c++;cxx;g') -if [ -z "${pkg}" ] ; then - echo "kein Packet angegeben" - exit 1 -fi +declare -a CONTAINER +#CONTAINERS=() -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(){ + 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 +} -echo "Starte container ${container}" -rm -f "packages/${pkg}/"*.pkg.tar.* || true -podman run --detach --quiet --rm -v /etc/pacman.d/mirrorlist:/etc/pacman.d/mirrorlist -v $PWD:/src -v pkg_cache:/var/cache/pacman/pkg -w "/src/packages/$pkg" --userns keep-id --name "${container}" docker.io/archlinux:base-devel /src/wait.sh >/dev/null cleanup() { - podman stop -i "${container}" >/dev/null + echo "Stopping ${CONTAINERS[*]}" + podman stop -i "${CONTAINERS[@]}" >/dev/null } trap cleanup INT TERM ZERR EXIT -podman exec -ti -w "/src/packages/$pkg" -u 0 "${container}" /src/install_deps.sh -podman exec -t -w "/src/packages/${pkg}" "${container}" makepkg -C --skippgpcheck --nocheck +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 "packages/${pkg}/"*.pkg.tar.* +forgejo-uploader packete arch aur uploads/*.pkg.tar.*