1
0
Fork 0

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.
protolib
Mike Gerwitz 2014-06-08 01:00:30 -04:00
parent 2391224477
commit 0f2eb10f83
2 changed files with 49 additions and 3 deletions

View File

@ -18,12 +18,21 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
## ##
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]) AC_CONFIG_AUX_DIR([tools])
AM_INIT_AUTOMAKE([foreign]) AM_INIT_AUTOMAKE([foreign])
# provide more granular version numbers based on the above AC_INIT line # provide more granular version numbers based on the version string, using
m4_define([ver_split], m4_split(m4_translit(AC_PACKAGE_VERSION, [-], [.]), [\.])) # 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(MAJOR, m4_argn(1, ver_split))
AC_SUBST(MINOR, m4_argn(2, ver_split)) AC_SUBST(MINOR, m4_argn(2, ver_split))
AC_SUBST(REV, m4_argn(3, ver_split)) AC_SUBST(REV, m4_argn(3, ver_split))

37
tools/vergen 100755
View File

@ -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 <http://www.gnu.org/licenses/>.
##
# 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"