build: cache Rust/Go downloads when required

This commit is contained in:
George Rawlinson 2021-10-29 06:46:08 +00:00
parent 03f4517adf
commit 3248cee07f
Signed by: grawlinson
GPG Key ID: E0959FEA8B550539
1 changed files with 18 additions and 3 deletions

View File

@ -14,7 +14,8 @@ traperr() {
trap traperr ERR
PACKAGES=( "$@" )
PACKAGES=("$@")
EXTRA_ARGS=()
if [ ${#PACKAGES[@]} -eq 0 ]; then
echo "${BOLD}${RED}ERROR:${RESET}${BOLD} no packages specified${RESET}"
@ -24,7 +25,20 @@ fi
for package in "${PACKAGES[@]}"; do
(
# change to package directory
cd "$package" || exit 1;
cd "$package" || exit 1
# capture output for parsing dependencies
makepkg_output=$(makepkg --printsrcinfo)
# cache downloaded crates
if grep -q "depends = rust\|cargo" <<<"$makepkg_output"; then
EXTRA_ARGS+=(--bind-rw /var/cache/cargo:/build/.cargo)
fi
# cache downloaded modules
if grep -q "depends = go" <<<"$makepkg_output"; then
EXTRA_ARGS+=(--bind-rw /var/cache/golang:/build/go)
fi
# build signed package in chroot & add to local repo
aur build \
@ -32,7 +46,8 @@ for package in "${PACKAGES[@]}"; do
--gpg-sign \
--remove \
--force \
--makepkg-conf=/etc/aurutils/makepkg-grawlinson.conf
--makepkg-conf=/etc/aurutils/makepkg-grawlinson.conf \
"${EXTRA_ARGS[@]}"
)
done