summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorColin Guthrie <colin@mageia.org>2014-07-29 01:05:32 +0100
committerColin Guthrie <colin@mageia.org>2014-07-29 01:42:38 +0100
commit5a59bfda0e70d5314f831ee7010220b5e78744a8 (patch)
treea0a31b2514516cde7d2451e7da3d862d59376b7f
parent02672c33c8935bbf6d8af07aa0ca3e16e781f90b (diff)
downloadmgatools-5a59bfda0e70d5314f831ee7010220b5e78744a8.tar
mgatools-5a59bfda0e70d5314f831ee7010220b5e78744a8.tar.gz
mgatools-5a59bfda0e70d5314f831ee7010220b5e78744a8.tar.bz2
mgatools-5a59bfda0e70d5314f831ee7010220b5e78744a8.tar.xz
mgatools-5a59bfda0e70d5314f831ee7010220b5e78744a8.zip
move: Add support for moving packages from cauldron update_testing to release.
Most of the code is the same/shared so it makes sense to do this in one script
-rwxr-xr-xmga-move-update72
1 files changed, 60 insertions, 12 deletions
diff --git a/mga-move-update b/mga-move-update
index cd9138a..a43605e 100755
--- a/mga-move-update
+++ b/mga-move-update
@@ -33,17 +33,24 @@ release="$1"
section="$2"
srcname="$3"
+exactsrpm=
+destination='updates'
+[ 'cauldron' = "$release" ] && destination='release'
+
for file in "$distribdir/$release/SRPMS/$section/updates_testing/"*.rpm; do
+ pkg=$(rpm -qp --qf '%{NAME}' "$file")
+
# Check exact match
bfile=$(basename "$file")
if [ "$bfile" = "$srcname" ]; then
+ exactsrpm=y
+ srcname=$pkg
srcpkg=$bfile
break
fi
# Check for src package name
- fname=$(rpm -qp --qf '%{NAME}' "$file")
- if [ "$fname" = "$srcname" ]; then
+ if [ "$pkg" = "$srcname" ]; then
srcpkg=$bfile
break
fi
@@ -54,12 +61,37 @@ if [ -z "$srcpkg" ]; then
exit 2
fi
+oldsrcpkg=
+if [ 'release' = "$destination" ]; then
+ # In cauldron we also have to move the old version from release to ~schedbot/old/
+ # We know srcname is a %{name} now.
+ for file in "$distribdir/$release/SRPMS/$section/release/"*.rpm; do
+ pkg=$(rpm -qp --qf '%{NAME}' "$file")
+ if [ "$pkg" = "$srcname" ]; then
+ oldsrcpkg=$bfile
+ break
+ fi
+ done
+
+ # (cg) Is this a valid check? What if it's a new package introduced first into testing
+ # Ultimately this is not very likely, so ignore it for now.
+ if [ -z "$oldsrcpkg" ]; then
+ echo "The package '$srcname' could not be found in the '$release/$section/updates_testing' repository." >&2
+ exit 2
+ fi
+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"
+if [ -n "$exactsrpm" -a -z "$noconfirm" -o 'release' = "$destination" ]; then
+ echo "This SRPM (and matching binaries) will be moved from 'updates_testing' to '$destination':"
+ echo "- $srcpkg"
echo
+ if [ 'release' = "$destination" ]; then
+ echo "This SRPM (and matching binaries) will be moved from 'release' to '\~schedbot/old':"
+ echo "- $oldsrcpkg"
+ echo
+ fi
read -p "Are you sure? [Y/n] " yn
[ -z "$yn" ] yn=y
@@ -78,8 +110,8 @@ function movepkg()
commands="$5"
for file in "$srcdir/"*.rpm; do
- fname=$(rpm -qp --qf '%{SOURCERPM}' "$file")
- if [ "$fname" = "$srcpkg" ]; then
+ srpm=$(rpm -qp --qf '%{SOURCERPM}' "$file")
+ if [ "$srpm" = "$srcpkg" ]; then
echo " $(basename $file)" | tee -a "$content"
$dryrun mv -v -f "$file" "$destdir" >>"$commands" 2>&1
fi
@@ -88,18 +120,34 @@ function movepkg()
mailcontent=$(mktemp)
mailcommands=$(mktemp)
+
+if [ 'release' = "$destination" ]; then
+ 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/release" "/var/lib/schedbot/old/" "$oldsrcpkg" "$mailcontent" "$mailcommands"
+ movepkg "$distribdir/$release/$arch/media/debug/$section/release" "/var/lib/schedbot/old/" "$oldsrcpkg" "$mailcontent" "$mailcommands"
+ done
+ echo "- source:" | tee -a "$mailcontent"
+ echo " $oldsrcpkg" | tee -a "$mailcontent"
+ echo >> "$mailcontent"
+ echo >> "$mailcontent"
+ $dryrun mv -v -f "$distribdir/$release/SRPMS/$section/release/$oldsrcpkg" "/var/lib/schedbot/old/" >>"$mailcommands" 2>&1
+fi
+
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"
+ movepkg "$distribdir/$release/$arch/media/$section/updates_testing" "$distribdir/$release/$arch/media/$section/$destination/" "$srcpkg" "$mailcontent" "$mailcommands"
+ movepkg "$distribdir/$release/$arch/media/debug/$section/updates_testing" "$distribdir/$release/$arch/media/debug/$section/$destination/" "$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
+$dryrun mv -v -f "$distribdir/$release/SRPMS/$section/updates_testing/$srcpkg" "$distribdir/$release/SRPMS/$section/$destination/" >>"$mailcommands" 2>&1
if [ -n "$dryrun" ]; then
cat "$mailcontent" "$mailcommands"
@@ -116,7 +164,7 @@ else
if [ -z "$nosync" ]; then
update_distro_hdlist "$release" "$section" "updates_testing"
- update_distro_hdlist "$release" "$section" "updates"
+ update_distro_hdlist "$release" "$section" "$destination"
update_common_MD5SUM "$release"
mirror_repository "$release"
fi