arch-pkgs/.repo/build

95 lines
2.3 KiB
Bash
Executable file

#!/bin/bash
set -Eeuo pipefail
RED=$(tput setaf 1)
BOLD=$(tput bold)
RESET=$(tput sgr0)
readonly RED BOLD RESET
traperr() {
s=$?
echo "$0: $BASH_COMMAND"
exit $s
}
trap traperr ERR
PACKAGES=("$@")
EXTRA_ARGS=()
REPOSITORY="grawlinson"
if [ ${#PACKAGES[@]} -eq 0 ]; then
echo "${BOLD}${RED}ERROR:${RESET}${BOLD} no packages specified${RESET}"
exit 1
fi
for package in "${PACKAGES[@]}"; do
(
# change to package directory
cd "$package" || exit 1
# capture output for parsing dependencies
makepkg_output=$(makepkg --printsrcinfo)
#
# cache various downloads
#
# rust - crates
if grep -q "depends = rust\|cargo" <<<"$makepkg_output"; then
EXTRA_ARGS+=(
--bind-rw /var/cache/cargo/git:/build/.cargo/git
--bind-rw /var/cache/cargo/registry:/build/.cargo/registry
)
fi
# go - modules
if grep -q "depends = go" <<<"$makepkg_output"; then
EXTRA_ARGS+=(
--bind-rw /var/cache/golang/pkg:/build/go/pkg
--bind-rw /var/cache/golang/build:/build/.cache/go-build
)
fi
# dart - packages
if grep -q "depends = dart" <<<"$makepkg_output"; then
EXTRA_ARGS+=(--bind-rw /var/cache/dartlang:/build/.pub-cache)
fi
# javascript - npm/yarn/pkg
if grep -q "depends = npm\|yarn\|nodejs" <<<"$makepkg_output"; then
EXTRA_ARGS+=(
--bind-rw /var/cache/javascript/npm:/build/.npm
--bind-rw /var/cache/javascript/pkg-cache:/build/.pkg-cache
--bind-rw /var/cache/javascript/yarn:/build/.cache/yarn
--bind-rw /var/cache/javascript/electron:/build/.cache/electron
--bind-rw /var/cache/javascript/cypress:/build/.cache/Cypress
--bind-rw /var/cache/javascript/node:/build/.cache/node
)
fi
# nim - nim/nimble
if grep -q "depends = nim\|nimble" <<<"$makepkg_output"; then
EXTRA_ARGS+=(
--bind-rw /var/cache/nim/nim-cache:/build/.cache/nim
--bind-rw /var/cache/nim/nimble:/build/.nimble
)
fi
# build signed package in chroot & add to local repo
aur build \
--chroot \
--gpg-sign \
--remove \
--force \
--database="$REPOSITORY" \
--makepkg-conf="/etc/aurutils/makepkg-$REPOSITORY.conf" \
"${EXTRA_ARGS[@]}"
# reset EXTRA_ARGS
EXTRA_ARGS=()
)
done
exit 0
# vim: set ts=2 sw=2 et