aboutsummaryrefslogtreecommitdiff
path: root/tor.spec.in
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2004-11-14 23:18:20 +0000
committerNick Mathewson <nickm@torproject.org>2004-11-14 23:18:20 +0000
commit433cbf586f80f09812a7913cba4872b1816594bc (patch)
tree83297b6cb1dabff9c2ace14456bc48b28dc7605d /tor.spec.in
parent5109159ff96151b3f4dc08e6d9c19ff9d760a3ed (diff)
downloadtor-433cbf586f80f09812a7913cba4872b1816594bc.tar
tor-433cbf586f80f09812a7913cba4872b1816594bc.tar.gz
Define an elaborate set of lunacy to make sure that RPM versions do
the right thing with our recalcitrant versioning scheme. See tor.spec.in for full details. Basically, the progression is now: Tor version RPM version 0.0.8 ---> 0.0.8 0.0.8.1 ---> 0.0.8.1 0.0.9pre1-cvs ---> 0.0.8.99.0.0.9.pre.1.cvs 0.0.9pre1 ---> 0.0.8.99.0.0.9.pre.1.release 0.0.9pre2 ---> 0.0.8.99.0.0.9.pre.2.release 0.0.9rc1 ---> 0.0.8.99.0.0.9.rc.1.release 0.0.9 ---> 0.0.9 0.0.9.1-cvs ---> 0.0.9.0.99.0.0.9.1.cvs 0.0.9.1 ---> 0.0.9.1 The spec file (but not the system) will break if a tor version ends in ".0", so don't do that yet. svn:r2877
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 4eb0eea35..44f39b0f6 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
#