--- /dev/null
+#!/bin/bash
+
+COMMAND=$(basename $0)
+ROOT=/build
+CVSROOT=":pserver:anon@cvs.planet-lab.org:/cvs"
+DISTRO=onelab
+MAILTO="thierry.parmentelat@sophia.inria.fr"
+TAG=HEAD
+
+# plc chroot runs in UTC
+date=$(date -u +'%Y.%m.%d')
+
+### in the root context
+function do_chroot () {
+ cd /build/custom
+ (date ; svn update) >> update.log 2>&1
+ chroot /plc/devel/root su - build <<EOF
+$ROOT/nightly.sh $@
+EOF
+}
+
+# Notify recipient of failure
+function failure() {
+ if [ -n "$MAILTO" ] ; then
+ tail -c 8k ${BUILD}/log-build.txt | mail -s "Failures for ${BUILD}" $MAILTO
+ fi
+ exit 1
+}
+
+function success () {
+ if [ -n "$MAILTO" ] ; then
+ date | mail -s "Successfull build in ${BUILD}" $MAILTO
+ fi
+ exit 1
+}
+
+function create_base () {
+ BASE=${TAG/HEAD/`date +%Y.%m.%d`}
+ i=
+ while ! mkdir ${BASE}${i} 2>/dev/null ; do
+ [ -z ${i} ] && BASE=${BASE}.
+ i=$((${i}+1))
+ if [ $i -gt 100 ] ; then
+ echo "$0: Failed to create release directory `pwd`/${BASE}${i}"
+ exit 1
+ fi
+ done
+ BASE=${BASE}${i}
+}
+
+function use_base () {
+ [ ! -d $BASE ] && mkdir $BASE
+ if [ ! -d $BASE ] ; then
+ echo $COMMAND failed to create base $BASE
+ exit 1
+ fi
+}
+
+function manage_distro () {
+
+# DISTROFILE=$BUILD/$DISTRO.mk
+#
+# if [ -f $DISTROFILE ] ; then
+# echo Using $DISTROFILE
+# elif [ -f $ROOT/$DISTRO.mk ] ; then
+# echo Using $ROOT/$DISTRO.mk
+# ln -s $ROOT/$DISTRO.mk $DISTROFILE
+# else
+# echo Could not locate $DISTRO.mk
+# exit 1
+# fi
+#
+ DISTROFILE=$BUILD/$DISTRO.xml
+
+ if [ -f $DISTROFILE ] ; then
+ echo Using $DISTROFILE
+ elif [ -f $ROOT/$DISTRO.xml ] ; then
+ echo Using $ROOT/$DISTRO.xml
+ ln -s $ROOT/$DISTRO.xml $DISTROFILE
+ else
+ echo Could not locate $DISTRO.xml
+ exit 1
+ fi
+
+}
+
+function build () {
+ trap failure ERR INT
+ set -x
+
+ echo -n "============================== Starting $COMMAND on "
+ date
+
+ show_env
+
+ cd $ROOT
+ cvs -d $CVSROOT co -d $BASE build
+
+ manage_distro
+
+ echo "Running make IN build $(pwd)"
+ make TAG=${TAG} PLDISTRO=${DISTRO} -C $BASE
+
+ # only if successful
+ rm -f latest
+ ln -s $BASE latest
+
+ success
+}
+
+function show_env () {
+ echo ROOT=$ROOT
+ echo BASE=$BASE
+ echo TAG=$TAG
+ echo DISTRO=$DISTRO
+}
+
+function main () {
+
+ if [ -d /plc/devel/data ] ; then
+ do_chroot "$@"
+ else
+ while getopts "d:r:m:f:b:h" opt ; do
+ case $opt in
+ d) CVSROOT=$OPTARG ;;
+ r) TAG=$OPTARG ;;
+ m) MAILTO=$OPTARG ;;
+ f) DISTRO=$OPTARG ;;
+ b) BASE=$OPTARG ;;
+ h) usage ;;
+ esac
+ done
+ shift $(($OPTIND - 1))
+
+ cd $ROOT
+ ### determine BASE
+ # if specified, use it, otherwise create from date
+ if [ -z "$BASE" ] ; then
+ create_base
+ else
+ use_base $BASE
+ fi
+ BUILD=$ROOT/$BASE
+
+ build >> ${BUILD}/log-build.txt 2>&1
+ fi
+}
+
+##########
+main "$@"
--- /dev/null
+<?xml version="1.0"?>
+<!DOCTYPE comps PUBLIC "-//Red Hat, Inc.//DTD Comps info//EN" "comps.dtd">
+<comps>
+
+ <group>
+ <id>planetlab</id>
+ <name>PlanetLab</name>
+ <default>true</default>
+ <description>PlanetLab Node Packages</description>
+ <uservisible>false</uservisible>
+ <packagelist>
+ <packagereq type="mandatory">basesystem</packagereq>
+ <packagereq type="mandatory">bash</packagereq>
+ <packagereq type="mandatory">coreutils</packagereq>
+ <packagereq type="mandatory">cpio</packagereq>
+ <packagereq type="mandatory">e2fsprogs</packagereq>
+ <packagereq type="mandatory">ed</packagereq>
+ <packagereq type="mandatory">file</packagereq>
+ <packagereq type="mandatory">filesystem</packagereq>
+ <packagereq type="mandatory">glibc</packagereq>
+ <packagereq type="mandatory">hdparm</packagereq>
+ <packagereq type="mandatory">initscripts</packagereq>
+ <packagereq type="mandatory">iproute</packagereq>
+ <packagereq type="mandatory">iputils</packagereq>
+ <packagereq type="mandatory">kbd</packagereq>
+ <packagereq type="mandatory">kernel</packagereq>
+ <packagereq type="mandatory">libtermcap</packagereq>
+ <packagereq type="mandatory">passwd</packagereq>
+ <packagereq type="mandatory">procps</packagereq>
+ <packagereq type="mandatory">readline</packagereq>
+ <packagereq type="mandatory">fedora-release</packagereq>
+ <packagereq type="mandatory">rootfiles</packagereq>
+ <packagereq type="mandatory">rpm</packagereq>
+ <packagereq type="mandatory">setserial</packagereq>
+ <packagereq type="mandatory">setup</packagereq>
+ <packagereq type="mandatory">sysklogd</packagereq>
+ <packagereq type="mandatory">SysVinit</packagereq>
+ <packagereq type="mandatory">termcap</packagereq>
+ <packagereq type="mandatory">util-linux</packagereq>
+ <packagereq type="mandatory">vim-minimal</packagereq>
+
+ <packagereq type="default">authconfig</packagereq>
+ <packagereq type="default">shadow-utils</packagereq>
+
+ <packagereq type="default">anacron</packagereq>
+ <packagereq type="mandatory">at</packagereq>
+ <packagereq type="default">authconfig</packagereq>
+ <packagereq type="default">autofs</packagereq>
+ <packagereq type="mandatory">bc</packagereq>
+ <packagereq type="mandatory">bind-utils</packagereq>
+ <packagereq type="mandatory">bzip2</packagereq>
+ <packagereq type="mandatory">crontabs</packagereq>
+ <packagereq type="default">dhclient</packagereq>
+ <packagereq type="default">diffutils</packagereq>
+ <packagereq type="default">ethtool</packagereq>
+ <packagereq type="default" basearchonly="true">kernel-utils</packagereq>
+ <packagereq type="mandatory">logrotate</packagereq>
+ <packagereq type="mandatory">lsof</packagereq>
+ <packagereq type="default">logwatch</packagereq>
+ <packagereq type="mandatory">mailcap</packagereq>
+ <packagereq type="default">nano</packagereq>
+ <packagereq type="default">nc</packagereq>
+ <packagereq type="mandatory">netdump</packagereq>
+ <packagereq type="default">openssh-clients</packagereq>
+ <packagereq type="mandatory">parted</packagereq>
+ <packagereq type="mandatory">pciutils</packagereq>
+ <packagereq type="mandatory">psacct</packagereq>
+ <packagereq type="mandatory">quota</packagereq>
+ <packagereq type="default">rsh</packagereq>
+ <packagereq type="default">rsync</packagereq>
+ <packagereq type="default">sendmail</packagereq>
+ <packagereq type="default">sudo</packagereq>
+ <packagereq type="mandatory">telnet</packagereq>
+ <packagereq type="mandatory">traceroute</packagereq>
+ <packagereq type="mandatory">time</packagereq>
+ <packagereq type="mandatory">tmpwatch</packagereq>
+ <packagereq type="default">tcpdump</packagereq>
+ <packagereq type="default">openssh-server</packagereq>
+ <packagereq type="default">vixie-cron</packagereq>
+ <packagereq type="default">wget</packagereq>
+ <packagereq type="default">yum</packagereq>
+
+ <packagereq type="mandatory">curl</packagereq>
+ <packagereq type="mandatory">gzip</packagereq>
+ <packagereq type="mandatory">iptables</packagereq>
+ <packagereq type="mandatory">lvm</packagereq>
+ <packagereq type="mandatory">mkinitrd</packagereq>
+ <packagereq type="mandatory">ntp</packagereq>
+ <packagereq type="mandatory">perl</packagereq>
+ <packagereq type="mandatory">python</packagereq>
+ <packagereq type="mandatory">tar</packagereq>
+ <packagereq type="mandatory">expect</packagereq>
+
+ <packagereq type="mandatory">portmap</packagereq>
+ <packagereq type="mandatory">nfs-utils</packagereq>
+
+ <packagereq type="mandatory">schedutils</packagereq>
+
+ <packagereq type="default">vconfig</packagereq>
+
+ <packagereq type="mandatory">util-vserver</packagereq>
+ <packagereq type="mandatory">util-vserver-build</packagereq>
+ <packagereq type="mandatory">util-vserver-lib</packagereq>
+ <packagereq type="mandatory">util-vserver-core</packagereq>
+ <packagereq type="mandatory">util-vserver-sysv</packagereq>
+ <packagereq type="mandatory">util-vserver-legacy</packagereq>
+ <packagereq type="mandatory">util-vserver-python</packagereq>
+ <packagereq type="mandatory">util-python</packagereq>
+ <packagereq type="mandatory">NodeManager</packagereq>
+ <packagereq type="mandatory">NodeUpdate</packagereq>
+ <packagereq type="mandatory">PLBootServerRequest</packagereq>
+ <packagereq type="mandatory">PlanetLabAccounts</packagereq>
+ <packagereq type="mandatory">PlanetLabConf</packagereq>
+ <packagereq type="mandatory">pycurl</packagereq>
+ <packagereq type="mandatory">vnet</packagereq>
+ <packagereq type="mandatory">hotplug</packagereq>
+ <packagereq type="mandatory">pcmcia-cs</packagereq>
+ <packagereq type="mandatory">madwifi</packagereq>
+ <packagereq type="mandatory">wireless-tools</packagereq>
+
+ <packagereq type="mandatory">PlanetLabID</packagereq>
+ <packagereq type="mandatory">autofs</packagereq>
+ <packagereq type="mandatory">planetlab_sudo</packagereq>
+ <packagereq type="mandatory">pl_sshd</packagereq>
+ <packagereq type="mandatory">ipod</packagereq>
+ <packagereq type="mandatory">vserver-reference</packagereq>
+ <packagereq type="mandatory">vserver-system-packages</packagereq>
+ <packagereq type="mandatory">proper</packagereq>
+ <packagereq type="mandatory">pl_mom</packagereq>
+ <packagereq type="mandatory">PlanetLabAuth</packagereq>
+ <packagereq type="mandatory">netflow-utils</packagereq>
+ <packagereq type="mandatory">PLCAPI</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>vserver</id>
+ <name>VServer</name>
+ <uservisible>true</uservisible>
+ <description>VServer Reference Image</description>
+ <packagelist>
+ <packagereq type="mandatory">bash</packagereq>
+ <packagereq type="mandatory">coreutils</packagereq>
+ <packagereq type="mandatory">iputils</packagereq>
+ <packagereq type="mandatory">kernel-vserver</packagereq>
+
+ <packagereq type="mandatory">bzip2</packagereq>
+ <packagereq type="mandatory">crontabs</packagereq>
+ <packagereq type="default">diffutils</packagereq>
+ <packagereq type="mandatory">logrotate</packagereq>
+ <packagereq type="default">openssh-clients</packagereq>
+ <packagereq type="mandatory">passwd</packagereq>
+ <packagereq type="default">rsh</packagereq>
+ <packagereq type="default">rsync</packagereq>
+ <packagereq type="default">sudo</packagereq>
+ <packagereq type="default">tcpdump</packagereq>
+ <packagereq type="mandatory">telnet</packagereq>
+ <packagereq type="mandatory">traceroute</packagereq>
+ <packagereq type="mandatory">time</packagereq>
+ <packagereq type="default">vixie-cron</packagereq>
+ <packagereq type="default">wget</packagereq>
+ <packagereq type="default">yum</packagereq>
+
+ <packagereq type="mandatory">curl</packagereq>
+ <packagereq type="mandatory">gzip</packagereq>
+ <packagereq type="mandatory">perl</packagereq>
+ <packagereq type="mandatory">python</packagereq>
+ <packagereq type="mandatory">tar</packagereq>
+ </packagelist>
+ </group>
+
+ <group>
+ <id>bootcd</id>
+ <name>BootCD</name>
+ <uservisible>true</uservisible>
+ <description>BootCD Image</description>
+ <packagelist>
+ <packagereq type="mandatory">dhclient</packagereq>
+ <packagereq type="mandatory">bash</packagereq>
+ <packagereq type="mandatory">coreutils</packagereq>
+ <packagereq type="mandatory">iputils</packagereq>
+ <packagereq type="mandatory">kernel</packagereq>
+ <packagereq type="mandatory">hotplug</packagereq>
+ <packagereq type="mandatory">pcmcia-cs</packagereq>
+ <packagereq type="mandatory">madwifi</packagereq>
+ <packagereq type="mandatory">wireless-tools</packagereq>
+
+ <packagereq type="mandatory">bzip2</packagereq>
+ <packagereq type="mandatory">crontabs</packagereq>
+ <packagereq type="default">diffutils</packagereq>
+ <packagereq type="mandatory">logrotate</packagereq>
+ <packagereq type="default">openssh-clients</packagereq>
+ <packagereq type="mandatory">passwd</packagereq>
+ <packagereq type="default">rsh</packagereq>
+ <packagereq type="default">rsync</packagereq>
+ <packagereq type="default">sudo</packagereq>
+ <packagereq type="default">tcpdump</packagereq>
+ <packagereq type="mandatory">telnet</packagereq>
+ <packagereq type="mandatory">traceroute</packagereq>
+ <packagereq type="mandatory">time</packagereq>
+ <packagereq type="default">vixie-cron</packagereq>
+ <packagereq type="default">wget</packagereq>
+ <packagereq type="default">yum</packagereq>
+ <packagereq type="mandatory">curl</packagereq>
+ <packagereq type="mandatory">gzip</packagereq>
+ <packagereq type="mandatory">perl</packagereq>
+ <packagereq type="mandatory">python</packagereq>
+ <packagereq type="mandatory">tar</packagereq>
+ <packagereq type="mandatory">pciutils</packagereq>
+ <packagereq type="mandatory">kbd</packagereq>
+ <packagereq type="mandatory">authconfig</packagereq>
+ <packagereq type="mandatory">hdparm</packagereq>
+ <packagereq type="mandatory">lvm</packagereq>
+ <packagereq type="mandatory">lvm2</packagereq>
+ <packagereq type="mandatory">kexec-tools</packagereq>
+ <packagereq type="mandatory">gnupg</packagereq>
+ <packagereq type="mandatory">nano</packagereq>
+ <packagereq type="mandatory">parted</packagereq>
+ <packagereq type="mandatory">pyparted</packagereq>
+ <packagereq type="mandatory">openssh-server</packagereq>
+ <packagereq type="mandatory">openssh-clients</packagereq>
+ <packagereq type="mandatory">ncftp</packagereq>
+ <packagereq type="mandatory">dosfstools</packagereq>
+ <packagereq type="mandatory">dos2unix</packagereq>
+ <packagereq type="mandatory">bind-utils</packagereq>
+ <packagereq type="mandatory">sharutils</packagereq>
+ </packagelist>
+ </group>
+
+</comps>
--- /dev/null
+#!/bin/bash
+
+# we're getting called by cron, so just in case
+PATH=/bin:/usr/bin:$PATH
+
+COMMAND=$(basename $0)
+COMMANDDIR=$(dirname $0)
+COMMANDDIR=$(cd $COMMANDDIR; pwd -P)
+DATADIR=/backups
+DATE=$(date +%y-%m-%d-%H-%M-%S)
+
+LOGDIR=$DATADIR/aa-dumplog
+LOG=$LOGDIR/${DATE}.log
+LATESTLOG=latest.log
+
+REVISION="$Revision$"
+
+source $COMMANDDIR/functions.sh
+
+###
+
+case $(hostname) in
+ *build*)
+ DEFAULTS="subversion" ;;
+ *plc*|*private*)
+ DEFAULTS="planetlab4" ;;
+ *)
+ echo "$COMMAND: WARNING: no known defaults for hostname $(hostname)"
+ DEFAULTS=""
+ ;;
+esac
+
+DB_KEEPTIME=14
+DB_USER=pgsqluser
+
+SUBVERSION_KEEPTIME=7
+SUBVERSION_REPO=/svn
+
+function usage () {
+ echo "This is $COMMAND, $REVISION"
+ echo "Usage: $COMMAND [subversion]"
+ echo -e "\tkeyword 'subversion' : $SUBVERSION_REPO/ is dumped"
+# echo -e "\tkeyword 'apache' : $APACHE_ROOT/ is tared"
+# echo -e "\tkeyword 'env' : $ENV_ROOT/ is tared"
+# echo -e "\totherwise performs a dump of the given database"
+ echo -e "default arguments are $DEFAULTS"
+ exit 1
+}
+
+function dumpdb () {
+ database=$1; shift
+ output=$DATADIR/$database-$DATE.sql
+ latest=$database-latest.sql
+ echo "Dumping $database into $output (drop-mode)"
+ mysqldump --add-drop-table --user=$DB_USER $database > $output
+ manage_link $output $latest
+}
+
+function dumpsubversion () {
+ output=$DATADIR/subversion-$DATE.dump
+ latest=subversion-latest.dump
+ echo "Creating subversion archive in $output"
+ svnadmin dump $SUBVERSION_REPO/ > $output
+ manage_link $output $latest
+}
+
+function dumpregulardir () {
+ name=$1; shift
+ dumpdir=$1; shift
+ output=$DATADIR/$name-$DATE.tar
+ latest=$name-latest.tar
+ echo "Creating tar archive of $dumpdir into $output"
+ tar cf $output $dumpdir
+ manage_link $output $latest
+}
+
+function main () {
+
+ # give one or more target names on the command-line
+ args=""
+ if [[ -z "$@" ]] ; then
+ args="$DEFAULTS"
+ else
+ args="$@"
+ fi
+
+ [ -n "$DEBUG" ] && set -x
+
+ for arg in $args; do
+ case "$arg" in
+ -*)
+ usage ;;
+ subversion)
+ dumpsubversion
+ clean $DATADIR $SUBVERSION_KEEPTIME -name "$arg\*"
+ ;;
+# apache)
+# dumpregulardir $arg $APACHE_ROOT
+# clean $DATADIR $APACHE_KEEPTIME -name "$arg\*"
+# ;;
+# env)
+# dumpregulardir $arg $ENV_ROOT
+# clean $DATADIR $ENV_KEEPTIME -name "$arg\*"
+# ;;
+ *)
+ dumpdb $arg
+ clean $DATADIR $DB_KEEPTIME -name "$arg\*"
+ ;;
+ esac
+ done
+
+ clean $LOGDIR 14
+
+ manage_link $LOG $LATESTLOG
+}
+
+##############################
+# create log area
+mkdir -p $LOGDIR
+chmod g+w $LOGDIR
+
+for i in "$@" ; do
+ case "$i" in
+ -*)
+ usage ;;
+ esac
+done
+
+main "$@" > $LOG 2>&1