]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
gettext, gettext-minimal-native: upgrade 0.23.1 -> 0.26
authorGyorgy Sarvari <skandigraun@gmail.com>
Sun, 7 Sep 2025 19:20:10 +0000 (21:20 +0200)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Mon, 8 Sep 2025 17:02:37 +0000 (18:02 +0100)
Changelog:
0.24: https://lists.gnu.org/archive/html/info-gnu/2025-02/msg00010.html
0.25: https://lists.gnu.org/archive/html/info-gnu/2025-05/msg00000.html
0.26: https://lists.gnu.org/archive/html/info-gnu/2025-07/msg00007.html

- gettext-minimal-native recipe adapted to the new macro name (aclocal_DATA -> macros_DATA)
- install Makevars.template to gettext-minimal-native to be able to update missing variables
  The file is renamed in the desitanion to Makevars.template.minimal, to avoid clashing
  with the full gettext package (some recipes have both as dependency).
- autotools.bbclass: search for all po folders, and update the Makefile.in.in file
  in each of them. This is required, because without this the old Makefile.in.in
  files in these non ${S}/po folders are not updated with the new version of gettext, and
  the compilation routinely fails due to this.
  As part of the same change, also concatenate the source's Makevars files with the gettext
  Makevars.template: this allows all variables to be defined, even the new ones that the
  source didn't contain originally. First set the gettext template, and then append
  the source's original Makevars to it, so it should override the variables that it was
  setting originally, and keep the new variables at their default value.
- Add new PACKAGECONFIG to use libselinux, and also fix libselinux discovery in autotools
  (use pkg-config instead of autotools discovery, because autotools' library search doesn't
  respect custom sysroot)

Ptest results:

=======================
All 626 tests passed
(40 tests were not run)
=======================
DURATION: 36
END: /usr/lib/gettext/ptest
2025-08-30T17:49
STOP: ptest-runner
TOTAL: 1 FAIL: 0

With the previous version:
All 545 tests passed
(34 tests were not run)

Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/classes-recipe/autotools.bbclass
meta/recipes-core/gettext/gettext-minimal-native_0.26.bb [moved from meta/recipes-core/gettext/gettext-minimal-native_0.23.1.bb with 87% similarity]
meta/recipes-core/gettext/gettext-sources.inc
meta/recipes-core/gettext/gettext/0001-tests-autopoint-3-unset-MAKEFLAGS.patch
meta/recipes-core/gettext/gettext/serial-tests-config.patch
meta/recipes-core/gettext/gettext/use-pkgconfig.patch
meta/recipes-core/gettext/gettext_0.26.bb [moved from meta/recipes-core/gettext/gettext_0.23.1.bb with 94% similarity]

index 948f8c183a7b4175984959d84e0755671452031b..bd477dc60f08db18c57379d1a37afe0eb7bca029 100644 (file)
@@ -186,13 +186,34 @@ autotools_do_configure() {
                                echo "no" | glib-gettextize --force --copy
                        fi
                elif [ "${BPN}" != "gettext" ] && grep -q "^[[:space:]]*AM_GNU_GETTEXT" $CONFIGURE_AC; then
-                       # We'd call gettextize here if it wasn't so broken...
+                       # Gettextize could be called here, however it doesn't make the job much easier:
+                       # It doesn't discover relevant po folders on its own, so they still need to be
+                       # found by some heurestics. Also, it would require always the full gettext
+                       # package always, instead of gettext-minimal-native.
                        cp ${STAGING_DATADIR_NATIVE}/gettext/config.rpath ${AUTOTOOLS_AUXDIR}/
-                       if [ -d ${S}/po/ ]; then
-                               cp -f ${STAGING_DATADIR_NATIVE}/gettext/po/Makefile.in.in ${S}/po/
-                               if [ ! -e ${S}/po/remove-potcdate.sed ]; then
-                                       cp ${STAGING_DATADIR_NATIVE}/gettext/po/remove-potcdate.sed ${S}/po/
+                       if [ -d ${S}/po ]; then
+                               # Copy the latest Makefile.in.in to the /po folder, regardless if it exists or not
+                               # If it exists, then also look for identical Makefile.in.in files, and update them too
+                               makefiles_to_update="./po/Makefile.in.in"
+                               if [ -f ${S}/po/Makefile.in.in ]; then
+                                       # search for all Makefile.in.in files that are identical to ./po/Makefile.in.in, by md5sum
+                                       base_makefile_hash=`md5sum ${S}/po/Makefile.in.in | tr -s ' ' | cut -f1 -d' '`
+                                       makefiles_to_update=`find ${S} -name Makefile.in.in -exec md5sum {} \+ | grep $base_makefile_hash | tr -s ' ' | cut -d' ' -f2`
                                fi
+                               bbnote List of Makefile.in.ins to update: $makefiles_to_update
+                               for makefile in ${makefiles_to_update}; do
+                                       makefile_dir=$(dirname $makefile)
+                                       bbnote Executing: cp ${STAGING_DATADIR_NATIVE}/gettext/po/Makefile.in.in ${makefile_dir}/
+                                       cp ${STAGING_DATADIR_NATIVE}/gettext/po/Makefile.in.in ${makefile_dir}/
+                                       if [ ! -e ${makefile_dir}/remove-potcdate.sed ]; then
+                                               cp ${STAGING_DATADIR_NATIVE}/gettext/po/remove-potcdate.sed ${makefile_dir}/
+                                       fi
+                               done
+                               for makevars in `find ${S} -name Makevars`; do
+                                       bbnote Concatenating Makevars: $makevars
+                                       cat ${STAGING_DATADIR_NATIVE}/gettext/po/Makevars.template.minimal ${makevars} >> ${makevars}.yocto_temp
+                                       mv ${makevars}.yocto_temp ${makevars}
+                               done
                        fi
                        PRUNE_M4="$PRUNE_M4 gettext.m4 iconv.m4 lib-ld.m4 lib-link.m4 lib-prefix.m4 nls.m4 po.m4 progtest.m4"
                fi
similarity index 87%
rename from meta/recipes-core/gettext/gettext-minimal-native_0.23.1.bb
rename to meta/recipes-core/gettext/gettext-minimal-native_0.26.bb
index 941896ec48d512faf64ea27b5d71456e10d59dc9..b5c32d0786a80c0e7454aaea753a04ef98ffa5dd 100644 (file)
@@ -24,7 +24,7 @@ python get_aclocal_files() {
     with open(fpath) as f:
         content = f.read()
         for l in content.replace("\\\n","").split("\n"):
-            if l.startswith("aclocal_DATA"):
+            if l.startswith("macros_DATA"):
                 aclocal_files = l.split("=")[1]
                 with open(oe.path.join(d.getVar("WORKDIR"),"aclocal-files"),'w') as outf:
                     outf.write(aclocal_files)
@@ -43,4 +43,6 @@ do_install () {
        cp ${S}/build-aux/config.rpath ${D}${datadir}/gettext/
        cp ${S}/gettext-runtime/po/Makefile.in.in ${D}${datadir}/gettext/po/
        cp ${S}/gettext-runtime/po/remove-potcdate.sed ${D}${datadir}/gettext/po/
+       # The gettext recipe also installs the same Makevars.template at the same place, rename it
+       cp ${S}/gettext-tools/po/Makevars.template ${D}${datadir}/gettext/po/Makevars.template.minimal
 }
index 5d90d81b58db0d9ef9a05a6f5bd27551a33a3dd5..2ddf47334df6b359466379f1680836fb308e2a5a 100644 (file)
@@ -1,4 +1,3 @@
 HOMEPAGE = "http://www.gnu.org/software/gettext/gettext.html"
-SRC_URI = "${GNU_MIRROR}/gettext/gettext-${PV}.tar.gz \
-           "
-SRC_URI[sha256sum] = "52a578960fe308742367d75cd1dff8552c5797bd0beba7639e12bdcda28c0e49"
+SRC_URI = "${GNU_MIRROR}/gettext/gettext-${PV}.tar.gz"
+SRC_URI[sha256sum] = "39acf4b0371e9b110b60005562aace5b3631fed9b1bb9ecccfc7f56e58bb1d7f"
index a8f6684bd7019a903fe5c81f33470d352646ebe9..f14d8df689dca5f90e9dfd68e3027182bf37ea99 100644 (file)
@@ -16,10 +16,10 @@ diff --git a/gettext-tools/tests/autopoint-3 b/gettext-tools/tests/autopoint-3
 index af2e17f..46cf3f7 100755
 --- a/gettext-tools/tests/autopoint-3
 +++ b/gettext-tools/tests/autopoint-3
-@@ -137,6 +137,7 @@ ${CONFIG_SHELL} ./configure >/dev/null 2>autopoint.err
- test $? = 0 || { cat autopoint.err; Exit 1; }
- : ${MAKE=make}
+@@ -149,6 +149,7 @@
+     *) MAKE=make ;;
+   esac
+ fi
 +unset MAKEFLAGS
  ${MAKE} >/dev/null 2>autopoint.err
  test $? = 0 || { cat autopoint.err; Exit 1; }
index 3baf5497952d1e691cfcd639d8a65eee74b34658..88bd33951acf5603beb004604b8966ad87baf86b 100644 (file)
@@ -18,23 +18,23 @@ diff --git a/configure.ac b/configure.ac
 index 5106676..3114998 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -22,7 +22,7 @@ AC_INIT([gettext],
-       [bug-gettext@gnu.org])
- AC_CONFIG_SRCDIR([gettext-tools/src/msgfmt.c])
AC_CONFIG_AUX_DIR([build-aux])
+@@ -23,7 +23,7 @@ AC_CONFIG_AUX_DIR([build-aux])
+ VERSION_NUMBER=`cd $srcdir \
+                 && build-aux/git-version-gen .tarball-version`
gl_INIT_PACKAGE_VERSION([$VERSION_NUMBER])
 -AM_INIT_AUTOMAKE([1.13 silent-rules parallel-tests tar-ustar])
 +AM_INIT_AUTOMAKE([1.13 silent-rules serial-tests tar-ustar])
  
- dnl Override automake's tar command used for creating distributions.
- am__tar='${AMTAR} chf - --format=ustar --owner=root --group=root "$$tardir"'
+ dnl Override automake's tar command used for creating distributions:
+ dnl - Sort the files by basename, not by dirname, to achieve higher compression
 diff --git a/gettext-runtime/configure.ac b/gettext-runtime/configure.ac
 index e128f5b..9f7447c 100644
 --- a/gettext-runtime/configure.ac
 +++ b/gettext-runtime/configure.ac
-@@ -22,7 +22,7 @@ AC_INIT([gettext-runtime],
-       [bug-gettext@gnu.org])
- AC_CONFIG_SRCDIR([intl/dcigettext.c])
AC_CONFIG_AUX_DIR([../build-aux])
+@@ -23,7 +23,7 @@ AC_CONFIG_AUX_DIR([../build-aux])
+ VERSION_NUMBER=`cd $srcdir/.. \
+                 && build-aux/git-version-gen .tarball-version`
gl_INIT_PACKAGE_VERSION([$VERSION_NUMBER])
 -AM_INIT_AUTOMAKE([1.11.1 silent-rules parallel-tests])
 +AM_INIT_AUTOMAKE([1.11.1 silent-rules serial-tests])
  AC_CONFIG_HEADERS([config.h])
@@ -44,10 +44,10 @@ diff --git a/gettext-tools/configure.ac b/gettext-tools/configure.ac
 index 3b1f461..14510a9 100644
 --- a/gettext-tools/configure.ac
 +++ b/gettext-tools/configure.ac
-@@ -22,7 +22,7 @@ AC_INIT([gettext-tools],
-       [bug-gettext@gnu.org])
- AC_CONFIG_SRCDIR([src/msgfmt.c])
AC_CONFIG_AUX_DIR([../build-aux])
+@@ -23,7 +23,7 @@ AC_CONFIG_AUX_DIR([../build-aux])
+ VERSION_NUMBER=`cd $srcdir/.. \
+                 && build-aux/git-version-gen .tarball-version`
gl_INIT_PACKAGE_VERSION([$VERSION_NUMBER])
 -AM_INIT_AUTOMAKE([1.11.1 silent-rules parallel-tests])
 +AM_INIT_AUTOMAKE([1.11.1 silent-rules serial-tests])
  AC_CONFIG_HEADERS([config.h])
index 9774c4cce006ffc1828cc861d81fc860a8736c9b..2b9fef1e9497a4696e329e771511b362e5c12a1b 100644 (file)
@@ -12,6 +12,11 @@ Simply delete all the crazy, and replace with a single call to pkg-config.
 
 Upstream-Status: Inappropriate [upstream still refuse to consider pkg-config]
 Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+Added also selinux discovery.
+
+Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
+
 ---
  gettext-tools/gnulib-m4/libxml.m4       | 105 ++---------------------
  libtextstyle/gnulib-local/m4/libglib.m4 | 106 +++---------------------
@@ -389,3 +394,37 @@ index baa2cf4..b287c5b 100644
    AC_SUBST([LIBGLIB])
    AC_SUBST([LTLIBGLIB])
    AC_SUBST([INCGLIB])
+
+diff --git a/gettext-tools/gnulib-m4/selinux-selinux-h.m4 b/gettext-tools/gnulib-m4/selinux-selinux-h.m4
+index e2613fa..2a733a7 100644
+--- a/gettext-tools/gnulib-m4/selinux-selinux-h.m4
++++ b/gettext-tools/gnulib-m4/selinux-selinux-h.m4
+@@ -71,6 +71,7 @@ AC_DEFUN([gl_LIBSELINUX],
+ [
+   AC_REQUIRE([AC_CANONICAL_HOST])
+   AC_REQUIRE([AC_CANONICAL_BUILD])
++  AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+   AC_ARG_WITH([selinux],
+     AS_HELP_STRING([[--without-selinux]], [do not use SELinux, even on systems with SELinux]),
+@@ -79,19 +80,8 @@ AC_DEFUN([gl_LIBSELINUX],
+   LIB_SELINUX=
+   if test "$with_selinux" != no; then
+     gl_saved_LIBS=$LIBS
+-    AC_SEARCH_LIBS([setfilecon], [selinux],
+-                   [test "$ac_cv_search_setfilecon" = "none required" ||
+-                    LIB_SELINUX=$ac_cv_search_setfilecon])
++    PKG_CHECK_MODULES([SELINUX], [libselinux], [LIB_SELINUX=$SELINUX_LIBS])
+     LIBS=$gl_saved_LIBS
+   fi
+   AC_SUBST([LIB_SELINUX])
+-
+-  # Warn if SELinux is found but libselinux is absent;
+-  if test "$ac_cv_search_setfilecon" = no; then
+-    if test "$host" = "$build" && test -d /selinux; then
+-      AC_MSG_WARN([This system supports SELinux but libselinux is missing.])
+-      AC_MSG_WARN([AC_PACKAGE_NAME will be compiled without SELinux support.])
+-    fi
+-    with_selinux=no
+-  fi
+ ])
similarity index 94%
rename from meta/recipes-core/gettext/gettext_0.23.1.bb
rename to meta/recipes-core/gettext/gettext_0.26.bb
index 509438c2a7a7766a564ac20116a0eed4668b2aff..b99b301af48bc696180a8252b10d38b508b12864 100644 (file)
@@ -37,7 +37,6 @@ EXTRA_OECONF += "--without-lispdir \
                  --disable-java \
                  --disable-native-java \
                  --disable-openmp \
-                 --disable-acl \
                  --without-emacs \
                  --without-cvs \
                  --without-git \
@@ -56,7 +55,7 @@ EXTRA_OECONF:append:libc-musl = "\
                  --enable-threads=posix \
                  gt_cv_func_printf_posix=yes \
 "
-PACKAGECONFIG ??= "glib libxml"
+PACKAGECONFIG ??= "glib libxml ${@bb.utils.filter('DISTRO_FEATURES', 'selinux', d)}"
 PACKAGECONFIG:class-native = ""
 PACKAGECONFIG:class-nativesdk = ""
 
@@ -66,6 +65,7 @@ PACKAGECONFIG[libxml] = "--without-included-libxml,--with-included-libxml,libxml
 # or problems if $libdir isn't $prefix/lib.
 PACKAGECONFIG[libunistring] = "--with-libunistring-prefix=${STAGING_LIBDIR}/..,--with-included-libunistring,libunistring"
 PACKAGECONFIG[msgcat-curses] = "--with-libncurses-prefix=${STAGING_LIBDIR}/..,--disable-curses,ncurses,"
+PACKAGECONFIG[selinux] = "--with-selinux,--without-selinux --disable-acl,attr libselinux"
 
 do_install:append:libc-musl () {
        rm -f ${D}${libdir}/charset.alias
@@ -94,7 +94,8 @@ FILES:${PN} += "${libdir}/${BPN}/"
 # The its/Makefile.am has defined:
 # itsdir = $(pkgdatadir)$(PACKAGE_SUFFIX)/its
 # not itsdir = $(pkgdatadir), so use wildcard to match the version.
-FILES:${PN} += "${datadir}/${BPN}-*/*"
+FILES:${PN} += "${datadir}/${BPN}-*/* \
+                ${datadir}/${BPN}/m4/*"
 
 FILES:gettext-runtime = "${bindir}/gettext \
                          ${bindir}/ngettext \
@@ -175,7 +176,9 @@ do_install_ptest() {
         find ${D}${PTEST_PATH}/ -name "*.o" -exec rm {} \;
         chmod 0755 ${D}${PTEST_PATH}/tests/lang-vala ${D}${PTEST_PATH}/tests/plural-1 ${D}${PTEST_PATH}/tests/xgettext-tcl-4 \
                    ${D}${PTEST_PATH}/tests/xgettext-vala-1  ${D}${PTEST_PATH}/tests/xgettext-po-2 ${D}${PTEST_PATH}/tests/xgettext-vala-6 \
-                   ${D}${PTEST_PATH}/tests/plural-3 ${D}${PTEST_PATH}/tests/plural-4 ${D}${PTEST_PATH}/tests/xgettext-java-8 ${D}${PTEST_PATH}/tests/xgettext-java-9
+                   ${D}${PTEST_PATH}/tests/plural-3 ${D}${PTEST_PATH}/tests/plural-4 ${D}${PTEST_PATH}/tests/xgettext-java-8 ${D}${PTEST_PATH}/tests/xgettext-java-9 \
+                   ${D}${PTEST_PATH}/tests/msgfmt-21 ${D}${PTEST_PATH}/tests/format-modula2-1 ${D}${PTEST_PATH}/tests/format-modula2-2 \
+                   ${D}${PTEST_PATH}/tests/lang-go ${D}${PTEST_PATH}/tests/lang-ruby ${D}${PTEST_PATH}/tests/lang-modula2 ${D}${PTEST_PATH}/tests/lang-d
         sed -i -e 's|${DEBUG_PREFIX_MAP}||g' ${D}${PTEST_PATH}/tests/init-env
 }