[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