From d1aea0930d93817f80b59468c3d5c3b35d0690cb Mon Sep 17 00:00:00 2001 From: Kris Kennaway Date: Sat, 26 Jul 2008 15:16:16 +0000 Subject: [PATCH] Script run from cron to regularly update the master ZFS copies of the ports and source trees. Since we have >=1 consumer of these trees that run frequently but do not insist on up-to-the-second trees, it makes sense to "pre-update" them regularly and then then re-use in all of the consumers, instead of potentially doing several updates simultaneously or on demand. Consumers can clone the ZFS snapshot into their local filesystem which takes a couple of seconds instead of minutes or tens of minutes for the CVS update. We update to a date stamp instead of "." because this avoids ambiguity of commits that happen while the tree update is in progress (unfortunately it's slower). --- Tools/portbuild/scripts/updatesnap | 63 ++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100755 Tools/portbuild/scripts/updatesnap diff --git a/Tools/portbuild/scripts/updatesnap b/Tools/portbuild/scripts/updatesnap new file mode 100755 index 000000000000..f968c4f2e626 --- /dev/null +++ b/Tools/portbuild/scripts/updatesnap @@ -0,0 +1,63 @@ +#!/bin/sh +# +# Update the master ports and source trees that are used by package builds +# and other consumers + +base=/a/snap +zbase=a/snap + +srepo=/r/ncvs +prepo=/r/pcvs + +stamp() { + fulldate=$1 + date -j -f %+ "${fulldate}" +%Y%m%d%H%M%S +} + +finish() { + err=$1 + + end=$(date +%s) + echo "Finished at $(date)" + len=$((end-begin)) + echo "Duration = $(date -j -f %s +%H:%M:%S ${len})" + exit 1 +} + +begin=$(date +%s) +echo "Started at $(date)" + +# We need to preserve group writability so portmgr group can write +umask 002 + +#cvsup -g /root/cvs-supfile || finish 1 + +cd $base/ports +fulldate=$(date) +cvs -Rq -d ${prepo} update -PdA -D "${fulldate}" +echo ${fulldate} > cvsdone +snapdate=$(stamp ${fulldate}) +zfs snapshot ${zbase}/ports@${snapdate} + +cd $base/src-HEAD +fulldate=$(date) +cvs -Rq -d ${srepo} update -PdA -D "${fulldate}" +echo ${fulldate} > cvsdone +snapdate=$(stamp ${fulldate}) +zfs snapshot ${zbase}/src-HEAD@${snapdate} + +cd $base/src-6 +fulldate=$(date) +cvs -Rq -d ${srepo} update -PdA -D "${fulldate}" -r RELENG_6 +echo ${fulldate} > cvsdone +snapdate=$(stamp ${fulldate}) +zfs snapshot ${zbase}/src-6@${snapdate} + +cd $base/src-7 +fulldate=$(date) +cvs -Rq -d ${srepo} update -PdA -D "${fulldate}" -r RELENG_7 +echo ${fulldate} > cvsdone +snapdate=$(stamp ${fulldate}) +zfs snapshot ${zbase}/src-7@${snapdate} + +finish 0