Users can set a ccache directory (which must be writeable by
the user nobody) to be mapped to /build/.ccache (which is the
directory, that ccache will use in the chroot)

Signed-off-by: Dominik Heidler <[email protected]>
---
 makechrootpkg.in | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/makechrootpkg.in b/makechrootpkg.in
index d7d3ecf..f04e715 100644
--- a/makechrootpkg.in
+++ b/makechrootpkg.in
@@ -21,6 +21,7 @@ run_namcap=false
 temp_chroot=false
 chrootdir=
 passeddir=
+ccachedir=
 declare -a install_pkgs
 declare -i ret=0
 
@@ -58,10 +59,11 @@ usage() {
        echo "           Default: $copy"
        echo '-n         Run namcap on the package'
        echo '-T         Build in a temporary directory'
+       echo '-C <dir>   The ccache directory to use'
        exit 1
 }
 
-while getopts 'hcur:I:l:nT' arg; do
+while getopts 'hcur:I:l:C:nT' arg; do
        case "$arg" in
                h) usage ;;
                c) clean_first=true ;;
@@ -71,6 +73,7 @@ while getopts 'hcur:I:l:nT' arg; do
                l) copy="$OPTARG" ;;
                n) run_namcap=true; makepkg_args="$makepkg_args -i" ;;
                T) temp_chroot=true; copy+="-$$" ;;
+               C) ccachedir="$OPTARG" ;;
                *) makepkg_args="$makepkg_args -$arg $OPTARG" ;;
        esac
 done
@@ -84,6 +87,11 @@ chrootdir=$(readlink -e "$passeddir")
 [[ ! -d $chrootdir ]] && die "No chroot dir defined, or invalid path 
'$passeddir'"
 [[ ! -d $chrootdir/root ]] && die "Missing chroot dir root directory. Try 
using: mkarchroot $chrootdir/root base-devel"
 
+# Canonicalize ccachedir, getting rid of trailing /
+if [[ "$ccachedir" != "" ]]; then
+       [[ ! -d $ccachedir ]] && die "Invalid path '%s' given for ccache 
directory" "$ccachedir"
+fi
+
 # Detect chrootdir filesystem type
 chroottype=$(stat -f -c %T "$chrootdir")
 
@@ -349,6 +357,7 @@ download_sources
 if arch-nspawn "$copydir" \
        --bind-ro="$PWD:/startdir_host" \
        --bind-ro="$SRCDEST:/srcdest_host" \
+       ${ccachedir:+"--bind=$ccachedir:/build/.ccache"} \
        /chrootbuild
 then
        move_products
-- 
1.8.3.4

Reply via email to