diff options
author | Bala.FA <barumuga@redhat.com> | 2014-02-27 12:39:43 +0530 |
---|---|---|
committer | Vijay Bellur <vbellur@redhat.com> | 2014-04-10 04:52:28 -0700 |
commit | 4bacb40fc898ee9519cfe4e9ee50401ec466168c (patch) | |
tree | e29a334d809266428560f07c8a2b222f60085d94 | |
parent | 8d7dde6b322483389c25cc0f056c8b27c79c160e (diff) |
build: set version based on git tag or specific
This patch brings version and release number generated at build time
using git tags or fixed content from VERSION file.
With git tag, version/release number are got from output of
'git describe --tags --match "v[0-9]*"' command.
This behavior can be overriden by having VERSION file with fixed
version/release. The VERSION file should have text describing version
and release for example something like 'v3.4.0-1'
For testing this patch, its required to remove autom4te.cache
directory to avoid seeing previously set version.
BUG: 1074919
Change-Id: I8f68172e8b389b0ba0846e9adb4b597e67a909aa
Signed-off-by: Bala.FA <barumuga@redhat.com>
Reviewed-on: http://review.gluster.org/7164
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Niels de Vos <ndevos@redhat.com>
Reviewed-by: Kaleb KEITHLEY <kkeithle@redhat.com>
-rw-r--r-- | Makefile.am | 12 | ||||
-rwxr-xr-x | build-aux/pkg-version | 52 | ||||
-rw-r--r-- | configure.ac | 7 | ||||
-rw-r--r-- | glusterfs.spec.in | 5 |
4 files changed, 73 insertions, 3 deletions
diff --git a/Makefile.am b/Makefile.am index fa0f52ea144..030a30cdd0b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -4,6 +4,7 @@ EXTRA_DIST = autogen.sh \ glusterfs.spec glusterfs-api.pc.in libgfchangelog.pc.in \ error-codes.json gf-error-codes.h.template \ gen-headers.py run-tests.sh \ + build-aux/pkg-version \ $(shell find $(top_srcdir)/tests -type f -print) SUBDIRS = contrib/argp-standalone libglusterfs rpc api xlators glusterfsd \ @@ -28,5 +29,14 @@ gitclean: distclean rm -f $(CONTRIBDIR)/argp-standalone/install-sh rm -f $(CONTRIBDIR)/argp-standalone/missing -dist-hook: +dist-hook: gen-VERSION gen-ChangeLog +.PHONY: gen-VERSION gen-ChangeLog + +gen-ChangeLog: (cd $(srcdir) && git diff && echo ===== git log ==== && git log) > $(distdir)/ChangeLog + +gen-VERSION: + if test -d .git; then \ + $(top_srcdir)/build-aux/pkg-version --full \ + > $(distdir)/VERSION; \ + fi diff --git a/build-aux/pkg-version b/build-aux/pkg-version new file mode 100755 index 00000000000..2be2a975621 --- /dev/null +++ b/build-aux/pkg-version @@ -0,0 +1,52 @@ +#!/bin/sh + +# To override version/release from git, +# create VERSION file containing text with version/release +# eg. v3.4.0-1 +PKG_VERSION=`cat VERSION 2> /dev/null || git describe --tags --match "v[0-9]*"` + +function get_version () +{ + # tags and output versions: + # - v3.4.0 => 3.4.0 (upstream clean) + # - v3.4.0-1 => 3.4.0 (downstream clean) + # - v3.4.0-2-g34e62f => 3.4.0 (upstream dirty) + # - v3.4.0-1-2-g34e62f => 3.4.0 (downstream dirty) + AWK_VERSION=' + BEGIN { FS="-" } + /^v[0-9]/ { + sub(/^v/,"") ; print $1 + }' + + echo $PKG_VERSION | awk "$AWK_VERSION" | tr -cd '[:alnum:].' +} + +function get_release () +{ + # tags and output releases: + # - v3.4.0 => 0 (upstream clean) + # - v3.4.0-1 => 1 (downstream clean) + # - v3.4.0-2-g34e62f1 => 2.git34e62f1 (upstream dirty) + # - v3.4.0-1-2-g34e62f1 => 1.2.git34e62f1 (downstream dirty) + AWK_RELEASE=' + BEGIN { FS="-"; OFS="." } + /^v[0-9]/ { + if (NF == 1) print 0 + else if (NF == 2) print $2 + else if (NF == 3) print $2, "git" substr($3, 2) + else if (NF == 4) print $2, $3, "git" substr($4, 2) + }' + + echo $PKG_VERSION | awk "$AWK_RELEASE" | tr -cd '[:alnum:].' +} + +if test "x$1" = "x--full"; then + echo -n "v$(get_version)-$(get_release)" +elif test "x$1" = "x--version"; then + get_version +elif test "x$1" = "x--release"; then + get_release +else + echo "usage: $0 [--full|--version|--release]" + exit 1 +fi diff --git a/configure.ac b/configure.ac index f1bb2a184ed..d146b38c661 100644 --- a/configure.ac +++ b/configure.ac @@ -6,7 +6,12 @@ dnl General Public License, version 3 or any later version (LGPLv3 or dnl later), or the GNU General Public License, version 2 (GPLv2), in all dnl cases as published by the Free Software Foundation. -AC_INIT([glusterfs],[3git],[gluster-users@gluster.org],,[https://github.com/gluster/glusterfs.git]) +AC_INIT([glusterfs], + [m4_esyscmd([build-aux/pkg-version --version])], + [gluster-users@gluster.org],,[https://github.com/gluster/glusterfs.git]) + +AC_SUBST([PACKAGE_RELEASE], + [m4_esyscmd([build-aux/pkg-version --release])]) AM_INIT_AUTOMAKE diff --git a/glusterfs.spec.in b/glusterfs.spec.in index 5e0c7c0dc52..24581240589 100644 --- a/glusterfs.spec.in +++ b/glusterfs.spec.in @@ -83,7 +83,7 @@ Vendor: Fedora Project %else Name: @PACKAGE_NAME@ Version: @PACKAGE_VERSION@ -Release: 1%{?dist} +Release: 0.@PACKAGE_RELEASE@%{?dist} Vendor: glusterfs.org %endif License: GPLv2 or LGPLv3+ @@ -950,6 +950,9 @@ if [ $1 -ge 1 ]; then fi %changelog +* Wed Apr 02 2014 Arumugam Balamurugan <barumuga@redhat.com> +- add version/release dynamically (#1074919) + * Wed Mar 26 2014 Poornima G <pgurusid@redhat.com> - Include the hook scripts of add-brick, volume start, stop and set |