diff options
Diffstat (limited to 'paru/dot-local/bin/makepkg-smart')
| -rwxr-xr-x | paru/dot-local/bin/makepkg-smart | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/paru/dot-local/bin/makepkg-smart b/paru/dot-local/bin/makepkg-smart new file mode 100755 index 0000000..e231d25 --- /dev/null +++ b/paru/dot-local/bin/makepkg-smart @@ -0,0 +1,51 @@ +#!/bin/bash + +echo "==> makepkg-smart: got input "$@"" >&2 + +DEFAULT_BUILDDIR="/tmp/makepkg" + +PERSIST_ROOT="$HOME/.cache/makepkg/build" + +KEEP_PKGS=" +neovim-bundled-git +" + +pkgname_from_pkgbuild() +{ + local _pkgname pkgname + pkgname="$(awk -F= '/^pkgname=/{gsub(/[()"]/,"",$2); print $2; exit}' PKGBUILD 2>/dev/null)" + if echo "$pkgname" | grep -q "\$_pkgname" 2>/dev/null; then + _pkgname="$(awk -F= '/^_pkgname=/{gsub(/[()"]/,"",$2); print $2; exit}' PKGBUILD 2>/dev/null)" + echo "${pkgname//\$_pkgname/"$_pkgname"}" + else + echo "$pkgname" + fi +} + +PKGNAME="$(pkgname_from_pkgbuild)" + +[ -z "$PKGNAME" ] && exec makepkg "$@" + +KEEP=false +for p in $KEEP_PKGS; do + [ "$PKGNAME" = "$p" ] && KEEP=true && break +done + +if $KEEP; then + export BUILDDIR="$PERSIST_ROOT/$PKGNAME" + mkdir -p "$BUILDDIR" + + export CC=gcc + export CXX=g++ + export CMAKE_C_COMPILER_LAUNCHER=ccache + export CMAKE_CXX_COMPILER_LAUNCHER=ccache + export CCACHE_DIR="$HOME/.cache/ccache" + export CCACHE_BASEDIR="$PWD" + export CCACHE_SLOPPINESS="time_macros" + + echo "==> makepkg-smart: using persistent BUILDDIR=$BUILDDIR with ccache" >&2 +else + export BUILDDIR="$DEFAULT_BUILDDIR" +fi + +exec makepkg "$@" |
