From 78444c2e76297ecf0e88485f735e2ea3ce3ac5ef Mon Sep 17 00:00:00 2001 From: Sitaram Chamarty Date: Sun, 3 Apr 2011 20:16:36 +0530 Subject: [PATCH] gl-system-install: optional 4th arg to help packagers (buildroot in RPM-speak, DESTDIR in DEB-speak) based on a patch sent by Francis Galiegue (fgaliegue at gmail) --- src/gl-system-install | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/src/gl-system-install b/src/gl-system-install index 7ae3078..2a82527 100755 --- a/src/gl-system-install +++ b/src/gl-system-install @@ -11,7 +11,11 @@ usage() { echo " $0 /usr/local/bin /var/gitolite/conf /var/gitolite/hooks In this example, all the binaries go to /usr/local/bin, and the shared - conf and hooks files/directories go to the other 2 directories given + conf and hooks files/directories go to the other 2 directories given. All + the 3 paths supplied MUST be absolute. + + [RPM packagers: you can supply a 4th argument to specify a 'buildroot' + directory. DEB folks would call this a 'DESTDIR', I believe.] " exit 1; } @@ -20,19 +24,25 @@ die() { echo "$@"; echo; usage; exit 1; } >&2 [ -z "$3" ] && usage -gl_bin_dir=$1 -[ -d $gl_bin_dir ] || die "$gl_bin_dir not found" -gl_conf_dir=$2 -[ -d $gl_conf_dir ] || die "$gl_conf_dir not found" -gl_hooks_dir=$3 -[ -d $gl_hooks_dir ] || die "$gl_hooks_dir not found" +validate_dir() { + echo $1 | grep ^/ >/dev/null || die "$1 should be an absolute path" + [ -d $1 ] || mkdir -p $1 || die "$1 does not exist and could not be created" +} + +# if we have a buildroot, set that up first +buildroot=$4; +[ -n "$buildroot" ] && validate_dir $buildroot +[ -n "$buildroot" ] && buildroot=$buildroot/ +gl_bin_dir=$1; validate_dir $buildroot$gl_bin_dir +gl_conf_dir=$2; validate_dir $buildroot$gl_conf_dir +gl_hooks_dir=$3; validate_dir $buildroot$gl_hooks_dir bindir=`echo $0 | perl -lpe 's/^/$ENV{PWD}\// unless /^\//; s/\/[^\/]+$//;'` cd $bindir/.. # we assume the standard gitolite source tree is here! -cp src/* $gl_bin_dir || die "cp src/* to $gl_bin_dir failed" -rm $gl_bin_dir/gl-easy-install -perl -lpi -e "s(^GL_PACKAGE_CONF=.*)(GL_PACKAGE_CONF=$gl_conf_dir)" $gl_bin_dir/gl-setup +cp src/* $buildroot$gl_bin_dir || die "cp src/* to $buildroot$gl_bin_dir failed" +rm $buildroot$gl_bin_dir/gl-easy-install +perl -lpi -e "s(^GL_PACKAGE_CONF=.*)(GL_PACKAGE_CONF=$gl_conf_dir)" $buildroot$gl_bin_dir/gl-setup # record which version is being sent across; we assume it's HEAD if git rev-parse --is-inside-work-tree >/dev/null 2>&1 @@ -42,12 +52,12 @@ else [ -f conf/VERSION ] || echo '(unknown)' > conf/VERSION fi -cp -R conf/* $gl_conf_dir || die "cp conf/* to $gl_conf_dir failed" +cp -R conf/* $buildroot$gl_conf_dir || die "cp conf/* to $buildroot$gl_conf_dir failed" perl -lpi \ -e "s(^#\s*\\\$GL_PACKAGE_CONF\s*=.*)(\\\$GL_PACKAGE_CONF = '$gl_conf_dir';)" \ - $gl_conf_dir/example.gitolite.rc + $buildroot$gl_conf_dir/example.gitolite.rc perl -lpi \ -e "s(^#\s*\\\$GL_PACKAGE_HOOKS\s*=.*)(\\\$GL_PACKAGE_HOOKS = '$gl_hooks_dir';)" \ - $gl_conf_dir/example.gitolite.rc + $buildroot$gl_conf_dir/example.gitolite.rc -cp -R hooks/* $gl_hooks_dir || die "cp hooks/* to $gl_hooks_dir failed" +cp -R hooks/* $buildroot$gl_hooks_dir || die "cp hooks/* to $buildroot$gl_hooks_dir failed"