glib2: update libintl handling
authorSebastian Kemper <sebastian_ml@gmx.net>
Mon, 6 Jun 2022 08:07:08 +0000 (10:07 +0200)
committerRosen Penev <rosenp@gmail.com>
Mon, 6 Jun 2022 13:02:14 +0000 (06:02 -0700)
glib2's meson.build runs check cc.has_function('ngettext', args :
osx_ldflags) and, if successful, it never looks for non-libc libintl.
For musl and glibc this test is always successful.

glib2 unconditionally sets ENABLE_NLS, so during compile <libintl.h>
gets included always. But then we have a disconnect when the OpenWrt pkg
is being built with BUILD_NLS=y, because the <libintl.h> will be from
libintl-full but glib2 will not link to libintl-full.

With BUILD_NLS=n there's no problem, because the <libintl.h> will be
from libc.

In lieu of proper libintl detection in glib2's meson build, removing the
SED call from the Makefile together with the added patch sorts this out.
The SED call can be removed because when we force libintl-full use, the
meson build will put the necessary linker flag into the pkg-config file
itself.

Alpine Linux does something similar (see [1]), but they always force
the use of the external libintl. I assume they always go for full NLS
support.

[1] https://git.alpinelinux.org/aports/tree/main/glib/musl-libintl.patch

Signed-off-by: Sebastian Kemper <sebastian_ml@gmx.net>
libs/glib2/Makefile
libs/glib2/patches/007-openwrt-libintl.patch [new file with mode: 0644]

index 292ac09b063ebc0c686eae39d7ffe328d33f702b..8abd87ea1d53525ac007436876fac7b288c55dd4 100644 (file)
@@ -98,10 +98,6 @@ define Build/InstallDev
                $(1)/usr/lib/
 
        $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
-ifneq ($(INTL_FULL),)
-       $(SED) '/^Libs:/s/$$$$/ -lintl/' \
-               $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/glib-2.0.pc
-endif
        $(INSTALL_DATA) \
                $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/*.pc \
                $(1)/usr/lib/pkgconfig
diff --git a/libs/glib2/patches/007-openwrt-libintl.patch b/libs/glib2/patches/007-openwrt-libintl.patch
new file mode 100644 (file)
index 0000000..8441e63
--- /dev/null
@@ -0,0 +1,15 @@
+--- a/meson.build
++++ b/meson.build
+@@ -2045,8 +2045,11 @@ endif
+ # proxy-libintl subproject.
+ # FIXME: glib-gettext.m4 has much more checks to detect broken/uncompatible
+ # implementations. This could be extended if issues are found in some platforms.
++#
++# 007-openwrt-libintl.patch: with BUILD_NLS=y use libintl-full, else use libc
++#
+ libintl_deps = []
+-if cc.has_function('ngettext', args : osx_ldflags)
++if get_option('nls').disabled() and cc.has_function('ngettext', args : osx_ldflags)
+   have_bind_textdomain_codeset = cc.has_function('bind_textdomain_codeset')
+ else
+   # First just find the bare library.