summaryrefslogtreecommitdiffstats
path: root/scripts/uupdate.sh
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 20:32:59 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 20:32:59 +0000
commit4d57e0a8dab2139a631a21aab862487481548702 (patch)
treef7cea0b9939e2ecb7a301de6c83bada29452046d /scripts/uupdate.sh
parentInitial commit. (diff)
downloaddevscripts-upstream.tar.xz
devscripts-upstream.zip
Adding upstream version 2.23.7.upstream/2.23.7upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'scripts/uupdate.sh')
-rwxr-xr-xscripts/uupdate.sh1142
1 files changed, 1142 insertions, 0 deletions
diff --git a/scripts/uupdate.sh b/scripts/uupdate.sh
new file mode 100755
index 0000000..ca6811f
--- /dev/null
+++ b/scripts/uupdate.sh
@@ -0,0 +1,1142 @@
+#!/bin/bash
+#
+# Upgrade an existing package
+# Christoph Lameter, December 24, 1996
+# Many modifications by Julian Gilbey <jdg@debian.org> January 1999 onwards
+
+# Copyright 1999-2003, Julian Gilbey
+# Copyright 2015 Osamu Aoki <osamu@debian.org> (OPMODE=3)
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+
+# Command line syntax is one of:
+# For a new archive:
+# uupdate [-v <Version>] [-r <gain-root-command>] [-u] <new upstream archive>
+# or
+# uupdate [-r <gain-root-command>] [-u] <new upstream archive> <Version>
+# or
+# uupdate -v <Version> [-r <gain-root-command>] [-n <name>] [-u] -f
+# For a patch file:
+# uupdate [-v <Version>] [-r <gain-root-command>] -p <patch>.gz
+#
+# In the first case, the new version number may be specified explicitly,
+# either with the -v option before the archive name, or with a version
+# number after the archive file name. If both are given, the latter
+# takes precedence.
+#
+# The -u option requests that the new .orig.tar.{gz|bz2} archive be the
+# pristine source, although this only makes sense when the original
+# archive itself is a tar.gz or tgz archive.
+#
+# Has to be called from within the source archive
+
+set -e
+
+PROGNAME=${0##*/}
+MODIFIED_CONF_MSG='Default settings modified by devscripts configuration files:'
+
+usage() {
+ echo \
+"Usage for a new archive:
+ $PROGNAME [options] <new upstream archive> [<version>]
+or
+ $PROGNAME [options] -f|--find
+For a patch file:
+ $PROGNAME [options] --patch|-p <patch>[.gz|.bz2|.lzma|.xz]
+Options are:
+ --no-conf, --noconf
+ Don't read devscripts config files;
+ must be the first option given
+ --upstream-version <version>, -v <version>
+ specify version number of upstream package
+ --force-bad-version, -b
+ Force a version number to be less than the current one
+ (e.g., when backporting).
+ --rootcmd <gain-root-command>, -r <gain-root-command>
+ which command to be used to become root
+ for package-building
+ --pristine, -u Source is pristine upstream source and should be
+ copied to <pkg>_<version>.orig.tar.{gz|bz2|lzma|xz};
+ not valid for --patch
+ --no-symlink Copy new upstream archive to new location as
+ <pkg>_<version>.orig.tar.{gz|bz2|lzma|xz} instead of
+ making a symlink;
+ if it already exists, leave it there as is.
+ --find, -f Find all upstream tarballs in ../ which match
+ <pkg>_<version>.orig.tar.{gz|bz2|lzma|xz} or
+ <pkg>_<version>.orig-<component>.tar.{gz|bz2|lzma|xz} ;
+ --upstream-version required; pristine source required;
+ not valid for --patch
+ --verbose Give verbose output
+
+$PROGNAME [--help|--version]
+ show this message or give version information.
+
+$MODIFIED_CONF_MSG"
+}
+
+version() {
+ echo \
+"This is $PROGNAME, from the Debian devscripts package, version ###VERSION###
+Copyright 1999-2003, Julian Gilbey <jdg@debian.org>, all rights reserved.
+Original code by Christoph Lameter.
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License, version 2 or later."
+}
+
+mustsetvar() {
+ if [ "x$2" = x ]
+ then
+ echo >&2 "$PROGNAME: unable to determine $3"
+ exit 1
+ else
+ # echo "$PROGNAME: $3 is $2"
+ eval "$1=\"\$2\""
+ fi
+}
+
+findzzz() {
+ LISTNAME=$(ls -1 $@ 2>/dev/null |sed -e 's,\.[^\.]*$,,' | sort | uniq )
+ for f in $LISTNAME ; do
+ if [ -r "$f.xz" ]; then
+ echo "$f.xz"
+ elif [ -r "$f.bz2" ]; then
+ echo "$f.bz2"
+ elif [ -r "$f.gz" ]; then
+ echo "$f.gz"
+ elif [ -r "$f.lzma" ]; then
+ echo "$f.lzma"
+ fi
+ done
+}
+
+# Match Pattern to extract a new version number from a given filename.
+# I already had to fiddle with this a couple of times so I better put it up
+# at front. It is now written as a Perl regexp to make it nicer. It only
+# matches things like: file.3.4 and file2-3.2; it will die on names such
+# as file3-2.7a, though.
+MPATTERN='^(?:[a-zA-Z][a-zA-Z0-9]*(?:-|_|\.))+(\d+\.(?:\d+\.)*\d+)$'
+
+STATUS=0
+BADVERSION=""
+
+# Boilerplate: set config variables
+DEFAULT_UUPDATE_ROOTCMD=
+DEFAULT_UUPDATE_PRISTINE=yes
+DEFAULT_UUPDATE_SYMLINK_ORIG=yes
+VARS="UUPDATE_ROOTCMD UUPDATE_PRISTINE UUPDATE_SYMLINK_ORIG"
+
+SUFFIX="1"
+if command -v dpkg-vendor >/dev/null; then
+ VENDER="$(dpkg-vendor --query Vendor 2>/dev/null|tr 'A-Z' 'a-z')"
+ case "$VENDER" in
+ debian) SUFFIX="1" ;;
+ *) SUFFIX="0${VENDER}1" ;;
+ esac
+fi
+
+if [ "$1" = "--no-conf" -o "$1" = "--noconf" ]; then
+ shift
+ MODIFIED_CONF_MSG="$MODIFIED_CONF_MSG
+ (no configuration files read)"
+
+ # set defaults
+ for var in $VARS; do
+ eval "$var=\$DEFAULT_$var"
+ done
+else
+ # Run in a subshell for protection against accidental errors
+ # in the config files
+ eval $(
+ set +e
+ for var in $VARS; do
+ eval "$var=\$DEFAULT_$var"
+ done
+
+ for file in /etc/devscripts.conf ~/.devscripts
+ do
+ [ -r $file ] && . $file
+ done
+
+ set | grep -E '^(UUPDATE|DEVSCRIPTS)_')
+
+ # check sanity
+ case "$UUPDATE_PRISTINE" in
+ yes|no) ;;
+ *) UUPDATE_PRISTINE=yes ;;
+ esac
+
+ case "$UUPDATE_SYMLINK_ORIG" in
+ yes|no) ;;
+ *) UUPDATE_SYMLINK_ORIG=yes ;;
+ esac
+
+ # set config message
+ MODIFIED_CONF=''
+ for var in $VARS; do
+ eval "if [ \"\$$var\" != \"\$DEFAULT_$var\" ]; then
+ MODIFIED_CONF_MSG=\"\$MODIFIED_CONF_MSG
+ $var=\$$var\";
+ MODIFIED_CONF=yes;
+ fi"
+ done
+
+ if [ -z "$MODIFIED_CONF" ]; then
+ MODIFIED_CONF_MSG="$MODIFIED_CONF_MSG
+ (none)"
+ fi
+fi
+
+
+TEMP=$(getopt -s bash -o v:p:r:fubs \
+ --long upstream-version:,patch:,rootcmd: \
+ --long force-bad-version \
+ --long pristine,no-pristine,nopristine \
+ --long symlink,no-symlink,nosymlink \
+ --long no-conf,noconf \
+ --long find \
+ --long verbose \
+ --long help,version -n "$PROGNAME" -- "$@") || (usage >&2; exit 1)
+
+eval set -- $TEMP
+
+OPMODE=2
+# Process Parameters
+while [ "$1" ]; do
+ case $1 in
+ --force-bad-version|-b)
+ BADVERSION="-b" ;;
+ --upstream-version|-v)
+ shift; NEW_VERSION="$1" ;;
+ --patch|-p)
+ shift; PATCH="$1" ; OPMODE=1 ;;
+ --find|-f)
+ OPMODE=3 ;;
+ --rootcmd|-r)
+ shift; UUPDATE_ROOTCMD="$1" ;;
+ --pristine|-u)
+ UUPDATE_PRISTINE=yes ;;
+ --no-pristine|--nopristine)
+ UUPDATE_PRISTINE=no ;;
+ --symlink|-s)
+ UUPDATE_SYMLINK_ORIG=yes ;;
+ --no-symlink|--nosymlink)
+ UUPDATE_SYMLINK_ORIG=no ;;
+ --no-conf|--noconf)
+ echo "$PROGNAME: $1 is only acceptable as the first command-line option!" >&2
+ exit 1 ;;
+ --verbose)
+ UUPDATE_VERBOSE=yes ;;
+ --help) usage; exit 0 ;;
+ --version) version; exit 0 ;;
+ --) shift; break ;;
+ *) echo "$PROGNAME: bug in option parser, sorry!" >&2 ; exit 1 ;;
+ esac
+ shift
+done
+
+if [ "$OPMODE" = 1 ]; then
+ # --patch mode
+ if [ $# -ne 0 ]; then
+ echo "$PROGNAME: additional archive name/version number is not allowed with --patch" >&2
+ echo "$PROGNAME: Run $PROGNAME --help for usage information" >&2
+ exit 1
+ fi
+elif [ "$OPMODE" = 2 ]; then
+ # old "uupdate" used in the version=3 watch file
+ case $# in
+ 0) echo "$PROGNAME: no archive given" >&2 ; exit 1 ;;
+ 1) ARCHIVE="$1" ;;
+ 2) ARCHIVE="$1"; NEW_VERSION="$2" ;;
+ *) echo "$PROGNAME: too many non-option arguments" >&2
+ echo "$PROGNAME: Run $PROGNAME --help for usage information" >&2
+ exit 1 ;;
+ esac
+else
+ # new "uupdate -f ..." used in the version=4 watch file
+ if [ $# -ne 0 ]; then
+ echo "$PROGNAME: additional archive name/version number is not allowed with --component" >&2
+ echo "$PROGNAME: Run $PROGNAME --help for usage information" >&2
+ exit 1
+ fi
+fi
+
+# Get Parameters from current source archive
+
+if [ ! -f debian/changelog ]; then
+ echo "$PROGNAME: cannot find debian/changelog." >&2
+ echo "$PROGNAME: Are you in the top directory of the source tree?" >&2
+ exit 1
+fi
+
+# Figure out package info we need
+mustsetvar PACKAGE "`dpkg-parsechangelog -SSource`" "source package"
+mustsetvar VERSION "`dpkg-parsechangelog -SVersion`" "source version"
+
+# Get epoch and upstream version
+eval $(echo "$VERSION" | perl -ne '/^(?:(\d+):)?(.*)/; print "SVERSION=$2\nEPOCH=$1\n";')
+
+if [ -n "$UUPDATE_VERBOSE" ]; then
+ if [ "$OPMODE" = 1 ]; then
+ echo "$PROGNAME: PATCH = \"$PATCH\" is the name of the patch file" >&2
+ fi
+ if [ "$OPMODE" = 2 ]; then
+ echo "$PROGNAME: ARCHIVE = \"$ARCHIVE\" is the name of the next tarball" >&2
+ echo "$PROGNAME: NEW_VERSION = \"$NEW_VERSION\" is the next pristine tarball version" >&2
+ fi
+ echo "$PROGNAME: PACKAGE = \"$PACKAGE\" is in the top of debian/changelog" >&2
+ echo "$PROGNAME: VERSION = \"$VERSION\" is in the top of debian/changelog" >&2
+ echo "$PROGNAME: EPOCH = \"$EPOCH\" is epoch part of \$VERSION" >&2
+ echo "$PROGNAME: SVERSION = \"$SVERSION\" is w/o-epoch part of \$VERSION" >&2
+fi
+
+UVERSION=$(expr "$SVERSION" : '\(.*\)-[0-9a-zA-Z.+~]*$')
+if [ -z "$UVERSION" ]; then
+ echo "$PROGNAME: a native Debian package cannot take upstream updates" >&2
+ exit 1
+fi
+
+if [ -n "$UUPDATE_VERBOSE" ]; then
+ echo "$PROGNAME: UVERSION = \"$UVERSION\" the upstream portion w/o-epoch of \$VERSION" >&2
+fi
+
+# Save pwd before we goes walkabout
+OPWD=$(pwd)
+
+if [ "$OPMODE" = 1 ]; then
+ # --patch mode
+ # do the patching
+ X="${PATCH##*/}"
+ case "$PATCH" in
+ /*)
+ if [ ! -r "$PATCH" ]; then
+ echo "$PROGNAME: cannot read patch file $PATCH! Aborting." >&2
+ exit 1
+ fi
+ case "$PATCH" in
+ *.gz) CATPATCH="zcat $PATCH"; X=${X%.gz};;
+ *.bz2) CATPATCH="bzcat $PATCH"; X=${X%.bz2};;
+ *.lzma) CATPATCH="xz -F lzma -dc $PATCH"; X=${X%.lzma};;
+ *.xz) CATPATCH="xzcat $PATCH"; X=${X%.xz};;
+ *) CATPATCH="cat $PATCH";;
+ esac
+ ;;
+ *)
+ if [ ! -r "$OPWD/$PATCH" -a ! -r "../$PATCH" ]; then
+ echo "$PROGNAME: cannot read patch file $PATCH! Aborting." >&2
+ exit 1
+ fi
+ case "$PATCH" in
+ *.gz)
+ if [ -r "$OPWD/$PATCH" ]; then
+ CATPATCH="zcat $OPWD/$PATCH"
+ else
+ CATPATCH="zcat ../$PATCH"
+ fi
+ X=${X%.gz}
+ ;;
+ *.bz2)
+ if [ -r "$OPWD/$PATCH" ]; then
+ CATPATCH="bzcat $OPWD/$PATCH"
+ else
+ CATPATCH="bzcat ../$PATCH"
+ fi
+ X=${X%.bz2}
+ ;;
+ *.lzma)
+ if [ -r "$OPWD/$PATCH" ]; then
+ CATPATCH="xz -F lzma -dc $OPWD/$PATCH"
+ else
+ CATPATCH="xz -F lzma -dc ../$PATCH"
+ fi
+ X=${X%.lzma}
+ ;;
+ *.xz)
+ if [ -r "$OPWD/$PATCH" ]; then
+ CATPATCH="xzcat $OPWD/$PATCH"
+ else
+ CATPATCH="xzcat ../$PATCH"
+ fi
+ X=${X%.xz}
+ ;;
+ *)
+ if [ -r "$OPWD/$PATCH" ]; then
+ CATPATCH="cat $OPWD/$PATCH"
+ else
+ CATPATCH="cat ../$PATCH"
+ fi
+ ;;
+ esac
+ ;;
+ esac
+ if [ "$NEW_VERSION" = "" ]; then
+ # Figure out the new version; we may have to remove a trailing ".diff"
+ NEW_VERSION=$(echo "$X" |
+ perl -ne 's/\.diff$//; /'"$MPATTERN"'/ && print $1')
+ if [ -z "$NEW_VERSION" ]; then
+ echo "$PROGNAME: new version number not recognized from given filename" >&2
+ echo "$PROGNAME: Please run $PROGNAME with the -v option" >&2
+ exit 1
+ fi
+
+ if [ -n "$EPOCH" ]; then
+ echo "$PROGNAME: New Release will be $EPOCH:$NEW_VERSION-$SUFFIX."
+ else
+ echo "$PROGNAME: New Release will be $NEW_VERSION-$SUFFIX."
+ fi
+ fi
+
+ # Strip epoch number
+ SNEW_VERSION=$(echo "$NEW_VERSION" | perl -pe 's/^\d+://')
+ if [ $SNEW_VERSION = $NEW_VERSION -a -n "$EPOCH" ]; then
+ NEW_VERSION="$EPOCH:$NEW_VERSION"
+ fi
+
+ # Sanity check
+ if [ -z "$BADVERSION" ] && dpkg --compare-versions "$NEW_VERSION-$SUFFIX" le "$VERSION"; then
+ echo "$PROGNAME: new version $NEW_VERSION-$SUFFIX <= current version $VERSION; aborting!" >&2
+ exit 1
+ fi
+
+ if [ -e "../$PACKAGE-$SNEW_VERSION" ]; then
+ echo "$PROGNAME: $PACKAGE-$SNEW_VERSION already exists in the parent directory!" >&2
+ echo "$PROGNAME: Aborting...." >&2
+ exit 1
+ fi
+ if [ -e "../$PACKAGE-$SNEW_VERSION.orig" ]; then
+ echo "$PROGNAME: $PACKAGE-$SNEW_VERSION.orig already exists in the parent directory!" >&2
+ echo "$PROGNAME: Aborting...." >&2
+ exit 1
+ fi
+
+ # Is the old version a .tar.gz or .tar.bz2 file?
+ if [ -r "../${PACKAGE}_$UVERSION.orig.tar.gz" ]; then
+ OLDARCHIVE="${PACKAGE}_$UVERSION.orig.tar.gz"
+ OLDARCHIVETYPE=gz
+ elif [ -r "../${PACKAGE}_$UVERSION.orig.tar.bz2" ]; then
+ OLDARCHIVE="${PACKAGE}_$UVERSION.orig.tar.bz2"
+ OLDARCHIVETYPE=bz2
+ elif [ -r "../${PACKAGE}_$UVERSION.orig.tar.lzma" ]; then
+ OLDARCHIVE="${PACKAGE}_$UVERSION.orig.tar.lzma"
+ OLDARCHIVETYPE=lzma
+ elif [ -r "../${PACKAGE}_$UVERSION.orig.tar.xz" ]; then
+ OLDARCHIVE="${PACKAGE}_$UVERSION.orig.tar.xz"
+ OLDARCHIVETYPE=xz
+ else
+ echo "$PROGNAME: can't find/read ${PACKAGE}_$UVERSION.orig.tar.{gz|bz2|lzma|xz}" >&2
+ echo "$PROGNAME: in the parent directory!" >&2
+ echo "$PROGNAME: Aborting...." >&2
+ exit 1
+ fi
+
+ # Clean package
+ if [ -n "$UUPDATE_ROOTCMD" ]; then
+ debuild -r"$UUPDATE_ROOTCMD" clean || {
+ echo "$PROGNAME: couldn't run debuild -r$UUPDATE_ROOTCMD clean successfully." >&2
+ echo "$PROGNAME: Aborting...." >&2
+ exit 1
+ }
+ else debuild clean || {
+ echo "$PROGNAME: couldn't run debuild -r$UUPDATE_ROOTCMD clean successfully." >&2
+ echo "$PROGNAME: Aborting...." >&2
+ exit 1
+ }
+ fi
+
+ cd $(pwd)/..
+ rm -rf $PACKAGE-$UVERSION.orig
+
+ # Unpacking .orig.tar.gz is not quite trivial any longer ;-)
+ TEMP_DIR=$(mktemp -d uupdate.XXXXXXXX) || {
+ echo "$PROGNAME: can't create temporary directory;" >&2
+ echo "$PROGNAME: aborting..." >&2
+ exit 1
+ }
+ cd $(pwd)/$TEMP_DIR
+ if [ "$OLDARCHIVETYPE" = gz ]; then
+ tar zxf ../$OLDARCHIVE || {
+ echo "$PROGNAME: can't untar $OLDARCHIVE;" >&2
+ echo "$PROGNAME: aborting..." >&2
+ exit 1
+ }
+ elif [ "$OLDARCHIVETYPE" = bz2 ]; then
+ tar --bzip2 -xf ../$OLDARCHIVE || {
+ echo "$PROGNAME: can't untar $OLDARCHIVE;" >&2
+ echo "$PROGNAME: aborting..." >&2
+ exit 1
+ }
+ elif [ "$OLDARCHIVETYPE" = lzma ]; then
+ tar --lzma -xf ../$OLDARCHIVE || {
+ echo "$PROGNAME: can't untar $OLDARCHIVE;" >&2
+ echo "$PROGNAME: aborting..." >&2
+ exit 1
+ }
+ elif [ "$OLDARCHIVETYPE" = xz ]; then
+ tar --xz -xf ../$OLDARCHIVE || {
+ echo "$PROGNAME: can't untar $OLDARCHIVE;" >&2
+ echo "$PROGNAME: aborting..." >&2
+ exit 1
+ }
+ else
+ echo "$PROGNAME: internal error: unknown OLDARCHIVETYPE: $OLDARCHIVETYPE" >&2
+ exit 1
+ fi
+
+ if [ $(ls | wc -l) -eq 1 ] && [ -d "$(ls)" ]; then
+ mv "$(ls)" ../${PACKAGE}-$UVERSION.orig
+ else
+ mkdir ../$PACKAGE-$UVERSION.orig
+ mv * ../$PACKAGE-$UVERSION.orig
+ fi
+ cd $(pwd)/..
+ rm -rf $TEMP_DIR
+
+ cd $(pwd)/$PACKAGE-$UVERSION.orig
+ if ! $CATPATCH > /dev/null; then
+ echo "$PROGNAME: can't run $CATPATCH;" >&2
+ echo "$PROGNAME: aborting..." >&2
+ exit 1
+ fi
+ if $CATPATCH | patch -sp1; then
+ cd $(pwd)/..
+ mv $PACKAGE-$UVERSION.orig $PACKAGE-$SNEW_VERSION.orig
+ echo "-- Originals could be successfully patched"
+ cp -a $PACKAGE-$UVERSION $PACKAGE-$SNEW_VERSION
+ cd $(pwd)/$PACKAGE-$SNEW_VERSION
+ if $CATPATCH | patch -sp1; then
+ echo "Success. The supplied diffs worked fine on the Debian sources."
+ else
+ echo "$PROGNAME: the diffs supplied did not apply cleanly!" >&2
+ X=$(find . -name "*.rej" -printf "../$PACKAGE-$SNEW_VERSION/%P\n")
+ if [ -n "$X" ]; then
+ echo "Rejected diffs are in $X" >&2
+ fi
+ STATUS=1
+ fi
+ chmod a+x debian/rules
+ if [ -z "$BADVERSION" ]; then
+ debchange -v "$NEW_VERSION-$SUFFIX" "New upstream release."
+ else
+ debchange $BADVERSION -v "$NEW_VERSION-$SUFFIX" " "
+ fi
+ echo "$PROGNAME: Remember: Your current directory is the OLD sourcearchive!"
+ echo "$PROGNAME: Do a \"cd ../$PACKAGE-$SNEW_VERSION\" to see the new package"
+ exit
+ else
+ echo "$PROGNAME: patch failed to apply to original sources $UVERSION" >&2
+ cd $(pwd)/..
+ rm -rf $PACKAGE-$UVERSION.orig
+ exit 1
+ fi
+elif [ "$OPMODE" = 2 ]; then
+# This is an original sourcearchive
+ # old "uupdate" used in the version=3 watch file
+ if [ "$ARCHIVE" = "" ]; then
+ echo "$PROGNAME: upstream source archive not specified" >&2
+ exit 1
+ fi
+ case "$ARCHIVE" in
+ /*)
+ if [ ! -r "$ARCHIVE" ]; then
+ echo "$PROGNAME: cannot read archive file $ARCHIVE! Aborting." >&2
+ exit 1
+ fi
+ ARCHIVE_PATH="$ARCHIVE"
+ ;;
+ *)
+ if [ "$ARCHIVE" = "../${ARCHIVE#../}" -a -r "$ARCHIVE" ]; then
+ ARCHIVE_PATH="$ARCHIVE"
+ elif [ -r "../$ARCHIVE" ]; then
+ ARCHIVE_PATH="../$ARCHIVE"
+ elif [ -r "$OPWD/$ARCHIVE" ]; then
+ ARCHIVE_PATH="$OPWD/$ARCHIVE"
+ else
+ echo "$PROGNAME: cannot read archive file $ARCHIVE! Aborting." >&2
+ exit 1
+ fi
+
+ ;;
+ esac
+
+ # Figure out the type of archive
+ X="${ARCHIVE%%/}"
+ X="${X##*/}"
+ if [ ! -d "$ARCHIVE_PATH" ]; then
+ case "$X" in
+ *.orig.tar.gz) X="${X%.orig.tar.gz}"; UNPACK="tar zxf";
+ TYPE=gz ;;
+ *.orig.tar.bz2) X="${X%.orig.tar.bz2}"; UNPACK="tar --bzip -xf";
+ TYPE=bz2 ;;
+ *.orig.tar.lzma) X="${X%.orig.tar.lzma}"; UNPACK="tar --lzma -xf";
+ TYPE=lzma ;;
+ *.orig.tar.xz) X="${X%.orig.tar.xz}"; UNPACK="tar --xz -xf";
+ TYPE=xz ;;
+ *.tar.gz) X="${X%.tar.gz}"; UNPACK="tar zxf"; TYPE=gz ;;
+ *.tar.bz2) X="${X%.tar.bz2}"; UNPACK="tar --bzip -xf"; TYPE=bz2 ;;
+ *.tar.lzma) X="${X%.tar.lzma}"; UNPACK="tar --lzma -xf"; TYPE=lzma ;;
+ *.tar.xz) X="${X%.tar.xz}"; UNPACK="tar --xz -xf"; TYPE=xz ;;
+ *.tar.Z) X="${X%.tar.Z}"; UNPACK="tar zxf"; TYPE="" ;;
+ *.tgz) X="${X%.tgz}"; UNPACK="tar zxf"; TYPE=gz ;;
+ *.tar) X="${X%.tar}"; UNPACK="tar xf"; TYPE="" ;;
+ *.zip) X="${X%.zip}"; UNPACK="unzip"; TYPE="" ;;
+ *.7z) X="${X%.7z}"; UNPACK="7z x"; TYPE="" ;;
+ *)
+ echo "$PROGNAME: sorry: Unknown archive type" >&2
+ exit 1
+ esac
+ fi
+
+ if [ "$NEW_VERSION" = "" ]; then
+ # Figure out the new version
+ NEW_VERSION=$(echo "$X" | perl -ne "/$MPATTERN/"' && print $1')
+ if [ -z "$NEW_VERSION" ]; then
+ echo "$PROGNAME: new version number not recognized from given filename" >&2
+ echo "$PROGNAME: Please run $PROGNAME with the -v option" >&2
+ exit 1
+ fi
+ fi
+ if [ -n "$EPOCH" ]; then
+ echo "$PROGNAME: New Release will be $EPOCH:$NEW_VERSION-$SUFFIX."
+ else
+ echo "$PROGNAME: New Release will be $NEW_VERSION-$SUFFIX."
+ fi
+
+ # Strip epoch number
+ SNEW_VERSION=$(echo "$NEW_VERSION" | perl -pe 's/^\d+://')
+ if [ $SNEW_VERSION = $NEW_VERSION -a -n "$EPOCH" ]; then
+ NEW_VERSION="$EPOCH:$NEW_VERSION"
+ fi
+
+ # Sanity check
+ if [ -z "$BADVERSION" ] && dpkg --compare-versions "$NEW_VERSION-$SUFFIX" le "$VERSION"; then
+ echo "$PROGNAME: new version $NEW_VERSION-$SUFFIX <= current version $VERSION; aborting!" >&2
+ exit 1
+ fi
+
+ if [ -e "../$PACKAGE-$SNEW_VERSION.orig" ]; then
+ echo "$PROGNAME: original source tree already exists as $PACKAGE-$SNEW_VERSION.orig!" >&2
+ echo "$PROGNAME: Aborting...." >&2
+ exit 1
+ fi
+ if [ -e "../$PACKAGE-$SNEW_VERSION" ]; then
+ echo "$PROGNAME: source tree for new version already exists as $PACKAGE-$SNEW_VERSION!" >&2
+ echo "$PROGNAME: Aborting...." >&2
+ exit 1
+ fi
+
+ # Sanity checks
+ if [ -e "../${PACKAGE}_$SNEW_VERSION.orig.tar.gz" ] && \
+ [ "$(md5sum "${ARCHIVE_PATH}" | cut -d" " -f1)" != \
+ "$(md5sum "../${PACKAGE}_$SNEW_VERSION.orig.tar.gz" | cut -d" " -f1)" ]
+ then
+ echo "$PROGNAME: a different ${PACKAGE}_$SNEW_VERSION.orig.tar.gz" >&2
+ echo "$PROGNAME: already exists in the parent dir;" >&2
+ echo "$PROGNAME: please check on the situation before trying $PROGNAME again." >&2
+ exit 1
+ elif [ -e "../${PACKAGE}_$SNEW_VERSION.orig.tar.bz2" ] && \
+ [ "$(md5sum "${ARCHIVE_PATH}" | cut -d" " -f1)" != \
+ "$(md5sum "../${PACKAGE}_$SNEW_VERSION.orig.tar.bz2" | cut -d" " -f1)" ]
+ then
+ echo "$PROGNAME: a different ${PACKAGE}_$SNEW_VERSION.orig.tar.bz2" >&2
+ echo "$PROGNAME: already exists in the parent dir;" >&2
+ echo "$PROGNAME: please check on the situation before trying $PROGNAME again." >&2
+ exit 1
+ elif [ -e "../${PACKAGE}_$SNEW_VERSION.orig.tar.lzma" ] && \
+ [ "$(md5sum "${ARCHIVE_PATH}" | cut -d" " -f1)" != \
+ "$(md5sum "../${PACKAGE}_$SNEW_VERSION.orig.tar.lzma" | cut -d" " -f1)" ]
+ then
+ echo "$PROGNAME: a different ${PACKAGE}_$SNEW_VERSION.orig.tar.lzma" >&2
+ echo "$PROGNAME: already exists in the parent dir;" >&2
+ echo "$PROGNAME: please check on the situation before trying $PROGNAME again." >&2
+ exit 1
+ elif [ -e "../${PACKAGE}_$SNEW_VERSION.orig.tar.xz" ] && \
+ [ "$(md5sum "${ARCHIVE_PATH}" | cut -d" " -f1)" != \
+ "$(md5sum "../${PACKAGE}_$SNEW_VERSION.orig.tar.xz" | cut -d" " -f1)" ]
+ then
+ echo "$PROGNAME: a different ${PACKAGE}_$SNEW_VERSION.orig.tar.xz" >&2
+ echo "$PROGNAME: already exists in the parent dir;" >&2
+ echo "$PROGNAME: please check on the situation before trying $PROGNAME again." >&2
+ exit 1
+ fi
+
+ if [ $UUPDATE_PRISTINE = yes -a -n "$TYPE" -a \
+ ! -e "../${PACKAGE}_$SNEW_VERSION.orig.tar.gz" -a \
+ ! -e "../${PACKAGE}_$SNEW_VERSION.orig.tar.bz2" -a \
+ ! -e "../${PACKAGE}_$SNEW_VERSION.orig.tar.lzma" -a \
+ ! -e "../${PACKAGE}_$SNEW_VERSION.orig.tar.xz" ]; then
+ if [ "$UUPDATE_SYMLINK_ORIG" = yes ]; then
+ echo "Symlinking to pristine source from ${PACKAGE}_$SNEW_VERSION.orig.tar.$TYPE..."
+ case $ARCHIVE_PATH in
+ /*) LINKARCHIVE="$ARCHIVE" ;;
+ ../*) LINKARCHIVE="${ARCHIVE#../}" ;;
+ esac
+ else
+ echo "$PROGNAME: Copying pristine source to ${PACKAGE}_$SNEW_VERSION.orig.tar.$TYPE..."
+ fi
+
+ case "$TYPE" in
+ gz)
+ if [ "$UUPDATE_SYMLINK_ORIG" = yes ]; then
+ ln -s "$LINKARCHIVE" "../${PACKAGE}_$SNEW_VERSION.orig.tar.gz"
+ else
+ cp "$ARCHIVE_PATH" "../${PACKAGE}_$SNEW_VERSION.orig.tar.gz"
+ fi
+ ;;
+ bz2)
+ if [ "$UUPDATE_SYMLINK_ORIG" = yes ]; then
+ ln -s "$LINKARCHIVE" "../${PACKAGE}_$SNEW_VERSION.orig.tar.bz2"
+ else
+ cp "$ARCHIVE_PATH" "../${PACKAGE}_$SNEW_VERSION.orig.tar.bz2"
+ fi
+ ;;
+ lzma)
+ if [ "$UUPDATE_SYMLINK_ORIG" = yes ]; then
+ ln -s "$LINKARCHIVE" "../${PACKAGE}_$SNEW_VERSION.orig.tar.lzma"
+ else
+ cp "$ARCHIVE_PATH" "../${PACKAGE}_$SNEW_VERSION.orig.tar.lzma"
+ fi
+ ;;
+ xz)
+ if [ "$UUPDATE_SYMLINK_ORIG" = yes ]; then
+ ln -s "$LINKARCHIVE" "../${PACKAGE}_$SNEW_VERSION.orig.tar.xz"
+ else
+ cp "$ARCHIVE_PATH" "../${PACKAGE}_$SNEW_VERSION.orig.tar.xz"
+ fi
+ ;;
+ *)
+ echo "$PROGNAME: can't preserve pristine sources from non .tar.{gz|bz2|lzma|xz} upstream archive!" >&2
+ echo "$PROGNAME: Continuing anyway..." >&2
+ ;;
+ esac
+ fi
+
+ cd $(pwd)/..
+ TEMP_DIR=$(mktemp -d uupdate.XXXXXXXX) || {
+ echo "$PROGNAME: can't create temporary directory;" >&2
+ echo "$PROGNAME: aborting..." >&2
+ exit 1
+ }
+ cd $(pwd)/$TEMP_DIR
+ if [ ! -d "$ARCHIVE_PATH" ]; then
+ echo "$PROGNAME: Untarring the new sourcecode archive $ARCHIVE"
+ $UNPACK "$ARCHIVE_PATH" || {
+ echo "$PROGNAME: can't unpack: $UNPACK $ARCHIVE_PATH failed;" >&2
+ echo "$PROGNAME: aborting..." >&2
+ exit 1
+ }
+ else
+ tar -C "$ARCHIVE_PATH/../" -c $X | tar x || {
+ echo "$PROGNAME: tar -C \"$ARCHIVE_PATH/../\" -c $X | tar x failed;" >&2
+ echo "$PROGNAME: aborting..." >&2
+ exit 1
+ }
+ fi
+
+ cd $(pwd)/..
+ if [ $(ls $TEMP_DIR | wc -l) -eq 1 ]; then
+ # The files are stored in the archive under a top directory, we presume
+ mv $TEMP_DIR/* $PACKAGE-$SNEW_VERSION
+ else
+ # Otherwise, we put them into a new directory
+ mkdir $PACKAGE-$SNEW_VERSION
+ mv $TEMP_DIR/* $PACKAGE-$SNEW_VERSION
+ if ls $TEMP_DIR/.[!.]* > /dev/null 2>&1; then
+ mv $TEMP_DIR/.[!.]* $PACKAGE-$SNEW_VERSION
+ fi
+ fi
+ rm -rf $TEMP_DIR
+ cp -a $PACKAGE-$SNEW_VERSION $PACKAGE-$SNEW_VERSION.orig
+ cd $(pwd)/$PACKAGE-$SNEW_VERSION
+
+ if [ -r "../${PACKAGE}_$SVERSION.diff.gz" ]; then
+ DIFF="../${PACKAGE}_$SVERSION.diff.gz"
+ DIFFTYPE=diff
+ DIFFCAT=zcat
+ elif [ -r "../${PACKAGE}_$SVERSION.diff.bz2" ]; then
+ DIFF="../${PACKAGE}_$SVERSION.diff.bz2"
+ DIFFTYPE=diff
+ DIFFCAT=bzcat
+ elif [ -r "../${PACKAGE}_$SVERSION.diff.lzma" ]; then
+ DIFF="../${PACKAGE}_$SVERSION.diff.lzma"
+ DIFFTYPE=diff
+ DIFFCAT="xz -F lzma -dc"
+ elif [ -r "../${PACKAGE}_$SVERSION.diff.xz" ]; then
+ DIFF="../${PACKAGE}_$SVERSION.diff.xz"
+ DIFFTYPE=diff
+ DIFFCAT=xzcat
+ elif [ -r "../${PACKAGE}_$SVERSION.debian.tar.gz" ]; then
+ DIFF="../${PACKAGE}_$SVERSION.debian.tar.gz"
+ DIFFTYPE=tar
+ DIFFUNPACK="tar zxf"
+ elif [ -r "../${PACKAGE}_$SVERSION.debian.tar.bz2" ]; then
+ DIFF="../${PACKAGE}_$SVERSION.debian.tar.bz2"
+ DIFFTYPE=tar
+ DIFFUNPACK="tar --bzip2 -xf"
+ elif [ -r "../${PACKAGE}_$SVERSION.debian.tar.lzma" ]; then
+ DIFF="../${PACKAGE}_$SVERSION.debian.tar.lzma"
+ DIFFTYPE=tar
+ DIFFUNPACK="tar --lzma -xf"
+ elif [ -r "../${PACKAGE}_$SVERSION.debian.tar.xz" ]; then
+ DIFF="../${PACKAGE}_$SVERSION.debian.tar.xz"
+ DIFFTYPE=tar
+ DIFFUNPACK="tar --xz -xf"
+ else
+ # non-native package and missing diff.gz/debian.tar.xz.
+ cd $OPWD
+ if [ ! -d debian ]; then
+ echo "$PROGNAME: None of *.diff.gz, *.debian.tar.xz, or debian/* found. failed;" >&2
+ echo "$PROGNAME: aborting..." >&2
+ exit 1
+ fi
+ if [ -d debian/source -a -r debian/source/format ]; then
+ if [ "$(cat debian/source/format)" = "3.0 (quilt)" ]; then
+ # This is convenience for VCS users.
+ echo "$PROGNAME: debian/source/format is \"3.0 (quilt)\"." >&2
+ echo "$PROGNAME: Auto-generating ${PACKAGE}_$SVERSION.debian.tar.xz" >&2
+ tar --xz -cf ../${PACKAGE}_$SVERSION.debian.tar.xz debian
+ DIFF="../${PACKAGE}_$SVERSION.debian.tar.xz"
+ DIFFTYPE=tar
+ DIFFUNPACK="tar --xz -xf"
+ else
+ echo "$PROGNAME: debian/source/format isn't \"3.0 (quilt)\"." >&2
+ echo "$PROGNAME: Skip auto-generating ${PACKAGE}_$SVERSION.debian.tar.xz" >&2
+ fi
+ else
+ echo "$PROGNAME: debian/source/format is missing." >&2
+ echo "$PROGNAME: Skip auto-generating ${PACKAGE}_$SVERSION.debian.tar.xz" >&2
+ fi
+ # return back to upstream source
+ cd $(pwd)/../$PACKAGE-$SNEW_VERSION
+ fi
+
+ if [ "$DIFFTYPE" = diff ]; then
+ # Check that any files added in diff do not now exist in
+ # upstream version
+ FILES=$($DIFFCAT $DIFF |
+ perl -nwe 'BEGIN { $status=""; }
+ chomp;
+ if (/^--- /) { $status = "-$."; }
+ if (/^\+\+\+ (.*)/ and $status eq ("-" . ($.-1))) {
+ $file = $1;
+ $file =~ s%^[^/]+/%%;
+ $status = "+$.";
+ }
+ if (/^@@ -([^ ]+) /) {
+ if ($1 eq "0,0" and $status eq ("+" . ($.-1))) {
+ print "$file\n";
+ }
+ }')
+
+ # Note that debian/changelog is usually in FILES, so FILES is
+ # usually non-null; however, if the upstream ships its own debian/
+ # directory, this may not be true, so must check for empty $FILES.
+ # Check anyway, even though it's not strictly necessary in bash.
+ if [ -n "$FILES" ]; then
+ for file in $FILES; do
+ if [ -e "$file" ]; then
+ echo "$PROGNAME warning: file $file was added in old diff, but is now in the upstream source." >&2
+ echo "$PROGNAME: Please check that the diff is applied correctly." >&2
+ echo "$PROGNAME: (This program will use the pristine upstream version and save the old .diff.gz" >&2
+ echo "$PROGNAME: version as $file.debdiff .)" >&2
+
+ if [ -e "$file.upstream" -o -e "$file.debdiff" ]; then
+ FILEEXISTERR=1
+ fi
+ fi
+ done
+
+ if [ -n "$FILEEXISTERR" ]; then
+ echo "$PROGNAME: please apply the diff by hand and take care with this." >&2
+ exit 1
+ fi
+
+ # Shift any files that are in the upstream tarball that are also in
+ # the old diff out of the way so the diff is more likely to apply
+ # cleanly, and remember the fact that we moved it
+ for file in $FILES; do
+ if [ -e "$file" ]; then
+ mv $file $file.upstream
+ MOVEDFILES=("${MOVEDFILES[@]}" "$file")
+ fi
+ done
+ fi
+
+ # Remove all existing symlinks before applying the patch. We'll
+ # restore them afterwards, but this avoids patch following symlinks,
+ # which may point outside of the source tree
+ declare -a LINKS
+ while IFS= read -d '' -r link; do
+ LINKS+=("$link")
+ done < <(find -type l -printf '%l\0%p\0' -delete)
+
+ if $DIFFCAT $DIFF | patch -sNp1 ; then
+ echo "$PROGNAME: Success! The diffs from version $VERSION worked fine."
+ else
+ echo "$PROGNAME: the diffs from version $VERSION did not apply cleanly!" >&2
+ X=$(find . -name "*.rej")
+ if [ -n "$X" ]; then
+ echo "$PROGNAME: Rejected diffs are in $X" >&2
+ fi
+ STATUS=1
+ fi
+
+ # Reinstate symlinks, warning for any which fail
+ for (( i=0; $i < ${#LINKS[@]}; i=$(($i+2)) )); do
+ target="${LINKS[$i]}"
+ link="${LINKS[$(($i+1))]}"
+ if ! ln -s -T "$target" "$link"; then
+ echo "$PROGNAME: warning: Unable to restore the '$link' -> '$target' symlink." >&2
+ STATUS=1
+ fi
+ done
+
+ for file in "${MOVEDFILES[@]}"; do
+ if [ -e "$file.upstream" ]; then
+ mv $file $file.debdiff
+ mv $file.upstream $file
+ fi
+ done
+
+ elif [ "$DIFFTYPE" = tar ]; then
+ if [ -d debian ]; then
+ echo "$PROGNAME warning: using a debian.tar.{gz|bz2|lzma|xz} file in old Debian source," >&2
+ echo "$PROGNAME: but upstream also contains a debian/ directory!" >&2
+ if [ -e "debian.upstream" ]; then
+ echo "$PROGNAME: Please apply the diff by hand and take care with this." >&2
+ exit 1
+ fi
+ echo "$PROGNAME: This program will move the upstream directory out of the way" >&2
+ echo "$PROGNAME: to debian.upstream/ and use the Debian version" >&2
+ mv debian debian.upstream
+ fi
+ if [ -n "$UUPDATE_VERBOSE" ]; then
+ echo "$PROGNAME: Use ${DIFF} to create the new debian/ directory." >&2
+ fi
+ if $DIFFUNPACK $DIFF; then
+ echo "$PROGNAME: Unpacking the debian/ directory from version $VERSION worked fine."
+ else
+ echo "$PROGNAME: failed to unpack the debian/ directory from version $VERSION!" >&2
+ exit 1
+ fi
+ else
+ echo "$PROGNAME: could not find {diff|debian.tar}.{gz|bz2|lzma|xz} from version $VERSION to apply!" >&2
+ exit 1
+ fi
+ if [ -f debian/rules ]; then
+ chmod a+x debian/rules
+ fi
+ if [ -n "$UUPDATE_VERBOSE" ]; then
+ echo "$PROGNAME: New upstream release=$NEW_VERSION-$SUFFIX" >&2
+ fi
+ [ -e ../${PACKAGE}_${NEW_VERSION}.uscan.log ] && \
+ cp -f ../${PACKAGE}_${NEW_VERSION}.uscan.log debian/uscan.log
+ if [ -z "$BADVERSION" ]; then
+ debchange -v "$NEW_VERSION-$SUFFIX" "New upstream release."
+ else
+ debchange $BADVERSION -v "$NEW_VERSION-$SUFFIX" " "
+ fi
+ echo "$PROGNAME: Remember: Your current directory is the OLD sourcearchive!"
+ echo "$PROGNAME: Do a \"cd ../$PACKAGE-$SNEW_VERSION\" to see the new package"
+
+else
+ # OPMODE=3: new "uupdate -f ..." used in the version=4 watch file
+
+ # Sanity checks
+ if [ ! -d debian ]; then
+ echo "$PROGNAME: cannot find debian/ directory." >&2
+ echo "$PROGNAME: Are you in the debianized source tree?" >&2
+ echo "$PROGNAME: You may wish to run debmake or dh_make first." >&2
+ exit 1
+ fi
+
+ if [ ! -x debian/rules ]; then
+ echo "$PROGNAME: cannot find debian/rules." >&2
+ echo "Are you in the top directory of the old source tree?" >&2
+ exit 1
+ fi
+
+ if [ ! -f debian/changelog ]; then
+ echo "$PROGNAME: cannot find debian/changelog." >&2
+ echo "$PROGNAME: Are you in the top directory of the old source tree?" >&2
+ exit 1
+ fi
+
+ # Get Parameters from the old source tree
+
+ if [ -e debian/source -a -e debian/source/format ]; then
+ FORMAT=$(cat debian/source/format)
+ else
+ FORMAT='1.0'
+ fi
+
+ PACKAGE="`dpkg-parsechangelog -SSource`"
+ if [ -z "$PACKAGE" ]; then
+ echo "$PROGNAME: cannot find the source package name in debian/changelog." >&2
+ exit 1
+ fi
+
+ # Variable names follow the convention of old uupdate
+ VERSION="`dpkg-parsechangelog -SVersion`"
+ if [ -z "$VERSION" ]; then
+ echo "$PROGNAME: cannot find the source version name in debian/changelog." >&2
+ exit 1
+ fi
+
+ EPOCH="${VERSION%:*}"
+ if [ "$EPOCH" = "$VERSION" ]; then
+ EPOCH=""
+ else
+ EPOCH="$EPOCH:"
+ fi
+ SVERSION="${VERSION#*:}"
+ UVERSION="${SVERSION%-*}"
+ if [ "$UVERSION" = "$SVERSION" ]; then
+ echo "$PROGNAME: a native Debian package cannot take upstream updates" >&2
+ exit 1
+ fi
+
+ if [ -n "$UUPDATE_VERBOSE" ]; then
+ echo "$PROGNAME: Old: <epoch:><version>-<revision> = $VERSION"
+ echo "$PROGNAME: Old: <epoch:> = $EPOCH"
+ echo "$PROGNAME: Old: <version>-<revision> = $SVERSION"
+ echo "$PROGNAME: Old: <version> = $UVERSION"
+ echo "$PROGNAME: New: <version> = $NEW_VERSION"
+ fi
+
+ if [ "$(readlink -f ../${PACKAGE}-$NEW_VERSION)" = "$OPWD" ]; then
+ echo "$PROGNAME: You can not execute this from ../${PACKAGE}-${NEW_VERSION}/." >&2
+ exit 1
+ fi
+
+ if [ -e "../${PACKAGE}-$NEW_VERSION" ];then
+ echo "$PROGNAME: ../${PACKAGE}-$NEW_VERSION directory exists." >&2
+ echo "$PROGNAME: remove ../${PACKAGE}-$NEW_VERSION directory." >&2
+ rm -rf ../${PACKAGE}-$NEW_VERSION
+ fi
+
+ # Move to the archive directory
+ cd $(pwd)/..
+ ARCHIVE=$(findzzz ${PACKAGE}_$NEW_VERSION.orig.tar.*z*)
+ if [ "$FORMAT" = "1.0" ]; then
+ DEBIANFILE=$(findzzz ${PACKAGE}_$VERSION.debian.diff.*z*)
+ else
+ DEBIANFILE=$(findzzz ${PACKAGE}_$VERSION.debian.tar.*z*)
+ fi
+ # non-native package and missing diff.gz/debian.tar.xz.
+ cd $OPWD
+ if [ -z "$DEBIANFILE" ]; then
+ if [ -d debian/source -a -r debian/source/format ]; then
+ if [ "$(cat debian/source/format)" = "3.0 (quilt)" ]; then
+ # This is convenience for VCS users.
+ echo "$PROGNAME: debian/source/format is \"3.0 (quilt)\"." >&2
+ echo "$PROGNAME: Auto-generating ${PACKAGE}_$SVERSION.debian.tar.xz" >&2
+ DEBIANFILE="${PACKAGE}_$SVERSION.debian.tar.xz"
+ tar --xz -cf ../$DEBIANFILE debian
+ else
+ echo "$PROGNAME: debian/source/format isn't \"3.0 (quilt)\"." >&2
+ echo "$PROGNAME: Skip auto-generating ${PACKAGE}_$SVERSION.debian.tar.xz" >&2
+ exit 1
+ fi
+ else
+ echo "$PROGNAME: debian/source/format is missing." >&2
+ echo "$PROGNAME: Skip auto-generating ${PACKAGE}_$SVERSION.debian.tar.xz" >&2
+ exit 1
+ fi
+ fi
+ # Move to the archive directory
+ cd $(pwd)/..
+ if [ "$FORMAT" = "1.0" ]; then
+ COMP=${DEBIANFILE##*.}
+ NEW_DEBIANFILE="${PACKAGE}_${NEW_VERSION}-$SUFFIX.diff.$COMP"
+ else
+ COMP=${DEBIANFILE##*.}
+ NEW_DEBIANFILE="${PACKAGE}_${NEW_VERSION}-$SUFFIX.debian.tar.$COMP"
+ fi
+ if [ -e ${NEW_DEBIANFILE} ]; then
+ if [ "$DEBIANFILE" = "${NEW_DEBIANFILE}" ]; then
+ echo "$PROGNAME: -> Use existing ${NEW_DEBIANFILE}" >&2
+ else
+ echo "$PROGNAME: -> Overwrite to ${NEW_DEBIANFILE}" >&2
+ cp -f $DEBIANFILE ${NEW_DEBIANFILE}
+ fi
+ else
+ echo "$PROGNAME: -> Copy to ${NEW_DEBIANFILE}" >&2
+ cp $DEBIANFILE ${NEW_DEBIANFILE}
+ fi
+
+ # fake DSC
+ FAKEDSC="${PACKAGE}_${NEW_VERSION}-$SUFFIX.dsc"
+ echo "Format: ${FORMAT}" > "$FAKEDSC"
+ echo "Source: ${PACKAGE}" >> "$FAKEDSC"
+ echo "Version: $EPOCH${NEW_VERSION}-$SUFFIX" >> "$FAKEDSC"
+ echo "Files:" >> "$FAKEDSC"
+ if [ -n "$ARCHIVE" ]; then
+ echo " 01234567890123456789012345678901 1 ${ARCHIVE}" >> "$FAKEDSC"
+ DPKGOPT=""
+ elif [ "$FORMAT" = "1.0" ]; then
+ echo "$PROGNAME: dpkg format \"1.0\" requires the main upstream tarball." >&2
+ exit 1
+ else
+ ARCHIVE="${PACKAGE}_${NEW_VERSION}.orig.tar.gz"
+ mkdir -p ${PACKAGE}-${NEW_VERSION}
+ tar -czf ${ARCHIVE} ${PACKAGE}-${NEW_VERSION}
+ rm -rf ${PACKAGE}-${NEW_VERSION}
+ echo " 01234567890123456789012345678901 1 ${ARCHIVE}" >> "$FAKEDSC"
+ fi
+ for f in $(findzzz ${PACKAGE}_${NEW_VERSION}.orig-*.tar.*z*) ; do
+ echo " 01234567890123456789012345678901 1 $f" >> "$FAKEDSC"
+ done
+ echo " 01234567890123456789012345678901 1 ${NEW_DEBIANFILE}" >> "$FAKEDSC"
+
+ # unpack source tree
+ if ! dpkg-source --skip-patches --no-copy --no-check -x "$FAKEDSC"; then
+ echo "$PROGNAME: Error with \"dpkg-source --no-copy --no-check -x $FAKEDSC\"" >&2
+ echo "$PROGNAME: Remember: Your current directory is changed back to the old source tree!"
+ echo "$PROGNAME: Do a \"cd ..\" to see $FAKEDSC."
+ exit 1
+ fi
+ # remove bogus DSC and debian.tar files (generate them with dpkg-source -b)
+ if [ -z "$UUPDATE_VERBOSE" ]; then
+ rm -f $FAKEDSC ${NEW_DEBIANFILE}
+ fi
+
+ # Move to the new source directory
+ if [ ! -d ${PACKAGE}-${NEW_VERSION} ]; then
+ echo "$PROGNAME warning: ${PACKAGE}-${NEW_VERSION} directory missing." >&2
+ ls -l >&2
+ exit 1
+ fi
+ cd $(pwd)/${PACKAGE}-${NEW_VERSION}
+ [ ! -d debian ] && echo "$PROGNAME: debian directory missing." >&2 && exit 1
+ # Need to set permission for format=1.0
+ [ -e debian/rules ] && chmod a+x debian/rules
+ [ -e ../${PACKAGE}_${NEW_VERSION}.uscan.log ] && \
+ cp -f ../${PACKAGE}_${NEW_VERSION}.uscan.log debian/uscan.log
+ if [ -z "$BADVERSION" ]; then
+ debchange -v "$EPOCH$NEW_VERSION-$SUFFIX" "New upstream release."
+ else
+ debchange $BADVERSION -v "$EPOCH$NEW_VERSION-$SUFFIX" " "
+ fi
+ echo "$PROGNAME: Remember: Your current directory is changed back to the old source tree!"
+ echo "$PROGNAME: Do a \"cd ../$PACKAGE-$NEW_VERSION\" to see the new source tree and
+ edit it to be nice Debianized source."
+fi
+
+if [ $STATUS -ne 0 ]; then
+ echo "$PROGNAME: (Did you see the warnings above?)" >&2
+fi
+
+exit $STATUS