aboutsummaryrefslogtreecommitdiff
path: root/paru/dot-local/bin/makepkg-smart
blob: ad4f3147072ddaddfcb54dc5b582159053455568 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/bin/bash

DEFAULT_BUILDDIR="/tmp/makepkg"

PERSIST_ROOT="$HOME/.cache/makepkg/build"

KEEP_PKGS="
neovim-bundled-git
quickshell-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

BOLDGREEN='\e[1;32m'
NOCOLOR='\e[0m'
BOLD='\e[0;1m'

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 -e "${BOLDGREEN}==>${NOCOLOR} ${BOLD}makepkg-smart:${NOCOLOR} using persistent BUILDDIR=$BUILDDIR with ccache" >&2
else
    export BUILDDIR="$DEFAULT_BUILDDIR"
fi

exec makepkg "$@"