Hello, The patch below changes ‘git-version-gen’ so that users can pass a sed script to transform the output of ‘git describe’, thus making it usable to repositories where release tags don’t have the ‘vX.Y’ form currently expected.
For example, Guile’s release tags look like ‘release_X-Y-Z’. Thus, the transformation script would be: s/^release_\([0-9]\+\)-\([0-9]\+\)-\([0-9]\+\)-/v\1.\2\.\3-/g My copyright assignment for Gnulib isn’t complete yet, but it’s a tiny change. Thanks, Ludo’.
>From 3a106f178fc24b0c547dab6da1a7f4d274d1d2f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <l...@gnu.org> Date: Fri, 28 May 2010 11:57:18 +0200 Subject: [PATCH] Make `git-version-gen' take a sed script to transform the git tag. * build-aux/git-version-gen (tag_sed_script): New variable. Use it to transform the output of "git describe" to the canonical form. * top/GNUmakefile (_curr-ver): Pass $(git-version-gen-tag-sed-script) as a second argument to `git-version-gen'. --- build-aux/git-version-gen | 11 +++++++---- top/GNUmakefile | 6 ++++-- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/build-aux/git-version-gen b/build-aux/git-version-gen index 5a7e989..8d7cb11 100755 --- a/build-aux/git-version-gen +++ b/build-aux/git-version-gen @@ -1,6 +1,6 @@ #!/bin/sh # Print a version string. -scriptversion=2010-04-26.16; # UTC +scriptversion=2010-05-28.10; # UTC # Copyright (C) 2007-2010 Free Software Foundation, Inc. # @@ -67,11 +67,13 @@ scriptversion=2010-04-26.16; # UTC # echo $(VERSION) > $(distdir)/.tarball-version case $# in - 1) ;; - *) echo 1>&2 "Usage: $0 \$srcdir/.tarball-version"; exit 1;; + 1|2) ;; + *) echo 1>&2 "Usage: $0 \$srcdir/.tarball-version [TAG-NORMALIZATION-SED-SCRIPT]" + exit 1;; esac tarball_version_file=$1 +tag_sed_script="${2:-s/x/x/}" nl=' ' @@ -93,8 +95,9 @@ if test -n "$v" then : # use $v elif test -d .git \ - && v=`git describe --abbrev=4 --match='v*' HEAD 2>/dev/null \ + && v=`git describe --abbrev=4 --match="v*" HEAD 2>/dev/null \ || git describe --abbrev=4 HEAD 2>/dev/null` \ + && v=`echo $v | sed "$tag_sed_script"` \ && case $v in v[0-9]*) ;; *) (exit 1) ;; diff --git a/top/GNUmakefile b/top/GNUmakefile index daba47a..97fea36 100644 --- a/top/GNUmakefile +++ b/top/GNUmakefile @@ -60,8 +60,10 @@ ifeq ($(_have-git-version-gen)0,yes$(MAKELEVEL)) $(filter maintainer-% dist% alpha beta major,$(MAKECMDGOALS))) _is-install-target ?= $(filter-out %check, $(filter install%,$(MAKECMDGOALS))) ifneq (,$(_is-dist-target)$(_is-install-target)) - _curr-ver := $(shell cd $(srcdir) \ - && $(_build-aux)/git-version-gen .tarball-version) + _curr-ver := $(shell cd $(srcdir) \ + && $(_build-aux)/git-version-gen \ + .tarball-version \ + $(git-version-gen-tag-sed-script)) ifneq ($(_curr-ver),$(VERSION)) ifeq ($(_curr-ver),UNKNOWN) $(info WARNING: unable to verify if $(VERSION) is the correct version) -- 1.7.0