initial commit
commit
4e5fbb94b9
|
@ -0,0 +1,6 @@
|
|||
FROM docker.io/library/archlinux:base-devel
|
||||
|
||||
RUN useradd -ms /bin/bash builduser
|
||||
|
||||
USER builduser
|
||||
WORKDIR /home/builduser
|
|
@ -0,0 +1,107 @@
|
|||
#!/bin/bash
|
||||
|
||||
# banner, generated via toilet:
|
||||
# toilet -F border -f future ArchBuild
|
||||
banner="$(
|
||||
cat <<EOF
|
||||
┌─────────────────────────┐
|
||||
│┏━┓┏━┓┏━╸╻ ╻┏┓ ╻ ╻╻╻ ╺┳┓│
|
||||
│┣━┫┣┳┛┃ ┣━┫┣┻┓┃ ┃┃┃ ┃┃│
|
||||
│╹ ╹╹┗╸┗━╸╹ ╹┗━┛┗━┛╹┗━╸╺┻┛│
|
||||
└─────────────────────────┘
|
||||
EOF
|
||||
)"
|
||||
|
||||
# colors
|
||||
cYLW="$(tput setaf 221)"
|
||||
cRST="$(tput sgr0)"
|
||||
cGRN="$(tput setaf 119)"
|
||||
cGRY="$(tput setaf 105)"
|
||||
|
||||
# help diagnose errors
|
||||
LANG=C
|
||||
|
||||
function info() {
|
||||
printf "[*] $cGRY%s$cRST\n" "$1"
|
||||
}
|
||||
|
||||
function warn() {
|
||||
printf "[!] $cYLW%s$cRST\n" "$1"
|
||||
}
|
||||
|
||||
function success() {
|
||||
printf "[+] $cGRN%s$cRST\n" "$1"
|
||||
}
|
||||
|
||||
# re-declare pushd/popd to remove stack output
|
||||
mpushd() {
|
||||
command pushd "$@" &>/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
|
Loading…
Reference in New Issue