[arch-projects] [devtools] [PATCH] add ccache support

Dominik Heidler dheidler at gmail.com
Tue Jul 30 11:07:52 EDT 2013


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 <dheidler at gmail.com>
---
 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



More information about the arch-projects mailing list