From 4e5fbb94b908ca8682354ff0ae128abb9aaf5d9c Mon Sep 17 00:00:00 2001 From: Vincent Schweiger Date: Sat, 27 Jan 2024 15:26:26 +0100 Subject: [PATCH] initial commit --- Dockerfile | 6 +++ build_pkg.sh | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 113 insertions(+) create mode 100644 Dockerfile create mode 100755 build_pkg.sh diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..bcca942 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,6 @@ +FROM docker.io/library/archlinux:base-devel + +RUN useradd -ms /bin/bash builduser + +USER builduser +WORKDIR /home/builduser diff --git a/build_pkg.sh b/build_pkg.sh new file mode 100755 index 0000000..73950d1 --- /dev/null +++ b/build_pkg.sh @@ -0,0 +1,107 @@ +#!/bin/bash + +# banner, generated via toilet: +# toilet -F border -f future ArchBuild +banner="$( + cat </dev/null || exit 1 +} + +mpopd() { + command popd &>/dev/null || exit 1 +} + +function gclone() { + local repo="$1" + local dest="$2" + info "cloning $repo" + git clone --quiet "$repo" "$dest" +} + +function upd_pkg() { + local pkg="$1" + local out_dir="$PWD/$pkg" + local clone_url="https://aur.archlinux.org/$pkg.git" + + info "updating sources for $pkg" + + if [[ -d "$out_dir" ]]; then + mpushd "$out_dir" + if git rev-parse --is-inside-work-tree >/dev/null 2>&1; then + info "fetch remote ..." + git fetch --all + info "jump to current master ..." + git reset --hard origin/master + mpopd + else + warn "directory exists but git repo is invalid" + mpopd + warn "deleting old directory" + rm -rf "$out_dir" || exit 2 + gclone "$clone_url" "$out_dir" + fi + else + gclone "$clone_url" "$out_dir" + fi + + success "updated sources for $pkg" +} + +function bld_pkg() { + local pkg="$1" + local src_dir="$2" + + mpushd "$src_dir" + + info "building $pkg" + + makepkg -fsc &>/dev/null || exit 3 + + success "built ${pkg}" + ls ./*"-$(uname -m).pkg.tar."* +} + +echo "$banner" + +info "preparing build" + +pkgs=("$@") + +for pkg in "${pkgs[@]}"; do + upd_pkg "$pkg" +done + +for pkg in "${pkgs[@]}"; do + bld_pkg "$pkg" "$pkg" +done