aboutsummaryrefslogtreecommitdiff
path: root/tor.spec.in
diff options
context:
space:
mode:
Diffstat (limited to 'tor.spec.in')
-rw-r--r--tor.spec.in41
1 files changed, 35 insertions, 6 deletions
diff --git a/tor.spec.in b/tor.spec.in
index 4eb0eea35d..44f39b0f60 100644
--- a/tor.spec.in
+++ b/tor.spec.in
@@ -6,7 +6,7 @@
# This should be incremented whenever the spec file changes, but
# can drop back to zero at a new Tor version
-%define specver 1
+%define specver 2
## Things users may want to change
#
@@ -20,14 +20,43 @@
# including any "pre<x>" or "rc<y>" suffix. This gets massaged to
# create the RPM version number, in a way that depends on the Tor
# numbering scheme.
-%define native_version @VERSION@
+%define native_version @VERSION@
# Massage the version so that pre-releases will be treated as earlier
# than release candidates which will be treated as earlier than released
-# versions... while making as few confusing changes to the standard
-# release naming as possible.
-# XXXX009 Execept that handling cvs breaks this.
-%define version %(echo %{native_version} | sed -e 's/-cvs/.cvs/' -e 's/pre/.pre./' -e 's/rc/.rc./' -e 's/([0-9])$/\1.release/')
+# versions.
+#
+# We do this as follows:
+# - If the version number has no "pre", "cvs", or "rc", we let it pass.
+# - Otherwise, we mangle it heavily:
+# * To make 0.0.Xpre come after 0.0.{X-1}* but before 0.0.X, we prepend
+# 0.0.{X-1}.99 to the version.
+# * We replace pre with .pre. and rc with .rc.
+# * We replace -cvs with .cvs, and lack of -cvs with .release.
+#
+# Note what this scheme will break if we ever use 0 as a last digit for a
+# Tor version: so don't do that.
+
+%define is_dev_version %(echo %{native_version} | grep 'cvs\\|pre\\|rc' > /dev/null && echo 1 || echo 0)
+
+%if %{is_dev_version}
+
+# The 0.0.X.pre.1.cvs part.
+%define safe_native_version %(echo %{native_version} | sed -e 's/-cvs/.cvs/' -e 's/pre/.pre./' -e 's/rc/.rc./' -e 's/\\([0-9]\\)$/\\1.release/')
+# The 0.0.X part -- the version we are leading up to.
+%define stub_version %(echo %{native_version} | sed -e 's/-cvs//' -e 's/pre.*//' -e 's/rc.*//')
+# The 0.0 part
+%define stub_start %(echo %{stub_version} | sed -e 's/\\.[0-9]*$//')
+# The X part.
+%define stub_last %(echo %{stub_version} | sed -e 's/.*\\.\\([0-9]*\\)$/\\1/')
+# The {X-1} part.
+%define stub_newlast %(expr %{stub_last} - 1)
+# The actual version: 0.0.{X-1}.99.0.0.X.pre.1.cvs
+%define version %{stub_start}.%{stub_newlast}.99.%{safe_native_version}
+
+%else
+%define version %{native_version}
+%endif
## Release and OS identification song and dance
#