[Qa-jenkins-scm] [jenkins.debian.net] 01/01: reproducible Arch Linux: update repo whenever scheduler is run

Holger Levsen holger at layer-acht.org
Fri Dec 1 01:38:12 UTC 2017


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 5443099469f41a96f3327b8a99230e6dfac28774
Author: Holger Levsen <holger at layer-acht.org>
Date:   Fri Dec 1 01:38:02 2017 +0000

    reproducible Arch Linux: update repo whenever scheduler is run
    
    Signed-off-by: Holger Levsen <holger at layer-acht.org>
---
 bin/reproducible_archlinux_scheduler.sh | 75 +++++++++++++--------------------
 1 file changed, 30 insertions(+), 45 deletions(-)

diff --git a/bin/reproducible_archlinux_scheduler.sh b/bin/reproducible_archlinux_scheduler.sh
index bfce7ec..75d89ee 100755
--- a/bin/reproducible_archlinux_scheduler.sh
+++ b/bin/reproducible_archlinux_scheduler.sh
@@ -13,53 +13,38 @@ common_init "$@"
 set -e
 
 update_archlinux_repositories() {
-	# every day we check for new archlinux packages in all tested repositories
-	DUMMY=$(mktemp -t archlinux-dummy-XXXXXXXX)
-	touch -d "$(date -d '1 day ago' '+%Y-%m-%d') 00:00 UTC" $DUMMY
-	local NEED_UPDATE=false
-	local REPO
+	local SESSION="archlinux-scheduler-$RANDOM"
+	schroot --begin-session --session-name=$SESSION -c jenkins-reproducible-archlinux
+	schroot --run-session -c $SESSION --directory /var/tmp -- sudo pacman -Syu --noconfirm
+	# Get a list of unique package bases.  Non-split packages don't have a pkgbase set
+	# so we need to use the pkgname for them instead.
+	schroot --run-session -c $SESSION --directory /var/tmp -- expac -S '%r %e %n %v' | \
+		while read repo pkgbase pkgname version; do
+			if [[ "$pkgbase" = "(null)" ]]; then
+				printf '%s %s %s\n' "$repo" "$pkgname" "$version"
+			else
+				printf '%s %s %s\n' "$repo" "$pkgbase" "$version"
+			fi
+		done | sort -u > "$ARCHLINUX_PKGS"_full_pkgbase_list
+
 	for REPO in $ARCHLINUX_REPOS ; do
-		if [ ! -f ${ARCHLINUX_PKGS}_$REPO ] || [ $DUMMY -nt ${ARCHLINUX_PKGS}_$REPO ] ; then
-			NEED_UPDATE=true
-		fi
-	done
-	if $NEED_UPDATE ; then
-		local SESSION="archlinux-scheduler-$RANDOM"
-		schroot --begin-session --session-name=$SESSION -c jenkins-reproducible-archlinux
-		schroot --run-session -c $SESSION --directory /var/tmp -- sudo pacman -Syu --noconfirm
-		# Get a list of unique package bases.  Non-split packages don't have a pkgbase set
-		# so we need to use the pkgname for them instead.
-		schroot --run-session -c $SESSION --directory /var/tmp -- expac -S '%r %e %n %v' | \
-			while read repo pkgbase pkgname version; do
-				if [[ "$pkgbase" = "(null)" ]]; then
-					printf '%s %s %s\n' "$repo" "$pkgname" "$version"
-				else
-					printf '%s %s %s\n' "$repo" "$pkgbase" "$version"
+		echo "$(date -u ) - updating list of available packages in repository '$REPO'."
+		grep "^$REPO" "$ARCHLINUX_PKGS"_full_pkgbase_list | \
+			while read repo pkgbase version; do
+				printf '%s %s\n' "$pkgbase" "$version"
+				VERSION=$(cat $BASE/archlinux/$REPO/$pkgbase/pkg.version)
+				if [ "$VERSION" = "0.rb-unknown-1" ] ; then
+					echo "$(date -u ) - we know $REPO/$pkgbase has dummy $VERSION version, but c'est la vie."
+				elif [ "$(schroot --run-session -c $SESSION --directory /var/tmp -- vercmp $version $VERSION)" = "1" ] ; then
+					echo "$(date -u ) - we know about $REPO/$pkgbase $VERSION, but the repo has $version, so rescheduling."
+					touch $BASE/archlinux/$REPO/$pkgbase/pkg.needs_build
 				fi
-			done | sort -u > "$ARCHLINUX_PKGS"_full_pkgbase_list
-
-		for REPO in $ARCHLINUX_REPOS ; do
-			echo "$(date -u ) - updating list of available packages in repository '$REPO'."
-			grep "^$REPO" "$ARCHLINUX_PKGS"_full_pkgbase_list | \
-				while read repo pkgbase version; do
-					printf '%s %s\n' "$pkgbase" "$version"
-					VERSION=$(cat $BASE/archlinux/$REPO/$pkgbase/pkg.version)
-					if [ "$VERSION" = "0.rb-unknown-1" ] ; then
-						echo "$(date -u ) - we know $REPO/$pkgbase has dummy $VERSION version, but c'est la vie."
-					elif [ "$(schroot --run-session -c $SESSION --directory /var/tmp -- vercmp $version $VERSION)" = "1" ] ; then
-						echo "$(date -u ) - we know about $REPO/$pkgbase $VERSION, but the repo has $version, so rescheduling."
-						touch $BASE/archlinux/$REPO/$pkgbase/pkg.needs_build
-					fi
-				done > "$ARCHLINUX_PKGS"_"$REPO"
-			echo "$(date -u ) - these packages in repository '$REPO' are known to us:"
-			cat ${ARCHLINUX_PKGS}_$REPO
-		done
-		rm "$ARCHLINUX_PKGS"_full_pkgbase_list
-		schroot --end-session -c $SESSION
-	else
-		echo "$(date -u ) - repositories recent enough, no update needed."
-	fi
-	rm $DUMMY > /dev/null
+			done > "$ARCHLINUX_PKGS"_"$REPO"
+		echo "$(date -u ) - these packages in repository '$REPO' are known to us:"
+		cat ${ARCHLINUX_PKGS}_$REPO
+	done
+	rm "$ARCHLINUX_PKGS"_full_pkgbase_list
+	schroot --end-session -c $SESSION
 }
 
 echo "$(date -u ) - Updating Arch Linux repositories."

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