Re: [OE-core] [PATCH 1/3] m4: upgrade to 1.4.21

Robert Yang
2026-03-07T15:00:57Z

Hi Martin,

On 3/6/26 02:03, Martin Jansa via lists.openembedded.org wrote:
> From: Martin Jansa <martin.jansa@gmail.com>
>
> https://lists.gnu.org/archive/html/m4-announce/2026-02/msg00000.html
> This release is being made mainly to cater to recent glibc changes in
> light of the C23 language standard. However, it also includes fixes
> for some corner-case bugs in eval and when using the defn macro on
> builtins.
>
> Fixes m4-native builds on hosts with glibc-2.43 like:
> ./stdlib.h:827:20: error: expected identifier or '(' before '_Generic'
> ./string.h:777:20: error: expected identifier or '(' before '_Generic'
>
> Remove 0001-gettext-h-Avoid-gcc-Wformat-security-warnings-with-d.patch
> which is included in gnulib revision used by m4 since:
> https://gitweb.git.savannah.gnu.org/gitweb/?p=m4.git;a=commit;h=beee8d26382460010338c37f9dd9f823aa9f4ee8
>
> LIC_FILES_CHKSUM was updated for barem4.m4 and testbarem4.m4 from:
> https://gitweb.git.savannah.gnu.org/gitweb/?p=m4.git;a=blobdiff;f=examples/COPYING;h=e623b2b9394cbd1784a4964bbac105050296f33b;hp=7e73a1219b542fa035facc47cdb3dd81132e6373;hb=900a90f624cee4a8c1c02c4d6a61ef1ed26a17d1;hpb=c7b96d682958532c4eb2d5c2d81bb6ac342fd410
>
> Signed-off-by: Martin Jansa <martin.jansa@gmail.com>
> ---
> .../m4/{m4-1.4.20.inc => m4-1.4.21.inc} | 5 +-
> ...4-native_1.4.20.bb => m4-native_1.4.21.bb} | 0
> ...gcc-Wformat-security-warnings-with-d.patch | 133 ------------------
> .../m4/{m4_1.4.20.bb => m4_1.4.21.bb} | 0
> 4 files changed, 2 insertions(+), 136 deletions(-)
> rename meta/recipes-devtools/m4/{m4-1.4.20.inc => m4-1.4.21.inc} (90%)
> rename meta/recipes-devtools/m4/{m4-native_1.4.20.bb => m4-native_1.4.21.bb} (100%)
> delete mode 100644 meta/recipes-devtools/m4/m4/0001-gettext-h-Avoid-gcc-Wformat-security-warnings-with-d.patch
> rename meta/recipes-devtools/m4/{m4_1.4.20.bb => m4_1.4.21.bb} (100%)
>
> diff --git a/meta/recipes-devtools/m4/m4-1.4.20.inc b/meta/recipes-devtools/m4/m4-1.4.21.inc
> similarity index 90%
> rename from meta/recipes-devtools/m4/m4-1.4.20.inc
> rename to meta/recipes-devtools/m4/m4-1.4.21.inc
> index 5c4ba09288..ce9fe2be8e 100644
> --- a/meta/recipes-devtools/m4/m4-1.4.20.inc
> +++ b/meta/recipes-devtools/m4/m4-1.4.21.inc
> @@ -7,19 +7,18 @@ 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://0001-gettext-h-Avoid-gcc-Wformat-security-warnings-with-d.patch \
> "
> SRC_URI:append:class-target = " file://run-ptest \
> file://0001-test-c32ispunct-Check-for-musl-along-with-glibc.patch \
> file://serial-tests-config.patch \
> "
>
> -SRC_URI[sha256sum] = "6ac4fc31ce440debe63987c2ebbf9d7b6634e67a7c3279257dc7361de8bdb3ef"
> +SRC_URI[sha256sum] = "38ae59f7a30bf9c108193cc5c25fbb06014f21e230c7ede2eff614f7b7c37ed8"
>
> LICENSE = "GPL-3.0-only"
>
> LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464\
> - file://examples/COPYING;md5=4031593b2166d6c47cae282d944a7ede"
> + file://examples/COPYING;md5=005f2e201a0526c1d1d79dd6303ecf23"

There are new license in the example files barem4.m4 and testbarem4.m4, it just
says "This program is distributed under a Creative Commons Share-alike license",
but not version is specified, I guess we should use CC-BY-SA-4.0.

// Robert

>
> EXTRA_OECONF += "--without-libsigsegv-prefix"
>
> diff --git a/meta/recipes-devtools/m4/m4-native_1.4.20.bb b/meta/recipes-devtools/m4/m4-native_1.4.21.bb
> similarity index 100%
> rename from meta/recipes-devtools/m4/m4-native_1.4.20.bb
> rename to meta/recipes-devtools/m4/m4-native_1.4.21.bb
> diff --git a/meta/recipes-devtools/m4/m4/0001-gettext-h-Avoid-gcc-Wformat-security-warnings-with-d.patch b/meta/recipes-devtools/m4/m4/0001-gettext-h-Avoid-gcc-Wformat-security-warnings-with-d.patch
> deleted file mode 100644
> index 6fad05041f..0000000000
> --- a/meta/recipes-devtools/m4/m4/0001-gettext-h-Avoid-gcc-Wformat-security-warnings-with-d.patch
> +++ /dev/null
> @@ -1,133 +0,0 @@
> -From c4dc0ab4424fca31635b7837b1c180f7d3df8ede Mon Sep 17 00:00:00 2001
> -From: Bruno Haible <bruno@clisp.org>
> -Date: Wed, 28 May 2025 15:14:07 +0200
> -Subject: [PATCH] gettext-h: Avoid gcc -Wformat-security warnings with
> - --disable-nls.
> -MIME-Version: 1.0
> -Content-Type: text/plain; charset=UTF-8
> -Content-Transfer-Encoding: 8bit
> -
> -Reported by Holger Hoffstätte <holger@applied-asynchrony.com> in
> -<https://lists.gnu.org/archive/html/bug-gnulib/2025-05/msg00225.html>.
> -
> -* lib/gettext.h (gettext, dgettext, dcgettext): With gcc in C mode,
> -define these as inline functions.
> -* lib/sigpipe-die.c (sigpipe_die): Use translated string as a format
> -string, relying on the format string checking done by 'msgfmt -c'.
> -* lib/xmemcoll.c (collate_error): Revert commit from 2025-01-17.
> -* lib/xprintf.c (xvprintf, xvfprintf): Likewise.
> -* lib/openat-die.c (openat_save_fail, openat_restore_fail): Revert
> -commit from 2024-12-10.
> -
> -Upstream-Status: Backport [https://cgit.git.savannah.gnu.org/cgit/gnulib.git/commit/?id=6e5015dd557b20ae4a0829c4bf78480ce2f4cb04]
> -Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
> ----
> - lib/gettext.h | 49 ++++++++++++++++++++++++++++++++++++------------
> - lib/openat-die.c | 4 ++--
> - lib/xprintf.c | 4 ++--
> - 3 files changed, 41 insertions(+), 16 deletions(-)
> -
> -diff --git a/lib/gettext.h b/lib/gettext.h
> -index ea0c27e..bb3d975 100644
> ---- a/lib/gettext.h
> -+++ b/lib/gettext.h
> -@@ -59,18 +59,43 @@
> - # endif
> - # endif
> -
> --/* Disabled NLS.
> -- The casts to 'const char *' serve the purpose of producing warnings
> -- for invalid uses of the value returned from these functions.
> -- On pre-ANSI systems without 'const', the config.h file is supposed to
> -- contain "#define const". */
> --# undef gettext
> --# define gettext(Msgid) ((const char *) (Msgid))
> --# undef dgettext
> --# define dgettext(Domainname, Msgid) ((void) (Domainname), gettext (Msgid))
> --# undef dcgettext
> --# define dcgettext(Domainname, Msgid, Category) \
> -- ((void) (Category), dgettext (Domainname, Msgid))
> -+/* Disabled NLS. */
> -+# if defined __GNUC__ && !defined __clang__ && !defined __cplusplus
> -+/* Use inline functions, to avoid warnings
> -+ warning: format not a string literal and no format arguments
> -+ that don't occur with enabled NLS. */
> -+__attribute__ ((__always_inline__, __gnu_inline__)) extern inline
> -+const char *
> -+gettext (const char *msgid)
> -+{
> -+ return msgid;
> -+}
> -+__attribute__ ((__always_inline__, __gnu_inline__)) extern inline
> -+const char *
> -+dgettext (const char *domain, const char *msgid)
> -+{
> -+ (void) domain;
> -+ return msgid;
> -+}
> -+__attribute__ ((__always_inline__, __gnu_inline__)) extern inline
> -+const char *
> -+dcgettext (const char *domain, const char *msgid, int category)
> -+{
> -+ (void) domain;
> -+ (void) category;
> -+ return msgid;
> -+}
> -+# else
> -+/* The casts to 'const char *' serve the purpose of producing warnings
> -+ for invalid uses of the value returned from these functions. */
> -+# undef gettext
> -+# define gettext(Msgid) ((const char *) (Msgid))
> -+# undef dgettext
> -+# define dgettext(Domainname, Msgid) ((void) (Domainname), gettext (Msgid))
> -+# undef dcgettext
> -+# define dcgettext(Domainname, Msgid, Category) \
> -+ ((void) (Category), dgettext (Domainname, Msgid))
> -+# endif
> - # undef ngettext
> - # define ngettext(Msgid1, Msgid2, N) \
> - ((N) == 1 \
> -diff --git a/lib/openat-die.c b/lib/openat-die.c
> -index 3fbb5d8..79a5b23 100644
> ---- a/lib/openat-die.c
> -+++ b/lib/openat-die.c
> -@@ -34,7 +34,7 @@ _Noreturn void
> - openat_save_fail (int errnum)
> - {
> - #ifndef GNULIB_LIBPOSIX
> -- error (exit_failure, errnum, "%s",
> -+ error (exit_failure, errnum,
> - _("unable to record current working directory"));
> - #endif
> - /* _Noreturn cannot be applied to error, since it returns
> -@@ -53,7 +53,7 @@ _Noreturn void
> - openat_restore_fail (int errnum)
> - {
> - #ifndef GNULIB_LIBPOSIX
> -- error (exit_failure, errnum, "%s",
> -+ error (exit_failure, errnum,
> - _("failed to return to initial working directory"));
> - #endif
> -
> -diff --git a/lib/xprintf.c b/lib/xprintf.c
> -index 4d9a3e5..790af53 100644
> ---- a/lib/xprintf.c
> -+++ b/lib/xprintf.c
> -@@ -45,7 +45,7 @@ xvprintf (char const *restrict format, va_list args)
> - {
> - off64_t retval = vzprintf (format, args);
> - if (retval < 0 && ! ferror (stdout))
> -- error (exit_failure, errno, "%s", _("cannot perform formatted output"));
> -+ error (exit_failure, errno, _("cannot perform formatted output"));
> -
> - return retval;
> - }
> -@@ -67,7 +67,7 @@ xvfprintf (FILE *restrict stream, char const *restrict format, va_list args)
> - {
> - off64_t retval = vfzprintf (stream, format, args);
> - if (retval < 0 && ! ferror (stream))
> -- error (exit_failure, errno, "%s", _("cannot perform formatted output"));
> -+ error (exit_failure, errno, _("cannot perform formatted output"));
> -
> - return retval;
> - }
> diff --git a/meta/recipes-devtools/m4/m4_1.4.20.bb b/meta/recipes-devtools/m4/m4_1.4.21.bb
> similarity index 100%
> rename from meta/recipes-devtools/m4/m4_1.4.20.bb
> rename to meta/recipes-devtools/m4/m4_1.4.21.bb
>
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#232503): https://lists.openembedded.org/g/openembedded-core/message/232503
> Mute This Topic: https://lists.openembedded.org/mt/118156597/7304958
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [liezhi.yang@eng.windriver.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>