aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xdebian/bin/ckt-stable-update.sh77
-rw-r--r--debian/lib/python/debian_linux/debian.py7
2 files changed, 81 insertions, 3 deletions
diff --git a/debian/bin/ckt-stable-update.sh b/debian/bin/ckt-stable-update.sh
new file mode 100755
index 000000000000..acf375819f9d
--- /dev/null
+++ b/debian/bin/ckt-stable-update.sh
@@ -0,0 +1,77 @@
+#!/bin/bash -eu
+
+if [ $# -ne 2 ]; then
+ echo >&2 "Usage: $0 REPO VERSION"
+ echo >&2 "REPO is the git repository to generate a changelog from"
+ echo >&2 "VERSION is the stable version (without leading v)"
+ exit 2
+fi
+
+# Get base version, i.e. the stable release that a branch started from
+base_version() {
+ local ver
+ ver="${1%-rc*}"
+ case "$ver" in
+ *-ckt*)
+ ver="${ver%-*}"
+ ;;
+ esac
+ echo "$ver"
+}
+
+add_update() {
+ local base update
+ base="$(base_version "$1")"
+ update="${1#$base-ckt}"
+ if [ "$update" = "$1" ]; then
+ update=0
+ fi
+ update="$((update + $2))"
+ if [ $update = 0 ]; then
+ echo "$base"
+ else
+ echo "$base-ckt$update"
+ fi
+}
+
+# Get next stable update version
+next_update() {
+ add_update "$1" 1
+}
+
+export GIT_DIR="$1/.git"
+
+new_ver="$2"
+cur_pkg_ver="$(dpkg-parsechangelog | sed -n 's/^Version: //p')"
+cur_ver="${cur_pkg_ver%-*}"
+
+if [ "$(base_version "$new_ver")" != "$(base_version "$cur_ver")" ]; then
+ echo >&2 "$new_ver is not on the same stable series as $cur_ver"
+ exit 2
+fi
+
+case "$cur_pkg_ver" in
+ *~exp*)
+ new_pkg_ver="$new_ver-1~exp1"
+ ;;
+ *)
+ new_pkg_ver="$new_ver-1"
+ ;;
+esac
+
+# dch insists on word-wrapping everything, so just add the first line initially
+dch -v "$new_pkg_ver" --preserve --multimaint-merge -D UNRELEASED \
+ --release-heuristic=changelog 'New upstream stable update:'
+
+# Then append the shortlogs with sed
+sed -i '1,/^ --/ { /New upstream stable update:/ { a\
+'"$(
+while [ "v$cur_ver" != "v$new_ver" ]; do
+ next_ver="$(next_update "$cur_ver")"
+ # TODO: Need URLs for full changelogs
+ echo " [$next_ver]\\"
+ git log --reverse --pretty=' - %s\' "v$cur_ver..v$next_ver^"
+ cur_ver="$next_ver"
+done)"'
+
+} }' debian/changelog
diff --git a/debian/lib/python/debian_linux/debian.py b/debian/lib/python/debian_linux/debian.py
index 160c9630f4b3..0d4d0299ac51 100644
--- a/debian/lib/python/debian_linux/debian.py
+++ b/debian/lib/python/debian_linux/debian.py
@@ -116,8 +116,9 @@ class VersionLinux(Version):
\d+\.\d+
)
(?P<update>
- \.\d+
-)?
+ (?:\.\d+)?
+ (?:-[a-z]+\d+)?
+)
(?:
~
(?P<modifier>
@@ -163,7 +164,7 @@ $
self.linux_upstream = u'-'.join((d['version'], d['modifier']))
else:
self.linux_upstream = d['version']
- self.linux_upstream_full = self.linux_upstream + (d['update'] or u'')
+ self.linux_upstream_full = self.linux_upstream + d['update']
self.linux_dfsg = d['dfsg']
self.linux_revision_experimental = match.group('revision_experimental') and True
self.linux_revision_backports = match.group('revision_backports') and True