#!/bin/sh set -e . /usr/share/mgatools/functions if [ "$1" = "--dry-run" ]; then dryrun=echo shift fi nosync= if [ "$1" = "--no-sync" ]; then nosync=yes shift fi noconfirm= if [ "$1" = "--no-confirm" ]; then noconfirm=yes shift fi if [ $# != 3 ]; then echo "Usage: $0 [--dry-run] [--no-sync] [--no-confirm]
" >&2 exit 1 fi valid_release "$1" valid_section "$2" release="$1" section="$2" srcname="$3" for file in "$distribdir/$release/SRPMS/$section/updates_testing/"*.rpm; do # Check exact match bfile=$(basename "$file") if [ "$bfile" = "$srcname" ]; then srcpkg=$bfile break fi # Check for src package name fname=$(rpm -qp --qf '%{NAME}' "$file") if [ "$fname" = "$srcname" ]; then srcpkg=$bfile break fi done if [ -z "$srcpkg" ]; then echo "The package '$srcname' could not be found in the '$release/$section/updates_testing' repository." >&2 exit 2 fi # Safety check if [ "$srcname" != "$srcpkg" -a -z "$noconfirm" ]; then echo "This SRPM (and matching binaries) will be moved from 'updates_testing' to 'updates':" echo echo " $srcpkg" echo read -p "Are you sure? [Y/n] " yn [ -z "$yn" ] yn=y case $yn in [Yy]*) continue;; *) exit;; esac fi function movepkg() { srcdir="$1" destdir="$2" srcpkg="$3" content="$4" commands="$5" for file in "$srcdir/"*.rpm; do fname=$(rpm -qp --qf '%{SOURCERPM}' "$file") if [ "$fname" = "$srcpkg" ]; then echo " $(basename $file)" | tee -a "$content" $dryrun mv -v -f "$file" "$destdir" >>"$commands" 2>&1 fi done } mailcontent=$(mktemp) mailcommands=$(mktemp) echo "" echo "Moving binary and source rpms:" | tee -a "$mailcontent" for arch in $arches; do echo "- $arch:" | tee -a "$mailcontent" movepkg "$distribdir/$release/$arch/media/$section/updates_testing" "$distribdir/$release/$arch/media/$section/updates/" "$srcpkg" "$mailcontent" "$mailcommands" movepkg "$distribdir/$release/$arch/media/debug/$section/updates_testing" "$distribdir/$release/$arch/media/debug/$section/updates/" "$srcpkg" "$mailcontent" "$mailcommands" done echo "- source:" | tee -a "$mailcontent" echo " $srcpkg" | tee -a "$mailcontent" echo >> "$mailcontent" echo >> "$mailcontent" $dryrun mv -v -f "$distribdir/$release/SRPMS/$section/updates_testing/$srcpkg" "$distribdir/$release/SRPMS/$section/updates/" >>"$mailcommands" 2>&1 if [ -n "$dryrun" ]; then cat "$mailcontent" "$mailcommands" else if [ -n "$nosync" ]; then echo >>"$mailcontent" echo "Warning: hdlist update+sync was not performed during this move" >>"$mailcontent" echo >>"$mailcontent" echo >>"$mailcontent" fi cat "$mailcommands" >>"$mailcontent" /usr/bin/mailx -s "mga-move-update $release $section $srcname" -S "from=$moveupdate_mailfrom" "$moveupdate_mailto" < "$mailcontent" if [ -z "$nosync" ]; then update_distro_hdlist "$release" "$section" "updates_testing" update_distro_hdlist "$release" "$section" "updates" update_common_MD5SUM "$release" mirror_repository "$release" fi fi rm -f "$mailcontent" "$mailcommands"