#!/bin/sh # # build_snapshots.sh # # Copyright (c) 2007-2015 Electric Sheep Fencing, LLC # All rights reserved # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE pfSense PROJECT ``AS IS'' AND ANY # EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE pfSense PROJECT OR # ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED # OF THE POSSIBILITY OF SUCH DAMAGE. # if [ ! -f ./build.conf ]; then echo "You must first run ./set_version.sh !" exit 1 fi NO_UPLOAD="" LOOPED_SNAPSHOTS="" # Handle command line arguments while test "$1" != "" ; do case $1 in --noupload|-u) NO_UPLOAD="-u" ;; --looped) LOOPED_SNAPSHOTS="true" esac shift done # Source ${PRODUCT_NAME} / FreeSBIE variables # *** DO NOT SOURCE BUILDER_COMMON.SH! # *** IT WILL BREAK EVERYTHING FOR # *** SOME UNKNOWN LAYERING REASON. # *** 04/07/2008, 11/04/2009 echo ">>> Execing build.conf" . ./builder_defaults.sh # Keeps track of how many time builder has looped BUILDCOUNTER=0 # Local variables that are used by builder scripts STAGINGAREA=/tmp/staging RSYNCIP="snapshots.pfsense.org" RSYNCKBYTELIMIT="248000" export SNAPSHOTSLOGFILE=${SNAPSHOTSLOGFILE:-"$SCRATCHDIR/snapshots-build.log"} export SNAPSHOTSLASTUPDATE=${SNAPSHOTSLASTUPDATE:-"$SCRATCHDIR/snapshots-lastupdate.log"} export MASTER_BUILDER_SSH_LOG_DEST=${MASTER_BUILDER_SSH_LOG_DEST:-snapshots@${RSYNCIP}:/usr/local/www/snapshots/logs/${PRODUCT_NAME}_${GIT_REPO_BRANCH_OR_TAG}/${TARGET}/build.log} # Ensure directories exist mkdir -p $STAGINGAREA echo "" > $SNAPSHOTSLOGFILE echo "" > $SNAPSHOTSLASTUPDATE git_last_commit() { if [ -d "${1}/.git" ]; then (cd ${1} && git fetch origin && git rebase) >/dev/null CURRENT_COMMIT=$(cd ${1} && git log -1 --format='%H') echo "$CURRENT_COMMIT" fi } # This routine is called in between runs. We # will sleep for a bit and check for new commits # in between sleeping for short durations. sleep_between_runs() { COUNTER=0 while [ $COUNTER -lt $maxsleepvalue ]; do sleep 60 PRODUCT_CURRENT_COMMIT=$(git_last_commit "${GIT_REPO_DIR}/${GIT_REPO_BRANCH_OR_TAG}") if [ "${PRODUCT_LAST_COMMIT}" != "${PRODUCT_CURRENT_COMMIT}" ]; then update_status ">>> New commit: $CURRENT_AUTHOR - $PRODUCT_CURRENT_COMMIT .. No longer sleepy." COUNTER=$(($maxsleepvalue + 60)) export PRODUCT_LAST_COMMIT="${PRODUCT_CURRENT_COMMIT}" fi TOOLS_CURRENT_COMMIT=$(git_last_commit "${BUILDER_TOOLS}") if [ "${TOOLS_LAST_COMMIT}" != "${TOOLS_CURRENT_COMMIT}" ]; then update_status ">>> New commit: $CURRENT_AUTHOR - $TOOLS_CURRENT_COMMIT .. No longer sleepy." COUNTER=$(($maxsleepvalue + 60)) export TOOLS_LAST_COMMIT="${TOOLS_CURRENT_COMMIT}" fi COUNTER=$(($COUNTER + 60)) done if [ $COUNTER -ge $maxsleepvalue ]; then update_status ">>> Sleep timer expired. Restarting build." maxsleepvalue=0 COUNTER=0 fi } # This routine is called to write out to stdout # a string. The string is appended to $SNAPSHOTSLOGFILE # and we scp the log file to the builder host if # needed for the real time logging functions. update_status() { if [ "$1" = "" ]; then return fi echo $1 echo "`date` -|- $1" >> $SNAPSHOTSLOGFILE if [ -n "$MASTER_BUILDER_SSH_LOG_DEST" -a -z "${NO_UPLOAD}" ]; then LU=`cat $SNAPSHOTSLASTUPDATE` CT=`date "+%H%M%S"` # Only update every minute if [ "$LU" != "$CT" ]; then scp -q $SNAPSHOTSLOGFILE $MASTER_BUILDER_SSH_LOG_DEST date "+%H%M%S" > $SNAPSHOTSLASTUPDATE fi fi } # Copy the current log file to $filename.old on # the snapshot www server (real time logs) rotate_logfile() { if [ -n "$MASTER_BUILDER_SSH_LOG_DEST" -a -z "${NO_UPLOAD}" ]; then scp -q $SNAPSHOTSLOGFILE $MASTER_BUILDER_SSH_LOG_DEST.old fi # Cleanup log file echo "" > $SNAPSHOTSLOGFILE } dobuilds() { cd $BUILDER_SCRIPTS # Build images ./build.sh --flash-size '1g 2g 4g' "iso memstick memstickserial memstickadi fullupdate nanobsd nanobsd-vga" # Copy files copy_to_staging_iso_updates copy_to_staging_nanobsd '1g 2g 4g' } copy_to_staging_nanobsd() { cd $BUILDER_SCRIPTS for NANOTYPE in nanobsd nanobsd-vga; do for FILESIZE in ${1}; do FILENAMEFULL="${PRODUCT_NAME}-${PRODUCT_VERSION}-${FILESIZE}-${TARGET}-${NANOTYPE}-${DATESTRING}.img.gz" FILENAMEUPGRADE="${PRODUCT_NAME}-${PRODUCT_VERSION}-${FILESIZE}-${TARGET}-${NANOTYPE}-upgrade-${DATESTRING}.img.gz" mkdir -p $STAGINGAREA/nanobsd mkdir -p $STAGINGAREA/nanobsdupdates cp $MAKEOBJDIRPREFIXFINAL/$FILENAMEFULL $STAGINGAREA/nanobsd/ 2>/dev/null cp $MAKEOBJDIRPREFIXFINAL/$FILENAMEUPGRADE $STAGINGAREA/nanobsdupdates 2>/dev/null if [ -f $STAGINGAREA/nanobsd/$FILENAMEFULL ]; then md5 $STAGINGAREA/nanobsd/$FILENAMEFULL > $STAGINGAREA/nanobsd/$FILENAMEFULL.md5 2>/dev/null sha256 $STAGINGAREA/nanobsd/$FILENAMEFULL > $STAGINGAREA/nanobsd/$FILENAMEFULL.sha256 2>/dev/null fi if [ -f $STAGINGAREA/nanobsdupdates/$FILENAMEUPGRADE ]; then md5 $STAGINGAREA/nanobsdupdates/$FILENAMEUPGRADE > $STAGINGAREA/nanobsdupdates/$FILENAMEUPGRADE.md5 2>/dev/null sha256 $STAGINGAREA/nanobsdupdates/$FILENAMEUPGRADE > $STAGINGAREA/nanobsdupdates/$FILENAMEUPGRADE.sha256 2>/dev/null fi # Copy NanoBSD auto update: if [ -f $STAGINGAREA/nanobsdupdates/$FILENAMEUPGRADE ]; then cp $STAGINGAREA/nanobsdupdates/$FILENAMEUPGRADE $STAGINGAREA/latest-${NANOTYPE}-$FILESIZE.img.gz 2>/dev/null sha256 $STAGINGAREA/latest-${NANOTYPE}-$FILESIZE.img.gz > $STAGINGAREA/latest-${NANOTYPE}-$FILESIZE.img.gz.sha256 2>/dev/null # NOTE: Updates need a file with output similar to date output # Use the file generated at start of dobuilds() to be consistent on times cp $BUILTDATESTRINGFILE $STAGINGAREA/version-${NANOTYPE}-$FILESIZE fi done done } copy_to_staging_iso_updates() { cd $BUILDER_SCRIPTS # Copy ISOs md5 ${ISOPATH}.gz > ${ISOPATH}.md5 sha256 ${ISOPATH}.gz > ${ISOPATH}.sha256 cp ${ISOPATH}* $STAGINGAREA/ 2>/dev/null # Copy memstick items md5 ${MEMSTICKPATH}.gz > ${MEMSTICKPATH}.md5 sha256 ${MEMSTICKPATH}.gz > ${MEMSTICKPATH}.sha256 cp ${MEMSTICKPATH}* $STAGINGAREA/ 2>/dev/null md5 ${MEMSTICKSERIALPATH}.gz > ${MEMSTICKSERIALPATH}.md5 sha256 ${MEMSTICKSERIALPATH}.gz > ${MEMSTICKSERIALPATH}.sha256 cp ${MEMSTICKSERIALPATH}* $STAGINGAREA/ 2>/dev/null md5 ${MEMSTICKADIPATH}.gz > ${MEMSTICKADIPATH}.md5 sha256 ${MEMSTICKADIPATH}.gz > ${MEMSTICKADIPATH}.sha256 cp ${MEMSTICKADIPATH}* $STAGINGAREA/ 2>/dev/null md5 ${UPDATES_TARBALL_FILENAME} > ${UPDATES_TARBALL_FILENAME}.md5 sha256 ${UPDATES_TARBALL_FILENAME} > ${UPDATES_TARBALL_FILENAME}.sha256 cp ${UPDATES_TARBALL_FILENAME}* $STAGINGAREA/ 2>/dev/null # NOTE: Updates need a file with output similar to date output # Use the file generated at start of dobuilds() to be consistent on times cp $BUILTDATESTRINGFILE $STAGINGAREA/version 2>/dev/null } scp_files() { cd $BUILDER_SCRIPTS if [ -z "${RSYNC_COPY_ARGUMENTS:-}" ]; then RSYNC_COPY_ARGUMENTS="-ave ssh --timeout=60 --bwlimit=${RSYNCKBYTELIMIT}" #--bwlimit=50 fi update_status ">>> Copying files to ${RSYNCIP}" if [ ! -f /usr/local/bin/rsync ]; then update_status ">>> Could not find rsync, installing from ports..." (cd /usr/ports/net/rsync && make install clean) fi rm -f $SCRATCHDIR/ssh-snapshots* # Ensure directory(s) are available ssh snapshots@${RSYNCIP} "mkdir -p /usr/local/www/snapshots/FreeBSD_${FREEBSD_PARENT_BRANCH}/${TARGET}/${PRODUCT_NAME}_${GIT_REPO_BRANCH_OR_TAG}/livecd_installer" ssh snapshots@${RSYNCIP} "mkdir -p /usr/local/www/snapshots/FreeBSD_${FREEBSD_PARENT_BRANCH}/${TARGET}/${PRODUCT_NAME}_${GIT_REPO_BRANCH_OR_TAG}/updates" ssh snapshots@${RSYNCIP} "mkdir -p /usr/local/www/snapshots/FreeBSD_${FREEBSD_PARENT_BRANCH}/${TARGET}/${PRODUCT_NAME}_${GIT_REPO_BRANCH_OR_TAG}/nanobsd" if [ -d $STAGINGAREA/virtualization ]; then ssh snapshots@${RSYNCIP} "mkdir -p /usr/local/www/snapshots/FreeBSD_${FREEBSD_PARENT_BRANCH}/${TARGET}/${PRODUCT_NAME}_${GIT_REPO_BRANCH_OR_TAG}/virtualization" fi ssh snapshots@${RSYNCIP} "mkdir -p /usr/local/www/snapshots/FreeBSD_${FREEBSD_PARENT_BRANCH}/${TARGET}/${PRODUCT_NAME}_${GIT_REPO_BRANCH_OR_TAG}/.updaters" # ensure permissions are correct for r+w ssh snapshots@${RSYNCIP} "chmod -R ug+rw /usr/local/www/snapshots/FreeBSD_${FREEBSD_PARENT_BRANCH}/${TARGET}/." ssh snapshots@${RSYNCIP} "chmod -R ug+rw /usr/local/www/snapshots/FreeBSD_${FREEBSD_PARENT_BRANCH}/${TARGET}/${PRODUCT_NAME}_${GIT_REPO_BRANCH_OR_TAG}/." ssh snapshots@${RSYNCIP} "chmod -R ug+rw /usr/local/www/snapshots/FreeBSD_${FREEBSD_PARENT_BRANCH}/${TARGET}/${PRODUCT_NAME}_${GIT_REPO_BRANCH_OR_TAG}/*/." rsync $RSYNC_COPY_ARGUMENTS $STAGINGAREA/${PRODUCT_NAME}-*iso* \ snapshots@${RSYNCIP}:/usr/local/www/snapshots/FreeBSD_${FREEBSD_PARENT_BRANCH}/${TARGET}/${PRODUCT_NAME}_${GIT_REPO_BRANCH_OR_TAG}/livecd_installer/ rsync $RSYNC_COPY_ARGUMENTS $STAGINGAREA/${PRODUCT_NAME}-memstick* \ snapshots@${RSYNCIP}:/usr/local/www/snapshots/FreeBSD_${FREEBSD_PARENT_BRANCH}/${TARGET}/${PRODUCT_NAME}_${GIT_REPO_BRANCH_OR_TAG}/livecd_installer/ rsync $RSYNC_COPY_ARGUMENTS $STAGINGAREA/${PRODUCT_NAME}-*Update* \ snapshots@${RSYNCIP}:/usr/local/www/snapshots/FreeBSD_${FREEBSD_PARENT_BRANCH}/${TARGET}/${PRODUCT_NAME}_${GIT_REPO_BRANCH_OR_TAG}/updates/ rsync $RSYNC_COPY_ARGUMENTS $STAGINGAREA/nanobsd/* \ snapshots@${RSYNCIP}:/usr/local/www/snapshots/FreeBSD_${FREEBSD_PARENT_BRANCH}/${TARGET}/${PRODUCT_NAME}_${GIT_REPO_BRANCH_OR_TAG}/nanobsd/ rsync $RSYNC_COPY_ARGUMENTS $STAGINGAREA/nanobsdupdates/* \ snapshots@${RSYNCIP}:/usr/local/www/snapshots/FreeBSD_${FREEBSD_PARENT_BRANCH}/${TARGET}/${PRODUCT_NAME}_${GIT_REPO_BRANCH_OR_TAG}/updates/ if [ -d $STAGINGAREA/virtualization ]; then rsync $RSYNC_COPY_ARGUMENTS $STAGINGAREA/virtualization/* \ snapshots@${RSYNCIP}:/usr/local/www/snapshots/FreeBSD_${FREEBSD_PARENT_BRANCH}/${TARGET}/${PRODUCT_NAME}_${GIT_REPO_BRANCH_OR_TAG}/virtualization/ fi # Rather than copy these twice, use ln to link to the latest one. ssh snapshots@${RSYNCIP} "rm -f /usr/local/www/snapshots/FreeBSD_${FREEBSD_PARENT_BRANCH}/${TARGET}/${PRODUCT_NAME}_${GIT_REPO_BRANCH_OR_TAG}/.updaters/latest.tgz" ssh snapshots@${RSYNCIP} "rm -f /usr/local/www/snapshots/FreeBSD_${FREEBSD_PARENT_BRANCH}/${TARGET}/${PRODUCT_NAME}_${GIT_REPO_BRANCH_OR_TAG}/.updaters/latest.tgz.sha256" LATESTFILENAME="`ls $UPDATESDIR/*.tgz | grep Full | grep -v md5 | grep -v sha256 | tail -n1`" LATESTFILENAME=`basename ${LATESTFILENAME}` ssh snapshots@${RSYNCIP} "ln -s /usr/local/www/snapshots/FreeBSD_${FREEBSD_PARENT_BRANCH}/${TARGET}/${PRODUCT_NAME}_${GIT_REPO_BRANCH_OR_TAG}/updates/${LATESTFILENAME} \ /usr/local/www/snapshots/FreeBSD_${FREEBSD_PARENT_BRANCH}/${TARGET}/${PRODUCT_NAME}_${GIT_REPO_BRANCH_OR_TAG}/.updaters/latest.tgz" ssh snapshots@${RSYNCIP} "ln -s /usr/local/www/snapshots/FreeBSD_${FREEBSD_PARENT_BRANCH}/${TARGET}/${PRODUCT_NAME}_${GIT_REPO_BRANCH_OR_TAG}/updates/${LATESTFILENAME}.sha256 \ /usr/local/www/snapshots/FreeBSD_${FREEBSD_PARENT_BRANCH}/${TARGET}/${PRODUCT_NAME}_${GIT_REPO_BRANCH_OR_TAG}/.updaters/latest.tgz.sha256" for i in 1g 2g 4g do ssh snapshots@${RSYNCIP} "rm -f /usr/local/www/snapshots/FreeBSD_${FREEBSD_PARENT_BRANCH}/${TARGET}/${PRODUCT_NAME}_${GIT_REPO_BRANCH_OR_TAG}/.updaters/latest-nanobsd-${i}.img.gz" ssh snapshots@${RSYNCIP} "rm -f /usr/local/www/snapshots/FreeBSD_${FREEBSD_PARENT_BRANCH}/${TARGET}/${PRODUCT_NAME}_${GIT_REPO_BRANCH_OR_TAG}/.updaters/latest-nanobsd-${i}.img.gz.sha256" ssh snapshots@${RSYNCIP} "rm -f /usr/local/www/snapshots/FreeBSD_${FREEBSD_PARENT_BRANCH}/${TARGET}/${PRODUCT_NAME}_${GIT_REPO_BRANCH_OR_TAG}/.updaters/latest-nanobsd-vga-${i}.img.gz" ssh snapshots@${RSYNCIP} "rm -f /usr/local/www/snapshots/FreeBSD_${FREEBSD_PARENT_BRANCH}/${TARGET}/${PRODUCT_NAME}_${GIT_REPO_BRANCH_OR_TAG}/.updaters/latest-nanobsd-vga-${i}.img.gz.sha256" FILENAMEUPGRADE="${PRODUCT_NAME}-${PRODUCT_VERSION}-${i}-${TARGET}-nanobsd-upgrade-${DATESTRING}.img.gz" ssh snapshots@${RSYNCIP} "ln -s /usr/local/www/snapshots/FreeBSD_${FREEBSD_PARENT_BRANCH}/${TARGET}/${PRODUCT_NAME}_${GIT_REPO_BRANCH_OR_TAG}/updates/${FILENAMEUPGRADE} \ /usr/local/www/snapshots/FreeBSD_${FREEBSD_PARENT_BRANCH}/${TARGET}/${PRODUCT_NAME}_${GIT_REPO_BRANCH_OR_TAG}/.updaters/latest-nanobsd-${i}.img.gz" ssh snapshots@${RSYNCIP} "ln -s /usr/local/www/snapshots/FreeBSD_${FREEBSD_PARENT_BRANCH}/${TARGET}/${PRODUCT_NAME}_${GIT_REPO_BRANCH_OR_TAG}/updates/${FILENAMEUPGRADE}.sha256 \ /usr/local/www/snapshots/FreeBSD_${FREEBSD_PARENT_BRANCH}/${TARGET}/${PRODUCT_NAME}_${GIT_REPO_BRANCH_OR_TAG}/.updaters/latest-nanobsd-${i}.img.gz.sha256" FILENAMEUPGRADE="${PRODUCT_NAME}-${PRODUCT_VERSION}-${i}-${TARGET}-nanobsd-vga-upgrade-${DATESTRING}.img.gz" ssh snapshots@${RSYNCIP} "ln -s /usr/local/www/snapshots/FreeBSD_${FREEBSD_PARENT_BRANCH}/${TARGET}/${PRODUCT_NAME}_${GIT_REPO_BRANCH_OR_TAG}/updates/${FILENAMEUPGRADE} \ /usr/local/www/snapshots/FreeBSD_${FREEBSD_PARENT_BRANCH}/${TARGET}/${PRODUCT_NAME}_${GIT_REPO_BRANCH_OR_TAG}/.updaters/latest-nanobsd-vga-${i}.img.gz" ssh snapshots@${RSYNCIP} "ln -s /usr/local/www/snapshots/FreeBSD_${FREEBSD_PARENT_BRANCH}/${TARGET}/${PRODUCT_NAME}_${GIT_REPO_BRANCH_OR_TAG}/updates/${FILENAMEUPGRADE}.sha256 \ /usr/local/www/snapshots/FreeBSD_${FREEBSD_PARENT_BRANCH}/${TARGET}/${PRODUCT_NAME}_${GIT_REPO_BRANCH_OR_TAG}/.updaters/latest-nanobsd-vga-${i}.img.gz.sha256" done rsync $RSYNC_COPY_ARGUMENTS $STAGINGAREA/version* \ snapshots@${RSYNCIP}:/usr/local/www/snapshots/FreeBSD_${FREEBSD_PARENT_BRANCH}/${TARGET}/${PRODUCT_NAME}_${GIT_REPO_BRANCH_OR_TAG}/.updaters update_status ">>> Finished copying files." } cleanup_builds() { cd $BUILDER_SCRIPTS # Remove prior builds update_status ">>> Cleaning up after prior builds..." rm -rf $STAGINGAREA/* rm -f $UPDATESDIR/* # Keep updates dir slimmed down rm -rf $MAKEOBJDIRPREFIXFINAL/* ./build.sh --clean-builder } build_loop_operations() { cd $BUILDER_SCRIPTS update_status ">>> Starting build loop operations" # --- Items we need to run for a complete build run --- # Cleanup prior builds cleanup_builds # Update pkgs if necessary if pkg update -r ${PRODUCT_NAME} >/dev/null 2>&1; then update_status ">>> Updating builder packages... " pkg upgrade -r ${PRODUCT_NAME} -y -q >/dev/null 2>&1 fi # Do the builds dobuilds # SCP files to snapshot web hosting area if [ -z "${NO_UPLOAD}" ]; then scp_files fi # Alert the world that we have some snapshots ready. update_status ">>> Builder run is complete." } if [ -z "${LOOPED_SNAPSHOTS}" ]; then build_loop_operations else # Main builder loop while [ /bin/true ]; do BUILDCOUNTER=`expr $BUILDCOUNTER + 1` update_status ">>> Starting builder run #${BUILDCOUNTER}..." # Launch the snapshots builder script and pipe its # contents to the while loop so we can record the # script progress in real time to the public facing # snapshot server (${RSYNCIP}). ( build_loop_operations ) | while read LINE do update_status "$LINE" done export minsleepvalue=28800 export maxsleepvalue=86400 # Initialize variables that keep track of last commit [ -z "${PRODUCT_LAST_COMMIT}" ] \ && export PRODUCT_LAST_COMMIT="$(cd "${GIT_REPO_DIR}/${GIT_REPO_BRANCH_OR_TAG}" && git log | head -n1 | cut -d' ' -f2)" [ -z "${TOOLS_LAST_COMMIT}" ] \ && export TOOLS_LAST_COMMIT="$(cd "${BUILDER_SCRIPTS}" && git log | head -n1 | cut -d' ' -f2)" update_status ">>> Sleeping for at least $minsleepvalue, at most $maxsleepvalue in between snapshot builder runs. Last known commit ${PRODUCT_LAST_COMMIT}/${TOOLS_LAST_COMMIT}" update_status ">>> Freezing build process at `date`." sleep $minsleepvalue update_status ">>> Thawing build process and resuming checks for pending commits at `date`." # Count some sheep or wait until a new commit turns up # for one days time. We will wake up if a new commit # is detected during sleepy time. sleep_between_runs $maxsleepvalue # If REBOOT_AFTER_SNAPSHOT_RUN is defined reboot # the box after the run. if [ ! -z "${REBOOT_AFTER_SNAPSHOT_RUN:-}" ]; then update_status ">>> Rebooting `hostname` due to \$REBOOT_AFTER_SNAPSHOT_RUN" shutdown -r now kill $$ fi # Rotate log file (.old) rotate_logfile # Set a common DATESTRING for the build if not set from builder_defaults.sh. # Rely on builder_defaults.sh doing the right job the first time included from this script. # NOTE: This is needed to have autoupdate detect a new version. # Override it here to have continuous builds with proper labels rm -f $DATESTRINGFILE rm -f $BUILTDATESTRINGFILE unset DATESTRING unset BUILTDATESTRING unset ISOPATH unset MEMSTICKPATH unset MEMSTICKSERIALPATH unset MEMSTICKADIPATH unset UPDATES_TARBALL_FILENAME # builder_defaults.sh will set variables with correct timestamp . ./builder_defaults.sh done fi