aboutsummaryrefslogtreecommitdiff
path: root/paru/dot-local/bin/makepkg-smart
diff options
context:
space:
mode:
authorMohammad Reza Karimi <m.r.karimi.j@gmail.com>2026-01-24 19:24:55 -0500
committerMohammad Reza Karimi <m.r.karimi.j@gmail.com>2026-01-24 19:24:55 -0500
commite2a70a92822b22633562e9695c300efec2b5cbeb (patch)
treefbd1658be1ab5edb1470d9a8e4b758818cc7124c /paru/dot-local/bin/makepkg-smart
parent4052357e021085bc1c761108446ee09a778ade15 (diff)
updates
Diffstat (limited to 'paru/dot-local/bin/makepkg-smart')
-rwxr-xr-xparu/dot-local/bin/makepkg-smart51
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 "$@"