]> git.decadent.org.uk Git - dak.git/blobdiff - scripts/debian/byhand-di
byhand-di: fix version match
[dak.git] / scripts / debian / byhand-di
index 0a004f3899956e22e4f0580dc2f56c126b945879..3ba2f0057310ebcceac24592c2226c30c9301cf6 100755 (executable)
@@ -1,4 +1,8 @@
-#!/bin/sh -ue
+#!/bin/bash
+
+set -u
+set -e
+set -o pipefail
 
 if [ $# -lt 4 ]; then
        echo "Usage: $0 filename version arch changes_file"
@@ -16,8 +20,9 @@ error() {
 }
 
 # Check validity of version number
-# Expected are: YYYYMMDD, YYYYMMDD.x, YYYYMMDD<suite>x
-if ! echo "$VERSION" | grep -Eq "^[0-9]{8}(|(\.|[a-z]+)[0-9]+)$"; then
+# Expected are: YYYYMMDD, YYYYMMDD.x, YYYYMMDD<suite>x, YYYYMMDD+<suite>x,
+# YYYYMMDD+debXuZ and the +b[0-9] on the end
+if ! echo "$VERSION" | grep -Eq "^[0-9]{8}((\.|\+?[a-z]+|\+deb[0-9]+u)[0-9]+)?(\+b[0-9])?$"; then
        error "Invalid version: '$VERSION'"
 fi
 
@@ -28,7 +33,7 @@ case $SUITE in
     "")
        error "Error: unable to determine suite from Changes file"
        ;;
-    unstable|sid)
+    unstable|sid|*-proposed-updates)
        : # nothing to do
        ;;
     *)
@@ -37,7 +42,7 @@ case $SUITE in
 esac
 
 # This must end with /
-TARGET="/srv/ftp.debian.org/ftp/dists/$SUITE/main/installer-$ARCH/"
+TARGET="/srv/ftp-master.debian.org/ftp/dists/$SUITE/main/installer-$ARCH/"
 
 # Check validity of the target directory
 # This could fail, for example for new architectures; doing
@@ -50,10 +55,14 @@ if [ -d "$TARGET/$VERSION" ]; then
        error "Directory already exists: $TARGET/$VERSION"
 fi
 
+# We know the VERSION is sane by here, we just need to make sure we escape the + in +b1 (if any)
+# It needs 'g' as well as we may have +$DIST+b[0-9] or +debXuZ+bY
+VERSIONREGEXP="$(echo $VERSION | sed 's@+@\\\+@g')"
+
 # We know all data to be in ./installer-<arch>/<version>; see if there's
 # anything else in the tarball except that and the 'current' symlink
 if tar tzf "$TARBALL" | \
-   grep -Eqv "^\./(installer-$ARCH/($VERSION/.*|current|)|)$"; then
+   grep -Eqv "^\./(installer-$ARCH/($VERSIONREGEXP/.*|current|)|)$"; then
        error "Tarball contains unexpected contents"
 fi
 
@@ -95,6 +104,10 @@ mv "$TMPDIR/installer-$ARCH/current"  "$TARGET"
 find "$TARGET/$VERSION" -type d -exec chmod 755 {} +
 find "$TARGET/$VERSION" -type f -exec chmod 644 {} +
 
+# Make sure nothing symlinks outside of the ftpdir
+# Shouldnt happen, but better be sure.
+symlinks -d -r /srv/ftp-master.debian.org/ftp
+
 trap - EXIT
 cleanup