aboutsummaryrefslogtreecommitdiff
path: root/tools/gnulib/patches/650-package-version.patch
diff options
context:
space:
mode:
Diffstat (limited to 'tools/gnulib/patches/650-package-version.patch')
-rw-r--r--tools/gnulib/patches/650-package-version.patch176
1 files changed, 176 insertions, 0 deletions
diff --git a/tools/gnulib/patches/650-package-version.patch b/tools/gnulib/patches/650-package-version.patch
new file mode 100644
index 0000000000..2e3e046736
--- /dev/null
+++ b/tools/gnulib/patches/650-package-version.patch
@@ -0,0 +1,176 @@
+From e518788ad085e02b046e42889039a1f671e4619a Mon Sep 17 00:00:00 2001
+From: Bruno Haible <bruno@clisp.org>
+Date: Wed, 22 Jan 2025 21:21:59 +0100
+Subject: New module 'package-version'.
+
+* m4/init-package-version.m4: New file, from GNU libunistring.
+* modules/package-version: New file.
+* modules/git-version-gen (Depends-on): Add it.
+---
+ ChangeLog | 7 +++
+ m4/init-package-version.m4 | 124 +++++++++++++++++++++++++++++++++++++++++++++
+ modules/git-version-gen | 1 +
+ modules/package-version | 19 +++++++
+ 4 files changed, 151 insertions(+)
+ create mode 100644 m4/init-package-version.m4
+ create mode 100644 modules/package-version
+
+--- /dev/null
++++ b/m4/init-package-version.m4
+@@ -0,0 +1,124 @@
++# init-package-version.m4
++# serial 3
++dnl Copyright (C) 1992-2025 Free Software Foundation, Inc.
++dnl This file is free software, distributed under the terms of the GNU
++dnl General Public License. As a special exception to the GNU General
++dnl Public License, this file may be distributed as part of a program
++dnl that contains a configuration script generated by Autoconf, under
++dnl the same distribution terms as the rest of that program.
++
++# Make it possible to pass version numbers extracted from a file in
++# $(srcdir) to autoconf.
++#
++# Autoconf insists on passing the package name and version number to
++# every generated .h file and every Makefile. This was a reasonable
++# design at times when a version number was changed only once a month.
++# Nowadays, people often assign a new version number once a week, or
++# even change it each time a 'git' commit is made. Regenerating all
++# the files that depend on configure.ac (aclocal.m4, configure,
++# config.status, config.h, all Makefiles) may take 15 minutes. These
++# delays can severely hamper development.
++#
++# An alternative is to store the version number in a file in $(srcdir)
++# that is separate from configure.ac. It can be a data file, a shell
++# script, a .m4 file, or other. The essential point is that the maintainer
++# is responsible for creating Makefile dependencies to this version file
++# for every file that needs to be rebuilt when the version changes. This
++# typically includes
++# - distributable documentation files that carry the version number,
++# but does not include
++# - aclocal.m4, configure, config.status, config.h, all Makefiles,
++# - executables.
++#
++# autoconf and automake make it hard to follow this approach:
++#
++# - If AC_INIT is used with arguments, there is a chicken-and-egg problem:
++# The arguments need to be read from a file in $(srcdir). The location
++# of $(srcdir) is only determined by AC_CONFIG_SRCDIR. AC_CONFIG_SRCDIR
++# can only appear after AC_INIT (otherwise aclocal gives an error:
++# "error: m4_defn: undefined macro: _m4_divert_diversion").
++# Furthermore, the arguments passed to AC_INIT must be literals; for
++# example, the assignment to PACKAGE_VERSION looks like this:
++# [PACKAGE_VERSION=']AC_PACKAGE_VERSION[']
++#
++# - If AC_INIT is used without arguments:
++# Automake provides its own variables, PACKAGE and VERSION, and uses them
++# instead of PACKAGE_NAME and PACKAGE_VERSION that come from Autoconf.
++# - If AM_INIT_AUTOMAKE is used with two arguments, automake options
++# like 'silent-rules' cannot be specified.
++# - If AM_INIT_AUTOMAKE is used in its one-argument form or without
++# arguments at all, it triggers an error
++# "error: AC_INIT should be called with package and version arguments".
++# - If AM_INIT_AUTOMAKE is used in its one-argument form or without
++# arguments at all, and _AC_INIT_PACKAGE is used before it, with
++# the package and version number from the file as arguments, we get
++# a warning: "warning: AC_INIT: not a literal: $VERSION_NUMBER".
++# The arguments passed to _AC_INIT_PACKAGE must be literals.
++#
++# With the macro defined in this file, the approach can be coded like this:
++#
++# AC_INIT
++# AC_CONFIG_SRCDIR(WITNESS)
++# . $srcdir/../version.sh
++# gl_INIT_PACKAGE(PACKAGE, $VERSION_NUMBER)
++# AM_INIT_AUTOMAKE([OPTIONS])
++#
++# and after changing version.sh, the developer can directly configure and build:
++#
++# make distclean
++# ./configure
++# make
++#
++# Some other packages use another approach:
++#
++# AC_INIT(PACKAGE,
++# m4_normalize(m4_esyscmd([. ./version.sh; echo $VERSION_NUMBER])))
++# AC_CONFIG_SRCDIR(WITNESS)
++# AM_INIT_AUTOMAKE([OPTIONS])
++#
++# but here, after changing version.sh, the developer must first regenerate the
++# configure file:
++#
++# make distclean
++# ./autogen.sh --skip-gnulib
++# ./configure
++# make
++#
++
++# gl_INIT_PACKAGE(PACKAGE-NAME, VERSION)
++# --------------------------------------
++# followed by an AM_INIT_AUTOMAKE invocation,
++# is like calling AM_INIT_AUTOMAKE(PACKAGE-NAME, VERSION)
++# except that it can use computed non-literal arguments.
++AC_DEFUN([gl_INIT_PACKAGE],
++[
++ AC_BEFORE([$0], [AM_INIT_AUTOMAKE])
++ dnl Redefine AM_INIT_AUTOMAKE.
++ m4_define([gl_AM_INIT_AUTOMAKE],
++ m4_bpatsubst(m4_dquote(
++ m4_bpatsubst(m4_dquote(
++ m4_bpatsubst(m4_dquote(
++ m4_defn([AM_INIT_AUTOMAKE])),
++ [AC_PACKAGE_NAME], [gl_INIT_DUMMY])),
++ [AC_PACKAGE_TARNAME], [gl_INIT_EMPTY])),
++ [AC_PACKAGE_VERSION], [gl_INIT_DUMMY])
++ [AC_SUBST([PACKAGE], [$1])
++ AC_SUBST([VERSION], [$2])
++ ])
++ m4_define([AM_INIT_AUTOMAKE],
++ m4_defn([gl_RPL_INIT_AUTOMAKE]))
++])
++m4_define([gl_INIT_EMPTY], [])
++dnl Automake 1.16.4 no longer accepts an empty value for gl_INIT_DUMMY.
++dnl But a macro that later expands to empty works.
++m4_define([gl_INIT_DUMMY], [gl_INIT_DUMMY2])
++m4_define([gl_INIT_DUMMY2], [])
++AC_DEFUN([gl_RPL_INIT_AUTOMAKE], [
++ m4_ifval([$2],
++ [m4_fatal([After gl_INIT_PACKAGE, the two-argument form of AM_INIT_AUTOMAKE cannot be used.])])
++ gl_AM_INIT_AUTOMAKE([$1 no-define])
++ m4_if(m4_index([ $1 ], [ no-define ]), [-1],
++ [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
++ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])
++ ])
++])
+--- a/modules/git-version-gen
++++ b/modules/git-version-gen
+@@ -5,6 +5,7 @@ Files:
+ build-aux/git-version-gen
+
+ Depends-on:
++package-version
+
+ configure.ac:
+
+--- /dev/null
++++ b/modules/package-version
+@@ -0,0 +1,19 @@
++Description:
++Support for a computed version string.
++
++Files:
++m4/init-package-version.m4
++
++Depends-on:
++
++configure.ac:
++
++Makefile.am:
++
++Include:
++
++License:
++GPLed build tool
++
++Maintainer:
++Bruno Haible