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

Reply via email to