[Qa-jenkins-scm] [jenkins.debian.net] 01/01: reproducible Debian: adapt for non identical .buildinfos

Holger Levsen holger at layer-acht.org
Mon Nov 7 12:48:43 UTC 2016


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 6e1b1d4bf3eac5cf3071b50f91308f1db231405f
Author: HW42 <hw42 at ipsumj.de>
Date:   Sun Nov 6 21:20:35 2016 +0100

    reproducible Debian: adapt for non identical .buildinfos
    
    .buildinfo document part of the build environment and are not expected
    to be the same for the two builds.
    
    Signed-off-by: Holger Levsen <holger at layer-acht.org>
---
 bin/reproducible_build.sh | 45 ++++++++++++++++++++-------------------------
 1 file changed, 20 insertions(+), 25 deletions(-)

diff --git a/bin/reproducible_build.sh b/bin/reproducible_build.sh
index cd261f8..b0b840a 100755
--- a/bin/reproducible_build.sh
+++ b/bin/reproducible_build.sh
@@ -346,7 +346,7 @@ dbd_timeout() {
 	handle_ftbr "$msg"
 }
 
-call_diffoscope_on_buildinfo_files() {
+call_diffoscope_on_changes_files() {
 	local TMPLOG=$(mktemp --tmpdir=$TMPDIR)
 	local TIMEOUT="120m"
 	DBDSUITE=$SUITE
@@ -374,8 +374,8 @@ call_diffoscope_on_buildinfo_files() {
 		-- sh -c "export TMPDIR=$TEMP ; diffoscope \
 			--html $TMPDIR/${DBDREPORT} \
 			--text $TMPDIR/$DBDTXT \
-			$TMPDIR/b1/${BUILDINFO} \
-			$TMPDIR/b2/${BUILDINFO}" \
+			$TMPDIR/b1/${CHANGES} \
+			$TMPDIR/b2/${CHANGES}" \
 	2>&1 ) >> $TMPLOG
 	RESULT=$?
 	LOG_RESULT=$(grep '^E: 15binfmt: update-binfmts: unable to open' $TMPLOG || true)
@@ -390,8 +390,8 @@ call_diffoscope_on_buildinfo_files() {
 			-- sh -c "export TMPDIR=$TEMP ; diffoscope \
 				--html $TMPDIR/${DBDREPORT} \
 				--text $TMPDIR/$DBDTXT \
-				$TMPDIR/b1/${BUILDINFO} \
-				$TMPDIR/b2/${BUILDINFO}" \
+				$TMPDIR/b1/${CHANGES} \
+				$TMPDIR/b2/${CHANGES}" \
 		2>&1 ) >> $TMPLOG
 		RESULT=$?
 	fi
@@ -747,19 +747,13 @@ remote_build() {
 	fi
 }
 
-filter_buildinfo_files() {
-	# filters out the Environment section from buildinfo files
+filter_changes_files() {
+	# filters .buildinfo from .changes
 
-	local TMPFILE1=$(mktemp --tmpdir=$TMPDIR)
-	local TMPFILE2=$(mktemp --tmpdir=$TMPDIR)
-	grep-dctrl -I -s Environment . ./b1/$BUILDINFO > $TMPFILE1
-	grep-dctrl -I -s Environment . ./b2/$BUILDINFO > $TMPFILE2
-	mv $TMPFILE1 ./b1/$BUILDINFO
-	mv $TMPFILE2 ./b2/$BUILDINFO
-	chmod 644 ./b1/$BUILDINFO ./b2/$BUILDINFO
+	sed -i -e '/^ [a-f0-9]\{32,64\} .*\.buildinfo$/d' b{1,2}/$CHANGES
 }
 
-check_buildinfo() {
+check_installed_build_depends() {
 	local TMPFILE1=$(mktemp --tmpdir=$TMPDIR)
 	local TMPFILE2=$(mktemp --tmpdir=$TMPDIR)
 	grep-dctrl -s Installed-Build-Depends -n ${SRCPACKAGE} ./b1/$BUILDINFO > $TMPFILE1
@@ -772,7 +766,7 @@ check_buildinfo() {
 		printf "$(date -u) - $BUILDINFO in ${SUITE} on ${ARCH} varies, probably due to mirror update. Doing the first build again, please check ${BUILD_URL}console for now..." >> /var/log/jenkins/reproducible-hit-mirror-update.log
 		echo
 		echo "============================================================================="
-		echo "$(date -u) - The build environment varies according to the two .buildinfo files, probably due to mirror update. Doing the first build on $NODE1 again."
+		echo "$(date -u) - The installed build depends vary according to the two .buildinfo files, probably due to mirror update. Doing the first build on $NODE1 again."
 		echo "============================================================================="
 		echo
 		remote_build 1 $NODE1
@@ -819,23 +813,24 @@ share_buildinfo() {
 
 build_rebuild() {
 	FTBFS=1
+	CHANGES="${SRCPACKAGE}_${EVERSION}_${ARCH}.changes" # changes file with expected version
 	mkdir b1 b2
 	log_info "Starting 1st build on remote node $NODE1."
 	remote_build 1 $NODE1
-	if [ ! -f b1/${SRCPACKAGE}_${EVERSION}_${ARCH}.changes ] && [ -f b1/${SRCPACKAGE}_*_${ARCH}.changes ] ; then
+	if [ ! -f b1/$CHANGES ] && [ -f b1/${SRCPACKAGE}_*_${ARCH}.changes ] ; then
 			log_error "Version mismatch between main node (${SRCPACKAGE}_${EVERSION}_${ARCH}.dsc expected) and first build node ($(ls b1/*dsc)) for $SUITE/$ARCH, aborting. Please upgrade the schroots..."
 			# reschedule the package for later and quit the build without saving anything
 			query_db "UPDATE schedule SET date_build_started = NULL, job = NULL, date_scheduled='$(date -u +'%Y-%m-%d %H:%M')' WHERE package_id='$SRCPKGID'"
 			NOTIFY=""
 			exit 0
-	elif [ -f b1/${SRCPACKAGE}_${EVERSION}_${ARCH}.changes ] ; then
+	elif [ -f b1/$CHANGES ] ; then
 		log_info "1st build successful. Starting 2nd build on remote node $NODE2."
 		remote_build 2 $NODE2
-		if [ -f b2/${SRCPACKAGE}_${EVERSION}_${ARCH}.changes ] ; then
+		if [ -f b2/$CHANGES ] ; then
 			# both builds were fine, i.e., they did not FTBFS.
 			FTBFS=0
-			log_info "${SRCPACKAGE}_${EVERSION}_${ARCH}.changes:"
-			log_file b1/${SRCPACKAGE}_${EVERSION}_${ARCH}.changes
+			log_info "$CHANGES:"
+			log_file b1/$CHANGES
 		else
 			log_error "the second build failed, even though the first build was successful."
 		fi
@@ -911,9 +906,9 @@ log_info "${SRCPACKAGE}_${EVERSION}.dsc"
 log_file ${SRCPACKAGE}_${EVERSION}.dsc
 
 check_suitability
-build_rebuild  # defines FTBFS redefines RBUILDLOG
+build_rebuild  # defines FTBFS, CHANGES redefines RBUILDLOG
 if [ $FTBFS -eq 0 ] ; then
-	check_buildinfo
+	check_installed_build_depends
 fi
 cleanup_pkg_files
 diff_copy_buildlogs
@@ -921,8 +916,8 @@ update_rbuildlog
 if [ $FTBFS -eq 1 ] ; then
 	handle_ftbfs
 elif [ $FTBFS -eq 0 ] ; then
-	filter_buildinfo_files
-	call_diffoscope_on_buildinfo_files  # defines DIFFOSCOPE, update_db_and_html defines STATUS
+	filter_changes_files
+	call_diffoscope_on_changes_files  # defines DIFFOSCOPE, update_db_and_html defines STATUS
 	share_buildinfo
 fi
 print_out_duration

-- 
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