From 0f2eb10f830fa623ca563909c45c91325234267c Mon Sep 17 00:00:00 2001 From: Mike Gerwitz Date: Sun, 8 Jun 2014 01:00:30 -0400 Subject: [PATCH] Version string now dynamically generated This was motivated by Git itself, which uses `git describe` output to generate the version number relative to the last tag. The format of it fits fairly cleanly into the existing ease.js versioning scheme, but the m4 macro had to modified slightly to handle additional dashes. --- configure.ac | 15 ++++++++++++--- tools/vergen | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 3 deletions(-) create mode 100755 tools/vergen diff --git a/configure.ac b/configure.ac index 22f96f1..d7ae922 100644 --- a/configure.ac +++ b/configure.ac @@ -18,12 +18,21 @@ # along with this program. If not, see . ## -AC_INIT([easejs], [0.2.2], [bugs@easejs.org]) +# version string is dynamically generated +m4_define([ver], m4_esyscmd(./tools/vergen)) +m4_if(ver, [], [m4_exit(1)]) + +AC_INIT([easejs], [ver], [bugs@easejs.org]) AC_CONFIG_AUX_DIR([tools]) AM_INIT_AUTOMAKE([foreign]) -# provide more granular version numbers based on the above AC_INIT line -m4_define([ver_split], m4_split(m4_translit(AC_PACKAGE_VERSION, [-], [.]), [\.])) +# provide more granular version numbers based on the version string, using +# the format MAJOR.MINOR.REV[-SUFFIX], where SUFFIX can itself contain +# dashes (and often will) +m4_define([ver_split], + m4_split( + patsubst(AC_PACKAGE_VERSION, [^\([^-]+\)-], [\1.]), + [\.])) AC_SUBST(MAJOR, m4_argn(1, ver_split)) AC_SUBST(MINOR, m4_argn(2, ver_split)) AC_SUBST(REV, m4_argn(3, ver_split)) diff --git a/tools/vergen b/tools/vergen new file mode 100755 index 0000000..6e22885 --- /dev/null +++ b/tools/vergen @@ -0,0 +1,37 @@ +#!/bin/sh +# Generates version string +# +# Copyright (C) 2014 Free Software Foundation, Inc. +# +# This file is part of GNU ease.js. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +## + +# for distributions +if [ -f version ]; then + cat version + exit +fi + +git rev-parse --show-toplevel >/dev/null 2>&1 || { + echo 'fatal: git repository is not available' +} + +version="$( git describe --match='[0-9]\.*' --abbrev=7 HEAD 2>/dev/null )" +git update-index -q --refresh +test -z "$( git diff-index --name-only HEAD)" || version="$version-dirty" + +echo -n "$version" +