m4-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

git-version-gen [was: release 1.4.10b]


From: Eric Blake
Subject: git-version-gen [was: release 1.4.10b]
Date: Tue, 8 Apr 2008 18:21:23 +0000 (UTC)
User-agent: Loom/3.14 (http://gmane.org/)

Eric Blake <ebb9 <at> byu.net> writes:

> And this makes --version information more informative on the branch.  I
> can't quite port it to head until head has a signed tag of the form v1.9x;
> I'm also waiting for git 1.5.5 to come out with the "git describe --match
> 'v[0-9]*'" command.  I'm not sure whether I want to cut the release for
> 1.9b to alpha.gnu.org right now, or just tag a non-released version just
> to have something for git-version-gen to work with.

I ended up pushing a tag for v1.9a at the point where we decided the master 
branch was no longer going to be named 1.5.  The 'git tag --help' documentation 
wasn't accurate: it claimed 'GIT_AUTHOR_DATE=date git tag' is sufficient to 
create a backdated tag, but I had to resort to manual editing and 'git mktag'; 
I'll report that to the git list separately.  With this patch, and new enough 
git installed, 'm4 --version' now reports 1.9a.414-0b84 (while if you don't 
have git 1.5.5 yet, it remains unchanged at 1.9a).

>From 0b8410450c789102f46f2ee21aaeb304737e828b Mon Sep 17 00:00:00 2001
From: Eric Blake <address@hidden>
Date: Tue, 8 Apr 2008 12:12:53 -0600
Subject: [PATCH] Overhaul inter-version releases to work with git.

* configure.ac (version): New variable, which has nicer version
contents when using git 1.5.5+, hardcoded to 1.9a otherwise.
(TIMESTAMP): Delete, since CVS id expansion died with transition
to git.
(AM_INIT_AUTOMAKE): Use version to decide gnu vs. gnits.
* build-aux/mkstamp: Delete, no longer used.
* Makefile.am (CONFIG_STATUS_DEPENDENCIES): Kill, to speed up
rebuilds when timestamps don't matter.
(MKSTAMP): Delete, no longer used.
(EXTRA_DIST): No longer worry about mkstamp.
(.version): New rule and distributed file.
(doc/m4.1, tests/package.m4): Depend on .version, not
configure.ac, for timestamp.
* ltdl/m4/gnulib-cache.m4: Import git-version-gen module.
* modules/gnu.c (__m4_version__): TIMESTAMP no longer exists.
* src/main.c (main): Likewise.

Signed-off-by: Eric Blake <address@hidden>
---
 .cvsignore              |    3 +++
 .gitignore              |    3 +++
 ChangeLog               |   22 ++++++++++++++++++++--
 Makefile.am             |   21 +++++++++++----------
 build-aux/.cvsignore    |   13 -------------
 build-aux/.gitignore    |   13 -------------
 build-aux/mkstamp       |   38 --------------------------------------
 configure.ac            |   22 +++++-----------------
 ltdl/m4/gnulib-cache.m4 |    4 ++--
 modules/gnu.c           |    2 +-
 src/main.c              |    3 +--
 11 files changed, 46 insertions(+), 98 deletions(-)
 delete mode 100644 build-aux/.cvsignore
 delete mode 100644 build-aux/.gitignore
 delete mode 100755 build-aux/mkstamp

diff --git a/.cvsignore b/.cvsignore
index 4f6a6be..c83be60 100644
--- a/.cvsignore
+++ b/.cvsignore
@@ -1,9 +1,12 @@
 .git
 .patch_number
+.tarball-version
+.version
 ABOUT-NLS
 aclocal.m4
 aclocal.m4t
 autom4te.cache
+build-aux
 config.cache
 config.h
 config-h.in
diff --git a/.gitignore b/.gitignore
index 2f710ab..9077a31 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,10 +3,13 @@
 .patch_number
 *.orig
 *.rej
+.tarball-version
+.version
 ABOUT-NLS
 aclocal.m4
 aclocal.m4t
 autom4te.cache
+build-aux
 config.cache
 config.h
 config-h.in
diff --git a/ChangeLog b/ChangeLog
index 7c3e174..32593ea 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,23 @@
+2008-04-08  Eric Blake  <address@hidden>
+
+       Overhaul inter-version releases to work with git.
+       * configure.ac (version): New variable, which has nicer version
+       contents when using git 1.5.5+, hardcoded to 1.9a otherwise.
+       (TIMESTAMP): Delete, since CVS id expansion died with transition
+       to git.
+       (AM_INIT_AUTOMAKE): Use version to decide gnu vs. gnits.
+       * build-aux/mkstamp: Delete, no longer used.
+       * Makefile.am (CONFIG_STATUS_DEPENDENCIES): Kill, to speed up
+       rebuilds when timestamps don't matter.
+       (MKSTAMP): Delete, no longer used.
+       (EXTRA_DIST): No longer worry about mkstamp.
+       (.version): New rule and distributed file.
+       (doc/m4.1, tests/package.m4): Depend on .version, not
+       configure.ac, for timestamp.
+       * ltdl/m4/gnulib-cache.m4: Import git-version-gen module.
+       * modules/gnu.c (__m4_version__): TIMESTAMP no longer exists.
+       * src/main.c (main): Likewise.
+
 2008-03-28  Eric Blake  <address@hidden>
 
        Use GNUmakefile module.
@@ -10575,8 +10595,6 @@
 
        -----
 
-       $Revision$ $Date$
-
        Local Variables:
        coding: utf-8
        End:
diff --git a/Makefile.am b/Makefile.am
index ac0279d..9ae8189 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -50,22 +50,23 @@ EXTRA_LTLIBRARIES=
 # Include Libtool's rules.
 include ltdl/Makefile.inc
 
-# Additional configuration.
+# Additional configuration.  Version management comes from suggestions
+# given in build-aux/git-version-gen.
 AM_CPPFLAGS    += -Ignu -I$(srcdir)/gnu \
                  -Im4 -I$(srcdir)/m4
-EXTRA_DIST     += bootstrap \
-                 $(config_aux_dir)/mkstamp \
+EXTRA_DIST     += bootstrap .version \
                  $(config_macro_dir)/gnulib-cache.m4
+BUILT_SOURCES  += .version
+.version:
+       echo $(VERSION) > address@hidden && mv address@hidden $@
+dist-hook: dist-tarball-version
+dist-tarball-version:
+       echo $(VERSION) > $(distdir)/.tarball-version
 MAINTAINERCLEANFILES = \
                  ABOUT-NLS COPYING INSTALL Makefile.in aclocal.m4 \
                  config-h.in configure stamp-h.in \
                  po/cat-id-tbl.c po/m4.pot po/stamp-cat-id
 
-MKSTAMP = $(SHELL) $(srcdir)/$(config_aux_dir)/mkstamp
-
-# Make sure config.status is regenerated when the version timestamp changes
-CONFIG_STATUS_DEPENDENCIES = ChangeLog
-
 
 ## ------- ##
 ## GNU M4. ##
@@ -259,7 +260,7 @@ HELP2MAN    = $(SHELL) $(srcdir)/$(config_aux_dir)/missing -
-run help2man
 # Build the man page once in the srcdir, rather than in every VPATH build
 # dir, to match how automake builds info pages.  This is safe for 'make
 # distcheck' since it is distributed pre-built.
-$(srcdir)/doc/m4.1: configure.ac src/main.c
+$(srcdir)/doc/m4.1: .version src/main.c
        @if test -f src/m4$(EXEEXT); then \
          echo "Updating the \`man' page \`$@'"; \
          $(HELP2MAN) --name="macro processor" --source=FSF \
@@ -395,7 +396,7 @@ $(TESTSUITE): tests/package.m4 $(TESTSUITE_AT)
        mv address@hidden $@
 
 # The leading :; works around a bug in {}>f in some bash versions.
-$(srcdir)/tests/package.m4: configure.ac
+$(srcdir)/tests/package.m4: .version
        :; \
        { \
          echo '# Signature of the current package.'; \
diff --git a/build-aux/.cvsignore b/build-aux/.cvsignore
deleted file mode 100644
index 6da574f..0000000
--- a/build-aux/.cvsignore
+++ /dev/null
@@ -1,13 +0,0 @@
-compile
-config.*
-config.rpath
-depcomp
-gendocs.sh
-gnupload
-install-sh
-link-warning.h
-ltmain.sh
-mdate-sh
-missing
-mkinstalldirs
-texinfo.tex
diff --git a/build-aux/.gitignore b/build-aux/.gitignore
deleted file mode 100644
index 6da574f..0000000
--- a/build-aux/.gitignore
+++ /dev/null
@@ -1,13 +0,0 @@
-compile
-config.*
-config.rpath
-depcomp
-gendocs.sh
-gnupload
-install-sh
-link-warning.h
-ltmain.sh
-mdate-sh
-missing
-mkinstalldirs
-texinfo.tex
diff --git a/build-aux/mkstamp b/build-aux/mkstamp
deleted file mode 100755
index 3e81c96..0000000
--- a/build-aux/mkstamp
+++ /dev/null
@@ -1,38 +0,0 @@
-#! /bin/sh
-
-# mkstamp - extract data from Revision and Date RCS tags in a file
-# Copyright (C) 1999, 2003, 2007 Free Software Foundation, Inc.
-# Alexandre Oliva <address@hidden>
-#
-# This file is part of GNU M4.
-#
-# GNU M4 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.
-#
-# GNU M4 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/>.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# This script expects to find a line containing both Revision and Date
-# tags, and it edits this line so that it looks like ` $rev $date'
-
-# Command-line arguments are passed down to sed; additional -e cmd
-# arguments are acceptable.  If no input filename is specified in the
-# command line, sed will read from stdin.
-
-exec sed -e '
-       s%.*\$''Revision: \([^$]*\) \$.*\$''Date: \([^$]*\) \$.*% \1 \2%
-       t end
-       d
-       : end' ${1+"$@"}
diff --git a/configure.ac b/configure.ac
index 589c4b1..fdac14d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,7 +23,9 @@ AC_PREREQ([2.61a.347])
 ## ------------------------ ##
 ## Autoconf initialization. ##
 ## ------------------------ ##
-AC_INIT([GNU M4], [1.9a], address@hidden)
+m4_define([version], m4_esyscmd([build-aux/git-version-gen .tarball-version]))
+m4_bmatch(m4_defn([version]), [^[0-9]], [], [m4_define([version], [1.9a])])
+AC_INIT([GNU M4], m4_defn([version]), address@hidden)
 
 AC_CONFIG_SRCDIR([src/m4.h])
 AC_CONFIG_AUX_DIR([build-aux])
@@ -33,21 +35,6 @@ AC_CONFIG_TESTDIR([tests])
 AC_CONFIG_HEADERS([gnu/config.h:gnu/config.hin])
 AC_CONFIG_FILES([tests/m4], [chmod +x tests/m4])
 
-
-## ---------------------------------------- ##
-## Display a configure time version banner. ##
-## ---------------------------------------- ##
-TIMESTAMP=
-case AC_PACKAGE_VERSION in
-  *[[acegikmoqsuwy]])
-    TIMESTAMP=`$CONFIG_SHELL $ac_aux_dir/mkstamp < $srcdir/ChangeLog`
-    test -z "$TIMESTAMP" || TIMESTAMP=" Build:$TIMESTAMP"
-    AS_BOX([Configuring AC_PACKAGE_TARNAME][$TIMESTAMP AC_PACKAGE_VERSION])
-    echo
-    ;;
-esac
-AC_DEFINE_UNQUOTED([TIMESTAMP], ["$TIMESTAMP"],
-    [Defined to a CVS timestamp for alpha releases of M4])
 AB_INIT()
 
 
@@ -67,7 +54,8 @@ M4_default_preload="M4_DEFAULT_PRELOAD"
 ## ------------------------ ##
 ## Automake Initialization. ##
 ## ------------------------ ##
-AM_INIT_AUTOMAKE([1.10.1 subdir-objects dist-bzip2 dist-lzma gnits])
+AM_INIT_AUTOMAKE([1.10.1 subdir-objects dist-bzip2 dist-lzma]
+m4_bmatch(m4_defn([version]), [-], [gnu], [gnits]))
 
 
 
diff --git a/ltdl/m4/gnulib-cache.m4 b/ltdl/m4/gnulib-cache.m4
index 2a2a6dd..0e122ac 100644
--- a/ltdl/m4/gnulib-cache.m4
+++ b/ltdl/m4/gnulib-cache.m4
@@ -15,11 +15,11 @@
 
 
 # Specification in the form of a command-line invocation:
-#   gnulib-tool --import --dir=. --local-dir=local --lib=libgnu --source-
base=gnu --m4-base=ltdl/m4 --doc-base=doc --aux-dir=build-aux --with-tests --
libtool --macro-prefix=M4 assert autobuild avltree-oset binary-io clean-temp 
cloexec close-stream closein config-h configmake dirname error exit fdl fflush 
filenamecat flexmember fopen-safer fseeko gendocs gettext gnumakefile gnupload 
gpl-3.0 intprops memmem mkstemp obstack progname quote regex regexprops-generic 
sprintf-posix stdbool stdlib-safer strnlen strtod strtol tempname unlocked-io 
vasnprintf-posix verror xalloc xalloc-die xprintf-posix xstrndup xvasprintf-
posix
+#   gnulib-tool --import --dir=. --local-dir=local --lib=libgnu --source-
base=gnu --m4-base=ltdl/m4 --doc-base=doc --aux-dir=build-aux --with-tests --
libtool --macro-prefix=M4 assert autobuild avltree-oset binary-io clean-temp 
cloexec close-stream closein config-h configmake dirname error exit fdl fflush 
filenamecat flexmember fopen-safer fseeko gendocs gettext git-version-gen 
gnumakefile gnupload gpl-3.0 intprops memmem mkstemp obstack progname quote 
regex regexprops-generic sprintf-posix stdbool stdlib-safer strnlen strtod 
strtol tempname unlocked-io vasnprintf-posix verror xalloc xalloc-die xprintf-
posix xstrndup xvasprintf-posix
 
 # Specification in the form of a few gnulib-tool.m4 macro invocations:
 gl_LOCAL_DIR([local])
-gl_MODULES([assert autobuild avltree-oset binary-io clean-temp cloexec close-
stream closein config-h configmake dirname error exit fdl fflush filenamecat 
flexmember fopen-safer fseeko gendocs gettext gnumakefile gnupload gpl-3.0 
intprops memmem mkstemp obstack progname quote regex regexprops-generic sprintf-
posix stdbool stdlib-safer strnlen strtod strtol tempname unlocked-io 
vasnprintf-posix verror xalloc xalloc-die xprintf-posix xstrndup xvasprintf-
posix])
+gl_MODULES([assert autobuild avltree-oset binary-io clean-temp cloexec close-
stream closein config-h configmake dirname error exit fdl fflush filenamecat 
flexmember fopen-safer fseeko gendocs gettext git-version-gen gnumakefile 
gnupload gpl-3.0 intprops memmem mkstemp obstack progname quote regex 
regexprops-generic sprintf-posix stdbool stdlib-safer strnlen strtod strtol 
tempname unlocked-io vasnprintf-posix verror xalloc xalloc-die xprintf-posix 
xstrndup xvasprintf-posix])
 gl_AVOID([])
 gl_SOURCE_BASE([gnu])
 gl_M4_BASE([ltdl/m4])
diff --git a/modules/gnu.c b/modules/gnu.c
index 5309968..1cf4a60 100644
--- a/modules/gnu.c
+++ b/modules/gnu.c
@@ -93,7 +93,7 @@ m4_macro m4_macro_table[] =
 # warning Platform macro not provided
 #endif
   { "__gnu__",         "",     0,      0 },
-  { "__m4_version__",  VERSION/**/TIMESTAMP, 0, 0 },
+  { "__m4_version__",  VERSION,0,      0 },
 
   { NULL,              NULL,   0,      0 },
 };
diff --git a/src/main.c b/src/main.c
index b06a893..86f21e7 100644
--- a/src/main.c
+++ b/src/main.c
@@ -592,8 +592,7 @@ main (int argc, char *const *argv, char *const *envp)
          break;
 
        case VERSION_OPTION:
-         version_etc (stdout, PACKAGE, PACKAGE_NAME TIMESTAMP,
-                      VERSION, AUTHORS, NULL);
+         version_etc (stdout, PACKAGE, PACKAGE_NAME, VERSION, AUTHORS, NULL);
          exit (EXIT_SUCCESS);
          break;
 
-- 
1.5.4








reply via email to

[Prev in Thread] Current Thread [Next in Thread]