-#!/bin/sh -ue
+#!/bin/bash
+
+set -u
+set -e
+set -o pipefail
if [ $# -lt 4 ]; then
echo "Usage: $0 filename version arch changes_file"
}
# 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 and the +b[0-9] on the end
+if ! echo "$VERSION" | grep -Eq "^[0-9]{8}(|(\.|\+?[a-z]+)[0-9]+)(\+b[0-9])?$"; then
error "Invalid version: '$VERSION'"
fi
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
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]
+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
# Make sure nothing symlinks outside of the ftpdir
# Shouldnt happen, but better be sure.
-symlinks -d -r /srv/ftp.debian.org/ftp
+symlinks -d -r /srv/ftp-master.debian.org/ftp
trap - EXIT
cleanup