[Qa-jenkins-scm] [jenkins.debian.net] 01/01: meld reproducible_setup_schroot.sh into schroot-create, delete the first and let everything use that schroot-create script. No need for duplications

Holger Levsen holger at moszumanska.debian.org
Mon Jun 8 11:47: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 7a102668c34acad065feb98eb511681d89757a95
Author: Mattia Rizzolo <mattia at mapreri.org>
Date:   Mon Jun 8 05:03:06 2015 +0200

    meld reproducible_setup_schroot.sh into schroot-create, delete the first and let everything use that schroot-create script. No need for duplications
---
 TODO                              |   1 -
 bin/reproducible_setup_schroot.sh | 158 --------------------------------------
 bin/schroot-create.sh             |  43 ++++++++---
 job-cfg/reproducible.yaml         |   4 +-
 4 files changed, 36 insertions(+), 170 deletions(-)

diff --git a/TODO b/TODO
index aff7a66..61fe255 100644
--- a/TODO
+++ b/TODO
@@ -181,7 +181,6 @@ egrep -R -l '(debbindiff had trouble comparing|maybe there is still )' /var/lib/
 
 * misc
 ** more graphs: graph average build duration by day
-** meld bin/reproducible_setup_schroot.sh into bin/schroot-create.sh and alias the former to the latter
 ** reproducible_create_meta_pkg_sets uses schroot created by dpkg_setup_schroot_jessie job (outside of reproducible job space...)
 ** "fork" etc/schroot/default into etc/schroot/reproducible
 ** repo-comparison: check for binaries without source
diff --git a/bin/reproducible_setup_schroot.sh b/bin/reproducible_setup_schroot.sh
deleted file mode 100755
index a6a04c4..0000000
--- a/bin/reproducible_setup_schroot.sh
+++ /dev/null
@@ -1,158 +0,0 @@
-#!/bin/bash
-
-# Copyright 2012-2015 Holger Levsen <holger at layer-acht.org>
-# Copyright      2013 Antonio Terceiro <terceiro at debian.org>
-# Copyright      2014 Joachim Breitner <nomeata at debian.org>
-# 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
-
-# bootstraps a new chroot for schroot, and then moves it into the right location
-
-# $1 = schroot name
-# $2 = base distro/suite
-# $3 $4 ... = extra packages to install
-
-if [ $# -lt 2 ]; then
-	echo "usage: $0 TARGET SUITE [backports] CMD [ARG1 ARG2 ...]"
-	exit 1
-fi
-TARGET="$1"
-shift
-SUITE="$1"
-shift
-
-if [ ! -d "$CHROOT_BASE" ]; then
-	echo "Directory $CHROOT_BASE does not exist, aborting."
-	exit 1
-fi
-
-export CHROOT_TARGET=$(mktemp -d -p $CHROOT_BASE/ schroot-install-$TARGET-XXXX)
-if [ -z "$CHROOT_TARGET" ]; then
-	echo "Could not create a directory to create the chroot in, aborting."
-	exit 1
-fi
-
-bootstrap() {
-	mkdir -p "$CHROOT_TARGET/etc/dpkg/dpkg.cfg.d"
-	echo force-unsafe-io > "$CHROOT_TARGET/etc/dpkg/dpkg.cfg.d/02dpkg-unsafe-io"
-
-	echo "Bootstraping $SUITE into $CHROOT_TARGET now."
-	sudo debootstrap $SUITE $CHROOT_TARGET $MIRROR
-
-	echo -e '#!/bin/sh\nexit 101'              | sudo tee   $CHROOT_TARGET/usr/sbin/policy-rc.d >/dev/null
-	sudo chmod +x $CHROOT_TARGET/usr/sbin/policy-rc.d
-	if [ ! -z "$http_proxy" ] ; then
-		echo "Acquire::http::Proxy \"$http_proxy\";" | sudo tee    $CHROOT_TARGET/etc/apt/apt.conf.d/80proxy >/dev/null
-	fi
-	echo "deb-src $MIRROR $SUITE main"        | sudo tee -a $CHROOT_TARGET/etc/apt/sources.list > /dev/null
-
-	# things break without /proc
-	sudo mount --bind /proc $CHROOT_TARGET/proc
-
-	sudo chroot $CHROOT_TARGET apt-get update
-	if [ -n "$1" ] ; then
-		set -x
-		sudo chroot $CHROOT_TARGET apt-get update
-		# install debbindiff with all recommends...
-		sudo chroot $CHROOT_TARGET apt-get install -y "$@"
-		if ! $DEBUG ; then set +x ; fi
-	else
-		#
-		# FIXME: this else block is unused - remove or merge everything else with schroot-create?
-		#
-		# schroot is used to download sources, so add our repo too
-		echo 'deb-src http://reproducible.alioth.debian.org/debian/ ./' > /etc/apt/sources.list.d/reproducible.list
-		TMPFILE=$(mktemp)
-		cat >> $TMPFILE <<- EOF
-echo "-----BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG v1.4.12 (GNU/Linux)
-
-mQINBFQsy/gBEADKGF55qQpXxpTn7E0Vvqho82/HFB/yT9N2wD8TkrejhJ1I6hfJ
-zFXD9fSi8WnNpLc6IjcaepuvvO4cpIQ8620lIuONQZU84sof8nAO0LDoMp/QdN3j
-VViXRXQtoUmTAzlOBNpyb8UctAoSzPVgO3jU1Ngr1LWi36hQPvQWSYPNmbsDkGVE
-unB0p8DCN88Yq4z2lDdlHgFIy0IDNixuRp/vBouuvKnpe9zyOkijV83Een0XSUsZ
-jmoksFzLzjChlS5fAL3FjtLO5XJGng46dibySWwYx2ragsrNUUSkqTTmU7bOVu9a
-zlnQNGR09kJRM77UoET5iSXXroK7xQ26UJkhorW2lXE5nQ97QqX7igWp2u0G74RB
-e6y3JqH9W8nV+BHuaCVmW0/j+V/l7T3XGAcbjZw1A4w5kj8YGzv3BpztXxqyHQsy
-piewXLTBn8dvgDqd1DLXI5gGxC3KGGZbC7v0rQlu2N6OWg2QRbcVKqlE5HeZxmGV
-vwGQs/vcChc3BuxJegw/bnP+y0Ys5tsVLw+kkxM5wbpqhWw+hgOlGHKpJLNpmBxn
-T+o84iUWTzpvHgHiw6ShJK50AxSbNzDWdbo7p6e0EPHG4Gj41bwO4zVzmQrFz//D
-txVBvoATTZYMLF5owdCO+rO6s/xuC3s04pk7GpmDmi/G51oiz7hIhxJyhQARAQAB
-tC5EZWJpYW4gUmVwcm9kdWNpYmxlIEJ1aWxkcyBBcmNoaXZlIFNpZ25pbmcgS2V5
-iQI9BBMBCAAnBQJULMv4AhsDBQkFo5qABQsJCAcDBRUKCQgLBRYDAgEAAh4BAheA
-AAoJEF23ymfqWaMfFsMP/3jthq65H9avuM469jHcugcd0C5b7/DS+cGQ5E4NQIGL
-6tGsqv5k6Nb0MoMMEAQSmWeXRkbYYxmEkrREMNg8tPlh4NiJimH3neNfI+8fGiHY
-89FH7QDrrzGfMF9oJQ9zjWZTOs3bjJ4AfS4fkQiQ6UfO7TeMyz5Cw7kz+rS1m1tu
-+RgHxD+6A+XxkIZnw5we1MH0SAFoq4j3boR8QkFUNMZsy97xWYON4QLpYwKCbiwL
-Q4y06YTw4A7lp+B2JKLc70yRcjbixeAFlZfbhmGITTNAl3j8+48hRLLkJ+s8eT1r
-DS1UkYi2xBSNa6TVtNxbDUwVTzzxDe+b8tW2BfC7TBOX2oq6e6ebRa+ghZFVLNY1
-3y+FilXGNMB7IvZ378idHYTNaiJuYXNkrd8UGunwK4NCWdZk05L9GdKeQ6DN380Y
-L4QkKpINXSKjneWV7IITMFhvRZCgOVAmoHaq6kaGsl/FwHBA9I8hHXuSyvke8UMP
-dmvR8ggv5wiY9NDjW55h7M+UIqEaoXws1algIKB/TWm4/RnQcrxoXBX16wyidzcv
-Mb0BawlXZui0MNUSnZtxHMxrjejdvZdqtskHl9srB1QThH0jasmUqbQPxCnxMbf1
-4LhIp6XlXJFF1btgfCexNmcPuqeOMMDQ+du6Hqj2Yl5GYo2McWvjpSgkt5VmQfIz
-=X8YA
------END PGP PUBLIC KEY BLOCK-----"
-EOF
-		cat $TMPFILE | sudo chroot $CHROOT_TARGET apt-key add -
-		rm $TMPFILE
-		sudo chroot $CHROOT_TARGET apt-get update
-	fi
-	# use debbindiff from unstable
-	if [ "$SUITE" = "testing" ] ; then
-		echo "deb $MIRROR unstable main"        | sudo tee -a $CHROOT_TARGET/etc/apt/sources.list > /dev/null
-		sudo chroot $CHROOT_TARGET apt-get update
-		# install debbindiff from unstable without re-adding all recommends...
-		sudo chroot $CHROOT_TARGET apt-get install -y -t unstable --no-install-recommends debbindiff
-	fi
-	echo
-	sudo chroot $CHROOT_TARGET dpkg -l debbindiff
-	echo
-
-	sudo umount -l $CHROOT_TARGET/proc
-}
-
-cleanup() {
-	if [ -d $CHROOT_TARGET ]; then
-		sudo umount -l $CHROOT_TARGET/proc || true
-		sudo rm -rf --one-file-system $CHROOT_TARGET || fuser -mv $CHROOT_TARGET
-	fi
-}
-trap cleanup INT TERM EXIT
-bootstrap $@
-
-trap - INT TERM EXIT
-
-# pivot the new schroot in place
-rand=$RANDOM
-if [ -d $SCHROOT_BASE/"$TARGET" ]
-then
-	sudo mv $SCHROOT_BASE/"$TARGET" $SCHROOT_BASE/"$TARGET"-"$rand"
-fi
-
-sudo mv $CHROOT_TARGET $SCHROOT_BASE/"$TARGET"
-
-if [ -d $SCHROOT_BASE/"$TARGET"-"$rand" ]
-then
-	sudo rm -rf --one-file-system $SCHROOT_BASE/"$TARGET"-"$rand" || ( echo "Warning: $SCHROOT_BASE/${TARGET}-$rand could not be fully removed." ; ls $SCHROOT_BASE/${TARGET}-$rand -la )
-fi
-
-# write the schroot config
-echo "Writing configuration"
-sudo tee /etc/schroot/chroot.d/jenkins-"$TARGET" <<-__END__
-	[jenkins-$TARGET]
-	description=Jenkins schroot $TARGET
-	directory=$SCHROOT_BASE/$TARGET
-	type=directory
-	root-users=jenkins
-	source-root-users=jenkins
-	union-type=aufs
-	__END__
-
-trap - INT TERM EXIT
diff --git a/bin/schroot-create.sh b/bin/schroot-create.sh
index 2293dff..8607c18 100755
--- a/bin/schroot-create.sh
+++ b/bin/schroot-create.sh
@@ -3,6 +3,7 @@
 # Copyright 2012-2015 Holger Levsen <holger at layer-acht.org>
 # Copyright      2013 Antonio Terceiro <terceiro at debian.org>
 # Copyright      2014 Joachim Breitner <nomeata at debian.org>
+# Copyright      2015 MAttia Rizzolo <mattia at mapreri.org>
 # released under the GPLv=2
 
 DEBUG=false
@@ -12,13 +13,14 @@ common_init "$@"
 # bootstraps a new chroot for schroot, and then moves it into the right location
 
 # $1 = schroot name
-# $2 = base suite
+# $2 = base distro/suite
 # $3 $4 ... = extra packages to install
 
 if [ $# -lt 2 ]; then
-	echo "usage: $0 TARGET SUITE [backports] CMD [ARG1 ARG2 ...]"
+	echo "usage: $0 TARGET SUITE [backports] [reproducible] [ARG1 ARG2 ...]"
 	exit 1
 fi
+
 TARGET="$1"
 shift
 SUITE="$1"
@@ -36,9 +38,13 @@ if [ "$1" = "backports" ] ; then
 	EXTRA_SOURCES[2]="deb $MIRROR ${SUITE}-backports main"
 	EXTRA_SOURCES[3]="deb-src $MIRROR ${SUITE}-backports main"
 	shift
-elif [ "$1" = "reproducible" ] ; then
+fi
+
+if [ "$1" = "reproducible" ] ; then
 	EXTRA_SOURCES[4]="deb http://reproducible.alioth.debian.org/debian/ ./"
 	EXTRA_SOURCES[5]="deb-src http://reproducible.alioth.debian.org/debian/ ./"
+	REPRODUCIBLE=true
+	shift
 fi
 
 if [ ! -d "$CHROOT_BASE" ]; then
@@ -106,20 +112,40 @@ bootstrap() {
 		[ -z "${EXTRA_SOURCES[$i]}" ] || echo "${EXTRA_SOURCES[$i]}"                     | sudo tee -a $CHROOT_TARGET/etc/apt/sources.list >/dev/null
 	done
 
-	if [ "$1" = "reproducible" ] ; then
+	if $REPRODUCIBLE ; then
 		TMPFILE=$(mktemp -u)
 		add_repokey $CHROOT_TARGET/$TMPFILE
 		sudo chroot $CHROOT_TARGET bash $TMPFILE
 		rm $CHROOT_TARGET/$TMPFILE
-		shift
 	fi
 
+
 	sudo chroot $CHROOT_TARGET apt-get update
 	if [ -n "$1" ] ; then
 		for d in proc dev dev/pts ; do
 			sudo mount --bind /$d $CHROOT_TARGET/$d
 		done
+		set -x
+		sudo chroot $CHROOT_TARGET apt-get update
+		# install debbindiff with all recommends...
+		if [ "$1" = "debbindiff" ] ; then
+			sudo chroot $CHROOT_TARGET apt-get install -y --install-recommends debbindiff
+		fi
 		sudo chroot $CHROOT_TARGET apt-get install -y --no-install-recommends "$@" sudo
+		# always use debbindiff from unstable
+		if [ "$SUITE" = "testing" ] && [ "$1" = "debbindiff" ] ; then
+			echo "deb $MIRROR unstable main"        | sudo tee -a $CHROOT_TARGET/etc/apt/sources.list > /dev/null
+			sudo chroot $CHROOT_TARGET apt-get update
+			# install debbindiff from unstable without re-adding all recommends...
+			sudo chroot $CHROOT_TARGET apt-get install -y -t unstable --no-install-recommends debbindiff
+		fi
+		if ! $DEBUG ; then set +x ; fi
+		# double check debbindiff version
+		if [ "$1" = "debbindiff" ] ; then
+			echo
+			sudo chroot $CHROOT_TARGET dpkg -l debbindiff
+			echo
+		fi
 		# umount in reverse order
 		for d in dev/pts dev proc ; do
 			sudo umount -l $CHROOT_TARGET/$d
@@ -133,7 +159,7 @@ bootstrap() {
 
 cleanup() {
 	if [ -d $CHROOT_TARGET ]; then
-		sudo rm -rf --one-file-system $CHROOT_TARGET || fuser -mv $CHROOT_TARGET
+		sudo rm -rf --one-file-system $CHROOT_TARGET || ( echo "Warning: $CHROOT_TARGET could not be fully removed." ; fuser -mv $CHROOT_TARGET ; ls $CHROOT_TARGET -la )
 	fi
 }
 trap cleanup INT TERM EXIT
@@ -150,9 +176,8 @@ fi
 
 sudo mv $CHROOT_TARGET $SCHROOT_BASE/"$TARGET"
 
-if [ -d $SCHROOT_BASE/"$TARGET"-"$rand" ]
-then
-	sudo rm -rf --one-file-system $SCHROOT_BASE/"$TARGET"-"$rand"
+if [ -d $SCHROOT_BASE/"$TARGET"-"$rand" ] ; then
+	sudo rm -rf --one-file-system $SCHROOT_BASE/"$TARGET"-"$rand" || ( echo "Warning: $SCHROOT_BASE/${TARGET}-$rand could not be fully removed." ; fuser -mv $SCHROOT_BASE/${TARGET}-$rand ; ls $SCHROOT_BASE/${TARGET}-$rand -la )
 fi
 
 # write the schroot config
diff --git a/job-cfg/reproducible.yaml b/job-cfg/reproducible.yaml
index 5c4f875..1187724 100644
--- a/job-cfg/reproducible.yaml
+++ b/job-cfg/reproducible.yaml
@@ -292,12 +292,12 @@
         - '{name}_setup_schroot_unstable_debbindiff':
             my_description: 'Setup schroot for running debbindiff in a unstable environment (this is needed to be able to correctly investigate haskell binaries...)'
             my_timed: '23 0 * * *'
-            my_shell: '/srv/jenkins/bin/reproducible_setup_schroot.sh reproducible-unstable-debbindiff unstable debbindiff locales-all'
+            my_shell: '/srv/jenkins/bin/schroot-create.sh reproducible-unstable-debbindiff unstable debbindiff locales-all'
             my_recipients: 'qa-jenkins-scm at lists.alioth.debian.org'
         - '{name}_setup_schroot_testing_debbindiff':
             my_description: 'Setup schroot for running debbindiff in a testing environment (this is needed to be able to correctly investigate haskell binaries...)'
             my_timed: '23 0 * * *'
-            my_shell: '/srv/jenkins/bin/reproducible_setup_schroot.sh reproducible-testing-debbindiff testing debbindiff locales-all'
+            my_shell: '/srv/jenkins/bin/schroot-create.sh reproducible-testing-debbindiff testing debbindiff locales-all'
             my_recipients: 'qa-jenkins-scm at lists.alioth.debian.org'
         - '{name}_setup_schroot_unstable':
             my_description: 'Setup unstable schroot for fetching source packages for the builder jobs.'

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