#!/bin/bash
-# NOTE
-# as the svn diff operations from a remote location are so sssssslllllllooooooooowwwwww...
-# what we do:
-# maintain codebase in onelab.eu for historical reasons
-# (1) push scripts on princeton (manually run all-modules-update.sh)
-# (2) run the scripts cyclically over there through cron
-# and push the results on build.onelab.eu with all-modules.push.sh (as part of the cron job)
+# feb 2013 - mainline is now known as 5.2, remove that step in the output
+# meaning results are now in merely
+# http://build.onelab.eu/modules/version.html
#
+# reviewed in dec. 2010
+# moving back to running on the EU side
+#
# this script is a wrapper around the module-tools (version and diff)
# it is invoked cyclically
# prior to that, the following directories will have been svn updated :
-# ~/svn-build
-# ~/root/svn-build-4.2
+# ~/git-build
# avoid running several instances of this script
# when the svn server has problems, this can very well last quite a while
COMMAND=$(basename $0)
+# running as root on liquid
+OUTPUT=/build/modules
+WWWNAME=mainline
+LOCK=~/all-modules.run
# make sure the cyclic tasks do not interfere with manual usage
-WORKDIR_SVN=${HOME}/all-modules-svn
+# (i.e. do not use ~/modules)
WORKDIR_GIT=${HOME}/all-modules-git
-
-# make the command usable as non-root user at Princeton for more efficiency
-if [ "$(id -u)" == "0" ] ; then
- OUTPUT=/build/modules/slow
- LOCK=/var/run/all-modules.pid
-else
- OUTPUT=~/all-modules
- LOCK=~/all-modules.run
-fi
+########## sample config running on liquid
+#svnpath=http://svn.planet-lab.org/svn/
+#gitserver=git.onelab.eu
+#gituser=root
+#build=build
+#username=not-needed-as-we-dont-write
+#email=not-needed-as-we-dont-write
+##########
function do_update() {
build_dir=$1; shift
fi
}
-# usage: do_version dir workdir wwwname
+# usage: do_version dir workdir
function do_version () {
build_dir=$1; shift
workdir=$1; shift
- wwwname=$1; shift
- out_dir=$OUTPUT/$wwwname
+ out_dir=$OUTPUT
out_file=$out_dir/version.html
out_tmp=$out_dir/.version.html
mkdir -p $out_dir
- $build_dir/module-version $VERBOSE -w $workdir --www $wwwname -a &> $out_tmp
+ $build_dir/module-version $VERBOSE -w $workdir --www $WWWNAME -a &> $out_tmp
mv -f $out_tmp $out_file
}
-# usage: do_version dir workdir wwwname
+# usage: do_diff dir workdir
function do_diff () {
build_dir=$1; shift
workdir=$1; shift
- wwwname=$1; shift
- out_dir=$OUTPUT/$wwwname
+ out_dir=$OUTPUT
out_file=$out_dir/diff.html
out_tmp=$out_dir/.diff.html
mkdir -p $out_dir
- $build_dir/module-diff $VERBOSE -w $workdir --www $wwwname -a &> $out_tmp
+ $build_dir/module-diff $VERBOSE -w $workdir --www $WWWNAME -a &> $out_tmp
mv -f $out_tmp $out_file
}
shift
done
+ # is the stamp older than 2 hours ?
+ # in minutes
+ GRACE=120
+ is_old=$(find $LOCK -mmin +$GRACE 2> /dev/null)
+ if [ -n "$is_old" ] ; then
+ echo "$LOCK is older than $GRACE minutes - removing"
+ rm -f $LOCK
+ fi
+
[ -f $LOCK ] && exit 1
echo $$ > $LOCK
-# the 5.0 flavour now comes with a non-compatible flavour of the module-tools
-# and we need 2 distinc workdirs
- do_update ~/svn-build
- do_version ~/svn-build $WORKDIR_GIT 5.0
- do_diff ~/svn-build $WORKDIR_GIT 5.0
- do_update ~/svn-build-4.3
- do_version ~/svn-build-4.3 $WORKDIR_SVN 4.3
- do_diff ~/svn-build-4.3 $WORKDIR_SVN 4.3
+ do_update ~/git-build
+ do_version ~/git-build $WORKDIR_GIT
+ do_diff ~/git-build $WORKDIR_GIT
rm $LOCK
}
main "$@"
+
+########################################
+# this applied to the older version that was running at princeton
+# NOTE
+# as the svn diff operations from a remote location are so sssssslllllllooooooooowwwwww...
+# what we do:
+# maintain codebase in onelab.eu for historical reasons
+# (1) push scripts on princeton (manually run all-modules-update.sh)
+# (2) run the scripts cyclically over there through cron
+# and push the results on build.onelab.eu with all-modules.push.sh (as part of the cron job)
+#