diff mbox series

[v3] m4: Upgrade to 1.4.20 release

Message ID 20250517081747.1089519-1-raj.khem@gmail.com
State New
Headers show
Series [v3] m4: Upgrade to 1.4.20 release | expand

Commit Message

Khem Raj May 17, 2025, 8:17 a.m. UTC
This has been 4 years in making, it has fixes to build with gcc-15
and some patches are upstream [1] [2]

This release collects several years of portability improvements, as
well as a couple of minor optimizations to performance.  Notable
improvements in this release include faster execution of the 'eval'
builtin. More details [3]

[1] https://github.com/coreutils/gnulib/commit/2d830e4a792fcd9f614ed08a7f18584b8b21d23b
[2] https://git.savannah.gnu.org/gitweb/?p=libsigsegv.git;a=commitdiff;h=a6ff69873110c0a8ba6f7fd90532dbc11224828c
[3] https://lists.gnu.org/archive/html/m4-announce/2025-05/msg00000.html

Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
v2: Fix do_install_ptest builds
v3: Fix failing ptests

 .../m4/{m4-1.4.19.inc => m4-1.4.20.inc}       | 16 ++----
 ...4-native_1.4.19.bb => m4-native_1.4.20.bb} |  0
 ...lot-using-_Alignof-when-using-C11-or.patch | 49 -------------------
 .../0001-sigsegv-Fix-build-on-ppc-musl.patch  | 37 --------------
 .../m4/m4/ac_config_links.patch               | 37 --------------
 meta/recipes-devtools/m4/m4/run-ptest         |  2 +-
 .../m4/m4/serial-tests-config.patch           | 11 ++---
 .../m4/{m4_1.4.19.bb => m4_1.4.20.bb}         |  0
 8 files changed, 9 insertions(+), 143 deletions(-)
 rename meta/recipes-devtools/m4/{m4-1.4.19.inc => m4-1.4.20.inc} (75%)
 rename meta/recipes-devtools/m4/{m4-native_1.4.19.bb => m4-native_1.4.20.bb} (100%)
 delete mode 100644 meta/recipes-devtools/m4/m4/0001-Define-alignof_slot-using-_Alignof-when-using-C11-or.patch
 delete mode 100644 meta/recipes-devtools/m4/m4/0001-sigsegv-Fix-build-on-ppc-musl.patch
 delete mode 100644 meta/recipes-devtools/m4/m4/ac_config_links.patch
 rename meta/recipes-devtools/m4/{m4_1.4.19.bb => m4_1.4.20.bb} (100%)
diff mbox series

Patch

diff --git a/meta/recipes-devtools/m4/m4-1.4.19.inc b/meta/recipes-devtools/m4/m4-1.4.20.inc
similarity index 75%
rename from meta/recipes-devtools/m4/m4-1.4.19.inc
rename to meta/recipes-devtools/m4/m4-1.4.20.inc
index c73418d8e67..2ea3a9bace2 100644
--- a/meta/recipes-devtools/m4/m4-1.4.19.inc
+++ b/meta/recipes-devtools/m4/m4-1.4.20.inc
@@ -7,15 +7,12 @@  GNU M4 also has built-in functions for including files, running shell commands,
 inherit autotools texinfo ptest gettext
 
 SRC_URI = "${GNU_MIRROR}/m4/m4-${PV}.tar.gz \
-           file://ac_config_links.patch \
-           file://0001-sigsegv-Fix-build-on-ppc-musl.patch \
-           file://0001-Define-alignof_slot-using-_Alignof-when-using-C11-or.patch \
            "
 SRC_URI:append:class-target = " file://run-ptest \
                                 file://serial-tests-config.patch \
                               "
 
-SRC_URI[sha256sum] = "3be4a26d825ffdfda52a56fc43246456989a3630093cced3fbddf4771ee58a70"
+SRC_URI[sha256sum] = "6ac4fc31ce440debe63987c2ebbf9d7b6634e67a7c3279257dc7361de8bdb3ef"
 
 LICENSE = "GPL-3.0-only"
 
@@ -26,8 +23,6 @@  EXTRA_OECONF += "--without-libsigsegv-prefix"
 
 EXTRA_OEMAKE += "'infodir=${infodir}'"
 
-CFLAGS += "-std=gnu17"
-
 do_compile_ptest() {
 	cd ${B}/tests
 	sed -i '/^buildtest-TESTS: /c buildtest-TESTS: $(TESTS) $(check_LIBRARIES) $(check_PROGRAMS)' Makefile
@@ -37,15 +32,15 @@  do_compile_ptest() {
 do_install_ptest() {
                 cp -r ${B}/tests                        ${D}${PTEST_PATH}
                 cp -r ${S}/tests/*                      ${D}${PTEST_PATH}/tests/
+                cp -r ${S}/build-aux                    ${D}${PTEST_PATH}/tests/
                 sed -i '/^Makefile:/c Makefile:'        ${D}${PTEST_PATH}/tests/Makefile
                 find ${D}${PTEST_PATH} -type f -name *.[hoc] | xargs -i rm {}
-                cp ${S}/build-aux/update-copyright  ${D}${PTEST_PATH}/tests/
-                sed -i 's;update-copyright;./update-copyright;g' ${D}${PTEST_PATH}/tests/test-update-copyright.sh
-                chmod 0755 ${D}${PTEST_PATH}/tests/test-mbrtowc-w32-1.sh  ${D}${PTEST_PATH}/tests/test-spawn-pipe-main \
+                chmod 0755 ${D}${PTEST_PATH}/tests/test-spawn-pipe-main \
                      ${D}${PTEST_PATH}/tests/test-spawn-pipe-child ${D}${PTEST_PATH}/tests/test-version-etc \
                      ${D}${PTEST_PATH}/tests/test-xalloc-die
 
-                ln -s ptest ${D}${libdir}/${BPN}/${BP} 
+                ln -sf ptest ${D}${libdir}/${BPN}/${BP}
+                sed -i -e 's/@BP@/${BP}/g' ${D}${PTEST_PATH}/run-ptest
 }
 
 do_install_ptest:append:libc-glibc() {
@@ -59,4 +54,3 @@  RDEPENDS:${PN}-ptest:append:libc-glibc = "\
      locale-base-fr-fr.iso-8859-1 \
      glibc-gconv-iso8859-1 \
 "
-
diff --git a/meta/recipes-devtools/m4/m4-native_1.4.19.bb b/meta/recipes-devtools/m4/m4-native_1.4.20.bb
similarity index 100%
rename from meta/recipes-devtools/m4/m4-native_1.4.19.bb
rename to meta/recipes-devtools/m4/m4-native_1.4.20.bb
diff --git a/meta/recipes-devtools/m4/m4/0001-Define-alignof_slot-using-_Alignof-when-using-C11-or.patch b/meta/recipes-devtools/m4/m4/0001-Define-alignof_slot-using-_Alignof-when-using-C11-or.patch
deleted file mode 100644
index 8757abd7a0e..00000000000
--- a/meta/recipes-devtools/m4/m4/0001-Define-alignof_slot-using-_Alignof-when-using-C11-or.patch
+++ /dev/null
@@ -1,49 +0,0 @@ 
-From b0fd3a58354b1f5ead891907979dfd3dd36840d5 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 14 Jan 2023 14:55:03 -0800
-Subject: [PATCH] Define alignof_slot using _Alignof when using C11 or newer
-
-WG14 N2350 made very clear that it is an UB having type definitions
-within "offsetof" [1]. This patch enhances the implementation of macro
-alignof_slot to use builtin "_Alignof" to avoid undefined behavior on
-when using std=c11 or newer
-
-clang 16+ has started to flag this [2]
-
-Fixes build when using -std >= gnu11 and using clang16+ [3]
-
-[1] https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2350.htm
-[2] https://reviews.llvm.org/D133574
-[3] https://public-inbox.org/bug-gnulib/20230114232744.215167-1-raj.khem@gmail.com/T/#u
-
-Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=2d404c7dd974cc65f894526f4a1b76bc1dcd8d82]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- lib/alignof.h | 2 ++
- 1 file changed, 2 insertions(+)
-
---- a/lib/alignof.h
-+++ b/lib/alignof.h
-@@ -18,19 +18,19 @@
- #define _ALIGNOF_H
- 
- #include <stddef.h>
-+#include "stdalign.h"
- 
- /* alignof_slot (TYPE)
-    Determine the alignment of a structure slot (field) of a given type,
-    at compile time.  Note that the result depends on the ABI.
--   This is the same as alignof (TYPE) and _Alignof (TYPE), defined in
--   <stdalign.h> if __alignof_is_defined is 1.
-+   This is the same as alignof (TYPE).
-    Note: The result cannot be used as a value for an 'enum' constant,
-    due to bugs in HP-UX 10.20 cc and AIX 3.2.5 xlc.  */
- #if defined __cplusplus
-   template <class type> struct alignof_helper { char __slot1; type __slot2; };
- # define alignof_slot(type) offsetof (alignof_helper<type>, __slot2)
- #else
--# define alignof_slot(type) offsetof (struct { char __slot1; type __slot2; }, __slot2)
-+# define alignof_slot(type) alignof (type)
- #endif
- 
- /* alignof_type (TYPE)
diff --git a/meta/recipes-devtools/m4/m4/0001-sigsegv-Fix-build-on-ppc-musl.patch b/meta/recipes-devtools/m4/m4/0001-sigsegv-Fix-build-on-ppc-musl.patch
deleted file mode 100644
index 04320de63a2..00000000000
--- a/meta/recipes-devtools/m4/m4/0001-sigsegv-Fix-build-on-ppc-musl.patch
+++ /dev/null
@@ -1,37 +0,0 @@ 
-From 36d5e26f606e070553eb0fff1f738e61970be5d7 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 9 Mar 2022 20:22:20 -0800
-Subject: [PATCH] sigsegv: Fix build on ppc/musl
-
-mcontext is not a standard layout so glibc and musl differ sadly.
-
-Fixes
-../../m4-1.4.19/lib/sigsegv.c: In function 'sigsegv_handler':                                                                                                                               ../../m4-1.4.19/lib/sigsegv.c:223:75: error: 'mcontext_t' has no member named 'uc_regs'; did you mean 'gregs'?                                                                                223 | #    define SIGSEGV_FAULT_STACKPOINTER  ((ucontext_t *) ucp)->uc_mcontext.uc_regs->gregs[1]                                                                                               |                                                                           ^~~~~~~
-
-Upstream-Status: Submitted [https://lists.gnu.org/archive/html/m4-patches/2022-03/msg00000.html]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- lib/sigsegv.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/lib/sigsegv.c b/lib/sigsegv.c
-index 696a152..fa0c465 100644
---- a/lib/sigsegv.c
-+++ b/lib/sigsegv.c
-@@ -217,10 +217,10 @@ int libsigsegv_version = LIBSIGSEGV_VERSION;
- #   define SIGSEGV_FAULT_STACKPOINTER  ((ucontext_t *) ucp)->uc_mcontext.gp_regs[1]
- #  else /* 32-bit */
- /* both should be equivalent */
--#   if 0
--#    define SIGSEGV_FAULT_STACKPOINTER  ((ucontext_t *) ucp)->uc_mcontext.regs->gpr[1]
-+#   if ! defined __GLIBC__
-+#      define SIGSEGV_FAULT_STACKPOINTER  ((ucontext_t *) ucp)->uc_regs->gregs[1]
- #   else
--#    define SIGSEGV_FAULT_STACKPOINTER  ((ucontext_t *) ucp)->uc_mcontext.uc_regs->gregs[1]
-+#      define SIGSEGV_FAULT_STACKPOINTER  ((ucontext_t *) ucp)->uc_mcontext.uc_regs->gregs[1]
- #   endif
- #  endif
- 
--- 
-2.35.1
-
diff --git a/meta/recipes-devtools/m4/m4/ac_config_links.patch b/meta/recipes-devtools/m4/m4/ac_config_links.patch
deleted file mode 100644
index 39fcd918968..00000000000
--- a/meta/recipes-devtools/m4/m4/ac_config_links.patch
+++ /dev/null
@@ -1,37 +0,0 @@ 
-Upstream-Status: Inappropriate [configuration]
-
-This patch fixes a build problem for m4-native experienced on Ubuntu 9.10,
-where autoconf/automake (AC_CONFIG_LINKS) ends up making GNUmakefile a
-symlink to itself.
-
-The patch comments out ac_config_links directly in configure,
-as autoreconf is not actually run for m4-native.
-
-I believe it should be safe, as GNUmakefile is actually unpacked from
-source, and what we want is to is to not touch it.
-
-Tested on x86_64_linux (Ubuntu 8.04 and 9.10).
-
-2009-11-10      Esben Haabendal     <eha@doredevelopment.dk>
----
- configure | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/configure b/configure
-index 883336a..6343a34 100755
---- a/configure
-+++ b/configure
-@@ -37061,8 +37061,8 @@ printf "%s\n" "#define GNULIB_TEST_GETRANDOM 1" >>confdefs.h
-   # only, it does not matter if we skip the link with older autoconf.
-   # Automake 1.10.1 and earlier try to remove GNUmakefile in non-VPATH
-   # builds, so use a shell variable to bypass this.
--  GNUmakefile=GNUmakefile
--  ac_config_links="$ac_config_links $GNUmakefile:$GNUmakefile"
-+#  GNUmakefile=GNUmakefile
-+#  ac_config_links="$ac_config_links $GNUmakefile:$GNUmakefile"
- 
- 
-   LIB_HARD_LOCALE="$LIB_SETLOCALE_NULL"
--- 
-2.25.1
-
diff --git a/meta/recipes-devtools/m4/m4/run-ptest b/meta/recipes-devtools/m4/m4/run-ptest
index 5c0fe933578..a91c372e541 100644
--- a/meta/recipes-devtools/m4/m4/run-ptest
+++ b/meta/recipes-devtools/m4/m4/run-ptest
@@ -2,4 +2,4 @@ 
 #
 #This script is used to run m4 test suites
 cd tests 
-make -k runtest-TESTS top_srcdir=.. srcdir=.
+make -k runtest-TESTS abs_aux_dir=../../@BP@/tests/build-aux abs_top_srcdir=../../@BP@/tests abs_srcdir=../../@BP@/tests top_srcdir=.. srcdir=.
diff --git a/meta/recipes-devtools/m4/m4/serial-tests-config.patch b/meta/recipes-devtools/m4/m4/serial-tests-config.patch
index 34e6ad801e7..c1573b13c0f 100644
--- a/meta/recipes-devtools/m4/m4/serial-tests-config.patch
+++ b/meta/recipes-devtools/m4/m4/serial-tests-config.patch
@@ -12,19 +12,14 @@  Signed-off-by: Changqing Li <changqing.li@windriver.com>
  configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
-diff --git a/configure.ac b/configure.ac
-index 78b8788..931fa6f 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -22,7 +22,7 @@ AC_INIT([GNU M4], m4_esyscmd([build-aux/git-version-gen .tarball-version]),
+@@ -22,7 +22,7 @@ AC_INIT([GNU M4], m4_esyscmd([build-aux/
    [bug-m4@gnu.org])
  AC_CONFIG_AUX_DIR([build-aux])
  
--AM_INIT_AUTOMAKE([1.11.6 dist-bzip2 dist-xz color-tests parallel-tests
-+AM_INIT_AUTOMAKE([1.11.6 dist-bzip2 dist-xz color-tests serial-tests
+-AM_INIT_AUTOMAKE([1.14 dist-bzip2 dist-xz color-tests parallel-tests
++AM_INIT_AUTOMAKE([1.14 dist-bzip2 dist-xz color-tests serial-tests
  silent-rules subdir-objects gnu])
  AM_SILENT_RULES([yes]) # make --enable-silent-rules the default.
  
--- 
-2.7.4
-
diff --git a/meta/recipes-devtools/m4/m4_1.4.19.bb b/meta/recipes-devtools/m4/m4_1.4.20.bb
similarity index 100%
rename from meta/recipes-devtools/m4/m4_1.4.19.bb
rename to meta/recipes-devtools/m4/m4_1.4.20.bb