[Qa-jenkins-scm] [jenkins.debian.net] 04/05: reproducible: build: refactor: move the actual calls to pbuilder to build_rebuild() and the rest to handle_ftbfs()

Holger Levsen holger at moszumanska.debian.org
Sat Apr 18 15:31:09 UTC 2015


This is an automated email from the git hooks/post-receive script.

holger pushed a commit to branch master
in repository jenkins.debian.net.

commit 996e208b0ff9e29d7059b27cc8f67ee7dc775a5c
Author: Mattia Rizzolo <mattia at mapreri.org>
Date:   Mon Apr 6 01:18:33 2015 +0200

    reproducible: build: refactor: move the actual calls to pbuilder to build_rebuild() and the rest to handle_ftbfs()
    
    also split more lines, and use more local variables, instead of pollute the global environment
---
 bin/reproducible_build.sh | 127 ++++++++++++++++++++++++++--------------------
 1 file changed, 71 insertions(+), 56 deletions(-)

diff --git a/bin/reproducible_build.sh b/bin/reproducible_build.sh
index b0cf478..9963a6e 100755
--- a/bin/reproducible_build.sh
+++ b/bin/reproducible_build.sh
@@ -50,7 +50,7 @@ cleanup_all() {
 		echo "No artifacts were saved for this build." | tee -a ${RBUILDLOG}
 		kgb-client --conf /srv/jenkins/kgb/debian-reproducible.conf --relay-msg "Check $REPRODUCIBLE_URL/rbuild/${SUITE}/${ARCH}/${SRCPACKAGE}_${EVERSION}.rbuild.log to find out why no artifacts were saved." || true # don't fail the whole job
 	fi
-	rm -r $TMPDIR $TMPCFG
+	rm -r $TMPDIR
 }
 
 cleanup_userContent() {
@@ -176,6 +176,15 @@ handle_not_for_us() {
 	exit 0
 }
 
+handle_ftbfs() {
+	echo "${SRCPACKAGE} failed to build from source."
+	calculate_build_duration
+	sqlite3 -init $INIT ${PACKAGES_DB} "REPLACE INTO results (package_id, version, status, build_date, build_duration) VALUES ('${SRCPKGID}', '${VERSION}', 'FTBFS', '$DATE', '$DURATION')"
+	sqlite3 -init $INIT ${PACKAGES_DB} "INSERT INTO stats_build (name, version, suite, architecture, status, build_date, build_duration) VALUES ('${SRCPACKAGE}', '${VERSION}', '${SUITE}', '${ARCH}', 'FTBFS', '${DATE}', '${DURATION}')"
+	update_db_and_html
+	if [ $SAVE_ARTIFACTS -eq 1 ] ; then SAVE_ARTIFACTS=2 ; fi
+}
+
 choose_package () {
 	local RESULT=$(sqlite3 -init $INIT ${PACKAGES_DB} "SELECT s.suite, s.id, s.name, sch.date_scheduled, sch.save_artifacts FROM schedule AS sch JOIN sources AS s ON sch.package_id=s.id WHERE sch.date_build_started = '' ORDER BY date_scheduled LIMIT 1")
 	SUITE=$(echo $RESULT|cut -d "|" -f1)
@@ -234,15 +243,72 @@ check_suitability() {
 	if [ "${ARCHITECTURES}" = "all" ] ; then
 		local SUITABLE=true
 	fi
-	if ! $SUITABLE ; then
+	if ! $SUITABLE ; then handle_not_for_us $ARCHITECTURES ; fi
+}
+
+build_rebuild() {
+	local FTBFS=1
+	local TMPLOG=$(mktemp --tmpdir=$PWD)
+	local TMPCFG=$(mktemp -t pbuilderrc_XXXX --tmpdir=$PWD)
+	local NUM_CPU=$(cat /proc/cpuinfo |grep ^processor|wc -l)
+	mkdir b1 b2
+	set -x
+	printf "BUILDUSERID=1111\nBUILDUSERNAME=pbuilder1\n" > $TMPCFG
+	( timeout 12h nice ionice -c 3 sudo \
+	  DEB_BUILD_OPTIONS="parallel=$NUM_CPU" \
+	  TZ="/usr/share/zoneinfo/Etc/GMT+12" \
+	  pbuilder --build \
+		--configfile $TMPCFG \
+		--debbuildopts "-b" \
+		--basetgz /var/cache/pbuilder/$SUITE-reproducible-base.tgz \
+		--buildresult b1 \
+		--distribution ${SUITE} \
+		${SRCPACKAGE}_*.dsc \
+	) 2>&1 | tee ${TMPLOG}
+	set +x
+	if [ -f b1/${SRCPACKAGE}_${EVERSION}_${ARCH}.changes ] ; then
+		# the first build did not FTBFS, try rebuild it.
+		echo "============================================================================="
+		echo "Re-building ${SRCPACKAGE}/${VERSION} in ${SUITE} on ${ARCH} now."
+		echo "============================================================================="
 		set -x
-		handle_not_for_us $ARCHITECTURES
+		printf "BUILDUSERID=2222\nBUILDUSERNAME=pbuilder2\n" > $TMPCFG
+		( timeout 12h nice ionice -c 3 sudo \
+		  DEB_BUILD_OPTIONS="parallel=$NUM_CPU" \
+		  TZ="/usr/share/zoneinfo/Etc/GMT-14" \
+		  LANG="fr_CH.UTF-8" \
+		  LC_ALL="fr_CH.UTF-8" \
+		  /usr/bin/linux64 --uname-2.6 \
+			/usr/bin/unshare --uts -- \
+				/usr/sbin/pbuilder --build \
+					--configfile $TMPCFG \
+					--hookdir /etc/pbuilder/rebuild-hooks \
+					--debbuildopts "-b" \
+					--basetgz /var/cache/pbuilder/$SUITE-reproducible-base.tgz \
+					--buildresult b2 \
+					--distribution ${SUITE} \
+					${SRCPACKAGE}_${EVERSION}.dsc
+		) 2>&1 | tee -a ${RBUILDLOG}
+		set +x
+		if [ -f b2/${SRCPACKAGE}_${EVERSION}_${ARCH}.changes ] ; then
+			# both builds were fine, i.e., they did not FTBFS.
+			local FTBFS=0
+			cleanup_userContent # FIXME check wheter my changes were fine
+			mv $RBUILDLOG /var/lib/jenkins/userContent/rbuild/${SUITE}/${ARCH}/${SRCPACKAGE}_${EVERSION}.rbuild.log
+			RBUIlDLOG=/var/lib/jenkins/userContent/rbuild/${SUITE}/${ARCH}/${SRCPACKAGE}_${EVERSION}.rbuild.log
+			call_debbindiff
+		else
+			echo "The second build failed, even though the first build was successful." | tee -a ${RBUILDLOG}
+		fi
+	else
+		cat ${TMPLOG} >> ${RBUILDLOG}
 	fi
+	rm ${TMPLOG} $TMPCFG
+	if [ $FTBFS -eq 1 ] ; then handle_ftbfs ; fi
 }
 
 
 TMPDIR=$(mktemp --tmpdir=/srv/reproducible-results -d)
-TMPCFG=$(mktemp -t pbuilderrc_XXXX)
 trap cleanup_all INT TERM EXIT
 cd $TMPDIR
 
@@ -264,59 +330,8 @@ EVERSION=$(echo $VERSION | cut -d ":" -f2)  # EPOCH_FREE_VERSION was too long
 cat ${SRCPACKAGE}_${EVERSION}.dsc | tee -a ${RBUILDLOG}
 
 check_suitability
+build_rebuild
 
-
-		NUM_CPU=$(cat /proc/cpuinfo |grep ^processor|wc -l)
-		FTBFS=1
-		TMPLOG=$(mktemp)
-		mkdir b1 b2
-		printf "BUILDUSERID=1111\nBUILDUSERNAME=pbuilder1\n" > $TMPCFG
-		( timeout 12h nice ionice -c 3 sudo \
-		  DEB_BUILD_OPTIONS="parallel=$NUM_CPU" \
-		  TZ="/usr/share/zoneinfo/Etc/GMT+12" \
-		  pbuilder --build --configfile $TMPCFG --debbuildopts "-b" --basetgz /var/cache/pbuilder/$SUITE-reproducible-base.tgz --buildresult b1 --distribution ${SUITE} ${SRCPACKAGE}_*.dsc
-		) 2>&1 | tee ${TMPLOG}
-		set +x
-		if [ -f b1/${SRCPACKAGE}_${EVERSION}_${ARCH}.changes ] ; then
-			echo "============================================================================="
-			echo "Re-building ${SRCPACKAGE} in ${SUITE} on ${ARCH} now."
-			echo "============================================================================="
-			set -x
-			printf "BUILDUSERID=2222\nBUILDUSERNAME=pbuilder2\n" > $TMPCFG
-			( timeout 12h nice ionice -c 3 sudo \
-			  DEB_BUILD_OPTIONS="parallel=$NUM_CPU" \
-			  TZ="/usr/share/zoneinfo/Etc/GMT-14" \
-			  LANG="fr_CH.UTF-8" \
-			  LC_ALL="fr_CH.UTF-8" \
-			  /usr/bin/linux64 --uname-2.6 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile $TMPCFG --hookdir /etc/pbuilder/rebuild-hooks \
-			    --debbuildopts "-b" --basetgz /var/cache/pbuilder/$SUITE-reproducible-base.tgz --buildresult b2 --distribution ${SUITE} ${SRCPACKAGE}_${EVERSION}.dsc
-			) 2>&1 | tee -a ${RBUILDLOG}
-			set +x
-			if [ -f b2/${SRCPACKAGE}_${EVERSION}_${ARCH}.changes ] ; then
-				FTBFS=0
-				cleanup_userContent
-				mv $RBUILDLOG /var/lib/jenkins/userContent/rbuild/${SUITE}/${ARCH}/${SRCPACKAGE}_${EVERSION}.rbuild.log
-				RBUIlDLOG=/var/lib/jenkins/userContent/rbuild/${SUITE}/${ARCH}/${SRCPACKAGE}_${EVERSION}.rbuild.log
-				call_debbindiff
-			else
-				echo "The second build failed, even though the first build was successful." | tee -a ${RBUILDLOG}
-			fi
-		else
-			cat ${TMPLOG} >> ${RBUILDLOG}
-		fi
-		rm ${TMPLOG}
-		if [ $FTBFS -eq 1 ] ; then
-			set +x
-			echo "${SRCPACKAGE} failed to build from source."
-			calculate_build_duration
-			sqlite3 -init $INIT ${PACKAGES_DB} "REPLACE INTO results (package_id, version, status, build_date, build_duration) VALUES ('${SRCPKGID}', '${VERSION}', 'FTBFS', '$DATE', '$DURATION')"
-			sqlite3 -init $INIT ${PACKAGES_DB} "INSERT INTO stats_build (name, version, suite, architecture, status, build_date, build_duration) VALUES ('${SRCPACKAGE}', '${VERSION}', '${SUITE}', '${ARCH}', 'FTBFS', '${DATE}', '${DURATION}')"
-			update_db_and_html
-			if [ $SAVE_ARTIFACTS -eq 1 ] ; then SAVE_ARTIFACTS=2 ; fi
-		fi
-	fi
-
-fi
 cd ..
 cleanup_all
 trap - INT TERM EXIT

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/qa/jenkins.debian.net.git



More information about the Qa-jenkins-scm mailing list