#!/bin/bash # Copyright 2014-2015 Holger Levsen # released under the GPLv=2 DEBUG=true . /srv/jenkins/bin/common-functions.sh common_init "$@" # common code defining db access . /srv/jenkins/bin/reproducible_common.sh set -e cleanup_tmpdirs() { cd echo "No Cleanup..." # $RSSH "rm -r $TMPDIR" # $RSSH 'sudo rm -r /usr/src /usr/obj' } create_results_dirs() { mkdir -p $BASE/freebsd/dbd } save_freebsd_results(){ local RUN=$1 mkdir -p $TMPDIR/$RUN/ # copy results over $RSCP:$TMPDIR $TMPDIR/$RUN $RSSH "rm -r $TMPDIR ; mkdir $TMPDIR" find $TMPDIR/$RUN/ -name MD5 -o -name SHA512 -exec rm {} \; } # # main # FREEBSD_TARGET="release/10.1.0" RSSH="ssh freebsd-jenkins.debian.net" RSCP="scp -r freebsd-jenkins.debian.net" TMPBUILDDIR=/usr/src $RSSH 'sudo rm -r /usr/src /usr/obj ; sudo mkdir /usr/src /usr/obj ; sudo chown jenkins /usr/src /usr/obj' ### this is tmpfs on linux, we should move this to tmpfs on freebsd too TMPDIR=$($RSSH 'TMPDIR=/srv/reproducible-results mktemp -d') # used to compare results DATE=$(date -u +'%Y-%m-%d') START=$(date +'%s') trap cleanup_tmpdirs INT TERM EXIT echo "=============================================================================" echo "$(date -u) - FreeBSD host info" echo "=============================================================================" $RSSH freebsd-version echo "=============================================================================" echo "$(date -u) - Cloning the freebsd git repository (which is autosynced with their CVS repository)" echo "=============================================================================" $RSSH git clone --depth 1 --branch $FREEBSD_TARGET https://github.com/freebsd/freebsd.git $TMPBUILDDIR FREEBSD=$($RSSH "cd $TMPBUILDDIR ; git log -1") FREEBSD_VERSION=$($RSSH "cd $TMPBUILDDIR ; git describe --always") echo "This is freebsd $FREEBSD_VERSION." echo $RSSH "cd $TMPBUILDDIR ; git log -1" echo "=============================================================================" echo "$(date -u) - Building freebsd ${FREEBSD_VERSION} - first build run." echo "=============================================================================" export TZ="/usr/share/zoneinfo/Etc/GMT+12" # actually build everything NUM_CPU=3 $RSSH "cd $TMPBUILDDIR ; TZ=$TZ sudo make -j $NUM_CPU buildworld" $RSSH "cd $TMPBUILDDIR ; TZ=$TZ sudo make -j $NUM_CPU buildkernel" $RSSH "cd $TMPBUILDDIR ; TZ=$TZ DESTDIR=$TMPDIR sudo make -j $NUM_CPU installworld" $RSSH "cd $TMPBUILDDIR ; TZ=$TZ DESTDIR=$TMPDIR sudo make -j $NUM_CPU installkernel" $RSSH "cd $TMPBUILDDIR ; TZ=$TZ DESTDIR=$TMPDIR sudo make -j $NUM_CPU distribution" # save results in b1 save_freebsd_results b1 echo "=============================================================================" echo "$(date -u) - Building freebsd ${FREEBSD_VERSION} - cleaning up between builds." echo "=============================================================================" $RSSH "sudo rm -r /usr/obj/ ; sudo mkdir /usr/obj ; sudo chown jenkins /usr/src /usr/obj" echo "=============================================================================" echo "$(date -u) - Building freebsd - second build run." echo "=============================================================================" export TZ="/usr/share/zoneinfo/Etc/GMT-14" ###export LANG="fr_CH.UTF-8" ###export LC_ALL="fr_CH.UTF-8" ###export PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" ###export CAPTURE_ENVIRONMENT="I capture the environment" ###umask 0002 #### use allmost all cores for second build ###NEW_NUM_CPU=$(echo $NUM_CPU-1|bc) NEW_NUM_CPU=4 # actually build everything $RSSH "cd $TMPBUILDDIR ; TZ=$TZ sudo make -j $NEW_NUM_CPU buildworld" $RSSH "cd $TMPBUILDDIR ; TZ=$TZ sudo make -j $NEW_NUM_CPU buildkernel" $RSSH "cd $TMPBUILDDIR ; TZ=$TZ DESTDIR=$TMPDIR sudo make -j $NEW_NUM_CPU installworld" $RSSH "cd $TMPBUILDDIR ; TZ=$TZ DESTDIR=$TMPDIR sudo make -j $NEW_NUM_CPU installkernel" $RSSH "cd $TMPBUILDDIR ; TZ=$TZ DESTDIR=$TMPDIR sudo make -j $NEW_NUM_CPU distribution" # save results in b2 save_freebsd_results b2 # cleanup... # reset environment to default values again export LANG="en_GB.UTF-8" unset LC_ALL export TZ="/usr/share/zoneinfo/UTC" export PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:" umask 0022 # cleanup on the node $RSSH 'sudo rm -r /usr/src /usr/obj' # run diffoscope on the results TIMEOUT="30m" DBDSUITE="unstable" DIFFOSCOPE="$(schroot --directory /tmp -c source:jenkins-reproducible-${DBDSUITE}-debbindiff debbindiff -- --version 2>&1)" echo "=============================================================================" echo "$(date -u) - Running $DIFFOSCOPE on freebsd..." echo "=============================================================================" FILES_HTML=$(mktemp --tmpdir=$TMPDIR) echo "