version: generate RPM version from git ctdb-1.9.1
authorRusty Russell <rusty@rustcorp.com.au>
Fri, 2 Jul 2010 03:21:08 +0000 (13:21 +1000)
committerRusty Russell <rusty@rustcorp.com.au>
Fri, 2 Jul 2010 03:22:20 +0000 (13:22 +1000)
This unifies our RPM version handling, based on tags.
1) Tags are of form ctdb-<version>.
2) The first <version> starts with .1.
3) Devel versions end with .0.<patchnum>.<checksum>.devel to reliably
   identify them.

This means that devel versions will correctly supersede releases and earlier
devels, but new releases will correctly supersede older devel RPMs.

Making a new release is as simple as creating a new git tag.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
packaging/RPM/ctdb.spec.in
packaging/RPM/makerpms.sh

index 6706672cc0a4073d15412d7ba8b719117181eb0b..833dae8095484e635130776e2f1f57afd035c74b 100644 (file)
@@ -3,8 +3,8 @@ Name: ctdb
 Summary: Clustered TDB
 Vendor: Samba Team
 Packager: Samba Team <samba@samba.org>
-Version: 1.9
-Release: 1GITHASH
+Version: @VERSION@
+Release: 1
 Epoch: 0
 License: GNU GPL version 3
 Group: System Environment/Daemons
index a51099c543e9ab58e4b58cb717d149e55c9f70dd..266fcfb4cae0225cf9fe15f59ccbbb6ab685b9ba 100755 (executable)
@@ -44,18 +44,38 @@ SPECFILE="ctdb.spec"
 SPECFILE_IN="ctdb.spec.in"
 RPMBUILD="rpmbuild"
 
-GITHASH=".$(git log --pretty=format:%h -1)"
-
-if test "x$USE_GITHASH" = "xno" ; then
-       GITHASH=""
-fi
-
-sed -e s/GITHASH/${GITHASH}/g \
+# We use tags and determine the version, as follows:
+# ctdb-0.9.1  (First release of 0.9).
+# ctdb-0.9.23 (23rd minor release of the 112 version)
+#
+# If we're not directly on a tag, this is a devel release; we append
+# .0.<patchnum>.<checksum>.devel to the release.
+TAG=`git describe`
+case "$TAG" in
+    ctdb-*)
+       TAG=${TAG##ctdb-}
+       case "$TAG" in
+           *-*-g*) # 0.9-168-ge6cf0e8
+               # Not exactly on tag: devel version.
+               VERSION=`echo "$TAG" | sed 's/\([^-]\+\)-\([0-9]\+\)-\(g[0-9a-f]\+\)/\1.0.\2.\3.devel/'`
+               ;;
+           *)
+               # An actual release version
+               VERSION=$TAG
+               ;;
+       esac
+       ;;
+    *)
+       echo Invalid tag "$TAG" >&2
+       exit 1
+       ;;
+esac
+
+sed -e s/@VERSION@/$VERSION/g \
        < ${DIRNAME}/${SPECFILE_IN} \
        > ${DIRNAME}/${SPECFILE}
 
 VERSION=$(grep ^Version ${DIRNAME}/${SPECFILE} | sed -e 's/^Version:\ \+//')
-RELEASE=$(grep ^Release ${DIRNAME}/${SPECFILE} | sed -e 's/^Release:\ \+//')
 
 if echo | gzip -c --rsyncable - > /dev/null 2>&1 ; then
        GZIP="gzip -9 --rsyncable"