Source: gettext Followup-For: Bug #984748 Control: tags -1 + patch Dear Maintainer,
I havve done a few patches for improving the situation. Patch 2 may be reported upstream.
From de101b8978f1612ea77d2a28d00fd3437158a95a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastien=20Roucari=C3=A8s?= <[email protected]> Date: Sat, 25 Feb 2023 16:15:07 +0000 Subject: [PATCH 1/3] Fix #984748 by moving LD_PRELOAD preloadable_libintl.so to own package Move the preloadable_libintl.so and fix a MA bug --- debian/changelog | 7 +++++++ debian/control | 15 ++++++++++++++- debian/gettext.install | 1 - debian/gettext.lintian-overrides | 14 +------------- debian/libpreloadable-libintl.install | 1 + debian/libpreloadable-libintl.lintian-overrides | 7 +++++++ 6 files changed, 30 insertions(+), 15 deletions(-) create mode 100644 debian/libpreloadable-libintl.install create mode 100644 debian/libpreloadable-libintl.lintian-overrides diff --git a/debian/changelog b/debian/changelog index 687c010..ae94864 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +gettext (0.21-12) unstable; urgency=medium + + * Bug fix: "gettext is wrongly marked Multi-Arch: foreign", thanks to + Helmut Grohne (Closes: #984748). + + -- Bastien Roucariès <[email protected]> Sat, 25 Feb 2023 16:14:51 +0000 + gettext (0.21-11) unstable; urgency=medium * Use a common debian/watch file which is valid for most GNU packages. diff --git a/debian/control b/debian/control index dfb7d4b..1a6c557 100644 --- a/debian/control +++ b/debian/control @@ -31,7 +31,8 @@ Description: GNU Internationalization utilities for the base system Package: gettext Architecture: any Multi-Arch: foreign -Depends: gettext-base, ${misc:Depends}, ${shlibs:Depends} +Depends: gettext-base, ${misc:Depends}, ${shlibs:Depends}, + libpreloadable-libintl Recommends: curl | wget | lynx Breaks: autopoint (<= 0.17-11) Suggests: autopoint, gettext-doc, libasprintf-dev, libgettextpo-dev @@ -39,6 +40,18 @@ Description: GNU Internationalization utilities Interesting for authors or maintainers of other packages or programs which they want to see internationalized. +Package: libpreloadable-libintl +Architecture: any +Multi-Arch: same +Depends: gettext-base, ${misc:Depends}, ${shlibs:Depends} +Breaks: gettext (<< 0.21-12~) +Replaces: gettext (<< 0.21-12~) +Description: GNU Internationalization utilities -- preloadable_libintl + Interesting for authors or maintainers of other packages or programs + which they want to see internationalized. + . + LD_PRELOAD mechanism for prioritizing messages to translate. + Package: gettext-el Section: editors Architecture: all diff --git a/debian/gettext.install b/debian/gettext.install index 6552383..f104901 100755 --- a/debian/gettext.install +++ b/debian/gettext.install @@ -25,7 +25,6 @@ usr/lib/*/gettext/urlget usr/lib/*/gettext/user-email usr/lib/*/libgettextlib-*.so usr/lib/*/libgettextsrc-*.so -usr/lib/*/preloadable_libintl.so usr/share/aclocal/*.m4 usr/share/locale/*/*/gettext-tools.mo diff --git a/debian/gettext.lintian-overrides b/debian/gettext.lintian-overrides index 6673dc5..cf6876d 100644 --- a/debian/gettext.lintian-overrides +++ b/debian/gettext.lintian-overrides @@ -1,19 +1,7 @@ # -# This is not a development library in the usual sense, but a module to be -# LD_PRELOADed. Usage is explained in section "Prioritizing messages". -# -gettext: lacks-versioned-link-to-shared-library usr/lib/*/libgnuintl.so.8 usr/lib/*/preloadable_libintl.so libgnuintl.so.8 -gettext: shared-library-is-multi-arch-foreign usr/lib/*/preloadable_libintl.so -gettext: no-symbols-control-file usr/lib/*/preloadable_libintl.so -# -# Likely a false positive; the build does use hardening flags at all stages -# when compiling this module. -# -gettext: hardening-no-fortify-functions [usr/lib/*/preloadable_libintl.so] -# # Not for use by other packages. # -gettext: package-name-doesnt-match-sonames libgettextlib-0.21 libgettextsrc-0.21 libgnuintl8 +gettext: package-name-doesnt-match-sonames libgettextlib-0.21 libgettextsrc-0.21 gettext: no-symbols-control-file usr/lib/*/libgettextsrc-0.21.so # # These files are not really documentation, and must be in their current locations diff --git a/debian/libpreloadable-libintl.install b/debian/libpreloadable-libintl.install new file mode 100644 index 0000000..0d94e27 --- /dev/null +++ b/debian/libpreloadable-libintl.install @@ -0,0 +1 @@ +usr/lib/*/preloadable_libintl.so* diff --git a/debian/libpreloadable-libintl.lintian-overrides b/debian/libpreloadable-libintl.lintian-overrides new file mode 100644 index 0000000..e95a731 --- /dev/null +++ b/debian/libpreloadable-libintl.lintian-overrides @@ -0,0 +1,7 @@ +# +# This is not a development library in the usual sense, but a module to be +# LD_PRELOADed. Usage is explained in section "Prioritizing messages". +# +libpreloadable-libintl: lacks-versioned-link-to-shared-library usr/lib/*/libgnuintl.so.8 [usr/lib/*/preloadable_libintl.so] +libpreloadable-libintl: package-name-doesnt-match-sonames libgnuintl8 +libpreloadable-libintl: no-symbols-control-file usr/lib/*/preloadable_libintl.so -- 2.39.1
From c0ce5f625e1bc3152d585d29ad5d41f6f0e939a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastien=20Roucari=C3=A8s?= <[email protected]> Date: Sat, 25 Feb 2023 20:39:29 +0000 Subject: [PATCH 2/3] Add true libgnuintl package Avoid a few problems of maintenance and lintian warnings --- debian/control | 2 +- ...le-libintl.install => libgnuintl8.install} | 1 + .../libpreloadable-libintl.lintian-overrides | 7 ------ debian/not-installed | 4 ++++ .../08-use-std-name-for-preload-lib.patch | 23 +++++++++++++++++++ debian/patches/series | 1 + 6 files changed, 30 insertions(+), 8 deletions(-) rename debian/{libpreloadable-libintl.install => libgnuintl8.install} (57%) delete mode 100644 debian/libpreloadable-libintl.lintian-overrides create mode 100644 debian/patches/08-use-std-name-for-preload-lib.patch diff --git a/debian/control b/debian/control index 1a6c557..1728a93 100644 --- a/debian/control +++ b/debian/control @@ -40,7 +40,7 @@ Description: GNU Internationalization utilities Interesting for authors or maintainers of other packages or programs which they want to see internationalized. -Package: libpreloadable-libintl +Package: libgnuintl8 Architecture: any Multi-Arch: same Depends: gettext-base, ${misc:Depends}, ${shlibs:Depends} diff --git a/debian/libpreloadable-libintl.install b/debian/libgnuintl8.install similarity index 57% rename from debian/libpreloadable-libintl.install rename to debian/libgnuintl8.install index 0d94e27..4029085 100644 --- a/debian/libpreloadable-libintl.install +++ b/debian/libgnuintl8.install @@ -1 +1,2 @@ usr/lib/*/preloadable_libintl.so* +usr/lib/*/libgnuintl.so.* \ No newline at end of file diff --git a/debian/libpreloadable-libintl.lintian-overrides b/debian/libpreloadable-libintl.lintian-overrides deleted file mode 100644 index e95a731..0000000 --- a/debian/libpreloadable-libintl.lintian-overrides +++ /dev/null @@ -1,7 +0,0 @@ -# -# This is not a development library in the usual sense, but a module to be -# LD_PRELOADed. Usage is explained in section "Prioritizing messages". -# -libpreloadable-libintl: lacks-versioned-link-to-shared-library usr/lib/*/libgnuintl.so.8 [usr/lib/*/preloadable_libintl.so] -libpreloadable-libintl: package-name-doesnt-match-sonames libgnuintl8 -libpreloadable-libintl: no-symbols-control-file usr/lib/*/preloadable_libintl.so diff --git a/debian/not-installed b/debian/not-installed index 4af71e1..2768dce 100755 --- a/debian/not-installed +++ b/debian/not-installed @@ -8,6 +8,10 @@ usr/lib/*/*.so # libgettextlib is internal use only usr/lib/*/libgettextlib.a +# preload use only +usr/lib/*/libgnuintl.a +usr/lib/*/libgnuintl.so + # .elc files will be regenerated at install time usr/share/emacs/site-lisp/*.elc diff --git a/debian/patches/08-use-std-name-for-preload-lib.patch b/debian/patches/08-use-std-name-for-preload-lib.patch new file mode 100644 index 0000000..7fdccaa --- /dev/null +++ b/debian/patches/08-use-std-name-for-preload-lib.patch @@ -0,0 +1,23 @@ +subject: Use standard name for preload preloadable_libintl +author: Bastien Roucariès <[email protected]> + +Preloadable_libintl is in fact libgnuintl. + +Use the true libname and carry a symlink for matching doc + + +Index: gettext-0.21/gettext-tools/intl/Makefile.am +=================================================================== +--- gettext-0.21.orig/gettext-tools/intl/Makefile.am ++++ gettext-0.21/gettext-tools/intl/Makefile.am +@@ -554,9 +554,7 @@ install-exec-preloadable: libgnuintl.la + $(LIBTOOL) --mode=install \ + $(INSTALL_DATA) libgnuintl.la $(DESTDIR)$(libdir)/libgnuintl.la + rm -f $(DESTDIR)$(libdir)/preloadable_libintl.so +- $(INSTALL_DATA) $(DESTDIR)$(libdir)/libgnuintl.so $(DESTDIR)$(libdir)/preloadable_libintl.so +- $(LIBTOOL) --mode=uninstall \ +- rm -f $(DESTDIR)$(libdir)/libgnuintl.la ++ ln -s libgnuintl.so.8 $(DESTDIR)$(libdir)/preloadable_libintl.so + + installdirs-local: installdirs-preloadable + installdirs-preloadable: diff --git a/debian/patches/series b/debian/patches/series index f021528..02ab883 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -5,3 +5,4 @@ 05-update-after-gnulib-changed.patch 06-remove-unportable-tests.patch 07-java-17-support.patch +08-use-std-name-for-preload-lib.patch -- 2.39.1
>From 8bd42c6a33069f7b751388159d2573054aff5c9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastien=20Roucari=C3=A8s?= <[email protected]> Date: Sat, 25 Feb 2023 22:11:49 +0000 Subject: [PATCH 3/3] Add libintl-java package Needed for crossbuild --- debian/control | 22 +++++++++++++++++-- .../{gettext-base.poms => libintl-java.poms} | 0 debian/rules | 3 ++- 3 files changed, 22 insertions(+), 3 deletions(-) rename debian/{gettext-base.poms => libintl-java.poms} (100%) diff --git a/debian/control b/debian/control index 1728a93..9ef9e08 100644 --- a/debian/control +++ b/debian/control @@ -12,9 +12,9 @@ Build-Depends: bison, help2man, libunistring-dev, libxml2-dev, - maven-repo-helper [!hppa !hurd-i386 !kfreebsd-any] <!nojava>, xz-utils -Build-Depends-Indep: dh-sequence-elpa +Build-Depends-Indep: dh-sequence-elpa, + maven-repo-helper [!hppa !hurd-i386 !kfreebsd-any] <!nojava>, Homepage: https://www.gnu.org/software/gettext/ Rules-Requires-Root: no @@ -24,6 +24,7 @@ Priority: standard Architecture: any Multi-Arch: foreign Depends: ${misc:Depends}, ${shlibs:Depends} +Recommends: libintl-java Description: GNU Internationalization utilities for the base system This package includes the gettext and ngettext programs which allow other packages to internationalize the messages given by shell scripts. @@ -125,3 +126,20 @@ Breaks: gettext (<< 0.18.1.1-10) Replaces: gettext (<< 0.18.1.1-10) Description: use fprintf and friends in C++ - static libraries and headers This package contains development files for the libasprintf library. + +Package: libintl-java +Section: java +Architecture: all +Multi-Arch: foreign +Build-Profiles: <!nojava> +Depends: ${maven:Depends}, ${misc:Depends} +Suggests: ${maven:OptionalDepends} +Breaks: gettext (<< 0.21-12~) +Replaces: gettext (<< 0.21-12~) +Description: GNU Internationalization utilities -- java library + This package includes the gettext library for java. + . + Gettext support is needed for + for authors or maintainers of other packages or programs + which they want to see internationalized. + . \ No newline at end of file diff --git a/debian/gettext-base.poms b/debian/libintl-java.poms similarity index 100% rename from debian/gettext-base.poms rename to debian/libintl-java.poms diff --git a/debian/rules b/debian/rules index 7d70b08..4df7709 100755 --- a/debian/rules +++ b/debian/rules @@ -45,7 +45,8 @@ MAKE_OPTIONS += USEJAVA=0 override_dh_auto_build: dh_auto_build -- $(MAKE_OPTIONS) - +execute_after_dh_install-indep: + mh_install # # We package gettext-el using dh_elpa, but upstream doesn't provide # ELPA package metadata so we have to give it some hints. -- 2.39.1

