#!/bin/bash # Copyright 2014-2015 Holger Levsen # © 2015 Mattia Rizzolo # released under the GPLv=2 DEBUG=false . /srv/jenkins/bin/common-functions.sh common_init "$@" # common code defining db access . /srv/jenkins/bin/reproducible_common.sh set -e # build for these architectures MACHINES="sparc64 amd64" cleanup_tmpdirs() { cd rm -r $TMPDIR rm -r $TMPBUILDDIR } create_results_dirs() { mkdir -p $BASE/freebsd/dbd } save_freebsd_results(){ local RUN=$1 local MACHINE=$2 mkdir -p $TMPDIR/$RUN/${MACHINE} cp -pr obj/releasedir/${MACHINE} $TMPDIR/$RUN/ find $TMPDIR/$RUN/ -name MD5 -o -name SHA512 -exec rm {} \; } # # main # RSSH="ssh freebsd-jenkins.debian.net" TMPBUILDDIR=$($RSSH 'TMPDIR=/srv/workspace/chroots/ mktemp -d -t freebsd-XXXXXXXX') # FIXME: not used to build on tmpfs 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) - Cloning the freebsd git repository (which is autosynced with their CVS repository)" echo "=============================================================================" $RSSH git clone https://github.com/freebsd/freebsd.git $TMPBUILDDIR/freebsd FREEBSD="$($RSSH \"cd $TMPBUILDDIR/freebsd ; git log -1\")" FREEBSD_VERSION="$($RSSH \"cd $TMPBUILDDIR/freebsd ; git describe --always\")" echo "This is freebsd $FREEBSD_VERSION." echo $RSSH "cd $TMPBUILDDIR/freebsd ; git log -1" echo "so far so good, to be continued..." echo exit 1 echo "=============================================================================" echo "$(date -u) - Building freebsd ${FREEBSD_VERSION} - first build run." echo "=============================================================================" export TZ="/usr/share/zoneinfo/Etc/GMT+12" # actually build everything for MACHINE in $MACHINES ; do ionice -c 3 nice \ ./build.sh -j $NUM_CPU -U -u -m ${MACHINE} release # save results in b1 save_freebsd_results b1 ${MACHINE} # cleanup and explicitly delete old tooldir to force re-creation for the next $MACHINE type ./build.sh -U -m ${MACHINE} cleandir rm obj/tooldir.* -rf echo "${MACHINE} done, first time." done echo "=============================================================================" echo "$(date -u) - Building freebsd ${FREEBSD_VERSION} - cleaning up between builds." echo "=============================================================================" rm obj/releasedir -r rm obj/destdir.* -r # we keep the toolchain(s) 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) for MACHINE in $MACHINES ; do ionice -c 3 nice \ linux64 --uname-2.6 \ ./build.sh -j $NEW_NUM_CPU -U -u -m ${MACHINE} release # save results in b2 save_freebsd_results b2 ${MACHINE} # cleanup and explicitly delete old tooldir to force re-creation for the next $MACHINE type ./build.sh -U -m ${MACHINE} cleandir rm obj/tooldir.* -r echo "${MACHINE} done, second time." done # 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 # clean up builddir to save space on tmpfs rm -r $TMPBUILDDIR/freebsd # run debbindiff on the results TIMEOUT="30m" DBDSUITE="unstable" DBDVERSION="$(schroot --directory /tmp -c source:jenkins-reproducible-${DBDSUITE}-debbindiff debbindiff -- --version 2>&1)" echo "=============================================================================" echo "$(date -u) - Running $DBDVERSION on freebsd..." echo "=============================================================================" FILES_HTML=$(mktemp --tmpdir=$TMPDIR) echo "