Hi,

> I have not found this patch in BTS neither did I found any MR for
> imlib2. [...]

Sorry, I did not send it as it was a quick & dirty test. I cleaned it up
and attached it to this message in case you choose to use it.

Kind regards,

Nicolas.
>From 7a2e0b73e1909e9c851ad13f4c131d20c55c7fba Mon Sep 17 00:00:00 2001
From: Nicolas Schodet <n...@ni.fr.eu.org>
Date: Thu, 24 Apr 2025 13:11:40 +0200
Subject: [PATCH] Fix dynamic loading using RTLD_LOCAL

Add patches/link-modules-with-libimlib2.patch. Use the configure script
--enable-rtld-local-support option to enable it.

Gbp-Dch: Full
Closes: #1102954
---
 .../patches/link-modules-with-libimlib2.patch | 245 ++++++++++++++++++
 debian/patches/series                         |   1 +
 debian/rules                                  |   2 +-
 3 files changed, 247 insertions(+), 1 deletion(-)
 create mode 100644 debian/patches/link-modules-with-libimlib2.patch

diff --git a/debian/patches/link-modules-with-libimlib2.patch b/debian/patches/link-modules-with-libimlib2.patch
new file mode 100644
index 0000000..43c7217
--- /dev/null
+++ b/debian/patches/link-modules-with-libimlib2.patch
@@ -0,0 +1,245 @@
+From: Kim Woelders <k...@woelders.dk>
+Subject: autofoo: Optionally link modules with libImlib2.la
+
+Needed on systems where libImlib2.so is loaded with RTLD_LOCAL.
+
+Origin: upstream, https://git.enlightenment.org/old/legacy-imlib2/commit/46d2faec1e72d78ce512f3eb2386b74b7c9ebcd2
+Applied-Upstream: 1.12.5
+Last-Update: 2025-03-21
+Bug: https://git.enlightenment.org/old/legacy-imlib2/issues/30
+Bug-Debian: https://bugs.debian.org/1102954
+---
+ configure.ac                    |  6 ++++
+ src/modules/filters/Makefile.am |  8 +++++-
+ src/modules/loaders/Makefile.am | 49 +++++++++++++++++++++------------
+ 3 files changed, 45 insertions(+), 18 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 234124d..5eca34c 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -276,6 +276,12 @@ AC_ARG_ENABLE([doc-build],
+ )
+ AM_CONDITIONAL(BUILD_DOC, test "$enable_doc_build" = "yes")
+ 
++# If libImlib2 is loaded with RTLD_LOCAL, modules must be linked with libimlib2
++AC_ARG_ENABLE([rtld-local-support],
++  [AS_HELP_STRING([--enable-rtld-local-support], [Link modules with libImlib2 @<:@default=no@:>@])]
++)
++AM_CONDITIONAL(ENABLE_RTLD_LOCAL_SUPPORT, test "$enable_rtld_local_support" = "yes")
++
+ EC_C_WARNINGS()
+ EC_C_VISIBILITY(yes)
+ EC_C_PACKING()
+diff --git a/src/modules/filters/Makefile.am b/src/modules/filters/Makefile.am
+index 90aa7a4..dbb9d08 100644
+--- a/src/modules/filters/Makefile.am
++++ b/src/modules/filters/Makefile.am
+@@ -6,16 +6,22 @@ pkg_LTLIBRARIES       = testfilter.la bumpmap.la colormod.la
+ 
+ EXTRA_DIST = filter_common.h
+ 
++if ENABLE_RTLD_LOCAL_SUPPORT
++LIBADD_EXTRA = $(top_builddir)/src/lib/libImlib2.la
++endif
++
+ testfilter_la_SOURCES = filter_test.c
+ testfilter_la_LDFLAGS = -module -avoid-version
++testfilter_la_LIBADD  = $(LIBADD_EXTRA)
+ testfilter_la_LIBTOOLFLAGS = --tag=disable-static
+ 
+ bumpmap_la_SOURCES    = filter_bumpmap.c
+ bumpmap_la_LDFLAGS    = -module -avoid-version
+-bumpmap_la_LIBADD     = -lm
++bumpmap_la_LIBADD     = $(LIBADD_EXTRA) -lm
+ bumpmap_la_LIBTOOLFLAGS = --tag=disable-static
+ 
+ colormod_la_SOURCES   = filter_colormod.c
+ colormod_la_LDFLAGS   = -module -avoid-version
++colormod_la_LIBADD    = $(LIBADD_EXTRA)
+ colormod_la_LIBTOOLFLAGS = --tag=disable-static
+ 
+diff --git a/src/modules/loaders/Makefile.am b/src/modules/loaders/Makefile.am
+index fa3fc53..d6cca35 100644
+--- a/src/modules/loaders/Makefile.am
++++ b/src/modules/loaders/Makefile.am
+@@ -74,147 +74,162 @@ endif
+  SRCS_EXIF = exif.c exif.h
+  SRCS_SAVE = ldrs_util.c ldrs_util.h
+ 
++if ENABLE_RTLD_LOCAL_SUPPORT
++LIBADD_EXTRA = $(top_builddir)/src/lib/libImlib2.la
++endif
++
+ ani_la_SOURCES       = loader_ani.c
+ ani_la_LDFLAGS       = -module -avoid-version
++ani_la_LIBADD        = $(LIBADD_EXTRA)
+ ani_la_LIBTOOLFLAGS  = --tag=disable-static
+ 
+ argb_la_SOURCES      = loader_argb.c
+ argb_la_LDFLAGS      = -module -avoid-version
++argb_la_LIBADD       = $(LIBADD_EXTRA)
+ argb_la_LIBTOOLFLAGS = --tag=disable-static
+ 
+ avif_la_SOURCES       = loader_avif.c $(SRCS_SAVE)
+ avif_la_CPPFLAGS      = $(AM_CPPFLAGS) $(AVIF_CFLAGS)
+ avif_la_LDFLAGS       = -module -avoid-version
+-avif_la_LIBADD        = $(AVIF_LIBS)
++avif_la_LIBADD        = $(AVIF_LIBS) $(LIBADD_EXTRA)
+ avif_la_LIBTOOLFLAGS  = --tag=disable-static
+ 
+ bmp_la_SOURCES       = loader_bmp.c
+ bmp_la_LDFLAGS       = -module -avoid-version
++bmp_la_LIBADD        = $(LIBADD_EXTRA)
+ bmp_la_LIBTOOLFLAGS  = --tag=disable-static
+ 
+ ff_la_SOURCES        = loader_ff.c
+ ff_la_LDFLAGS        = -module -avoid-version
++ff_la_LIBADD         = $(LIBADD_EXTRA)
+ ff_la_LIBTOOLFLAGS   = --tag=disable-static
+ 
+ gif_la_SOURCES       = loader_gif.c
+ gif_la_LDFLAGS       = -module -avoid-version
+-gif_la_LIBADD        = $(GIF_LIBS)
++gif_la_LIBADD        = $(GIF_LIBS) $(LIBADD_EXTRA)
+ gif_la_LIBTOOLFLAGS  = --tag=disable-static
+ 
+ heif_la_SOURCES      = loader_heif.c $(SRCS_SAVE)
+ heif_la_CPPFLAGS     = $(AM_CPPFLAGS) $(HEIF_CFLAGS)
+ heif_la_LDFLAGS      = -module -avoid-version
+-heif_la_LIBADD       = $(HEIF_LIBS)
++heif_la_LIBADD       = $(HEIF_LIBS) $(LIBADD_EXTRA)
+ heif_la_LIBTOOLFLAGS = --tag=disable-static
+ 
+ ico_la_SOURCES       = loader_ico.c
+ ico_la_LDFLAGS       = -module -avoid-version
++ico_la_LIBADD        = $(LIBADD_EXTRA)
+ ico_la_LIBTOOLFLAGS  = --tag=disable-static
+ 
+ jpeg_la_SOURCES      = loader_jpeg.c $(SRCS_EXIF) $(SRCS_SAVE)
+ jpeg_la_CPPFLAGS     = $(AM_CPPFLAGS) $(JPEG_CFLAGS)
+ jpeg_la_LDFLAGS      = -module -avoid-version
+-jpeg_la_LIBADD       = $(JPEG_LIBS)
++jpeg_la_LIBADD       = $(JPEG_LIBS) $(LIBADD_EXTRA)
+ jpeg_la_LIBTOOLFLAGS = --tag=disable-static
+ 
+ j2k_la_SOURCES       = loader_j2k.c
+ j2k_la_CPPFLAGS      = $(AM_CPPFLAGS) $(J2K_CFLAGS)
+ j2k_la_LDFLAGS       = -module -avoid-version
+-j2k_la_LIBADD        = $(J2K_LIBS)
++j2k_la_LIBADD        = $(J2K_LIBS) $(LIBADD_EXTRA)
+ j2k_la_LIBTOOLFLAGS  = --tag=disable-static
+ 
+ jxl_la_SOURCES       = loader_jxl.c $(SRCS_SAVE)
+ jxl_la_CPPFLAGS      = $(AM_CPPFLAGS) $(JXL_CFLAGS)
+ jxl_la_LDFLAGS       = -module -avoid-version
+-jxl_la_LIBADD        = $(JXL_LIBS)
++jxl_la_LIBADD        = $(JXL_LIBS) $(LIBADD_EXTRA)
+ jxl_la_LIBTOOLFLAGS  = --tag=disable-static
+ 
+ lbm_la_SOURCES       = loader_lbm.c
+ lbm_la_LDFLAGS       = -module -avoid-version
++lbm_la_LIBADD        = $(LIBADD_EXTRA)
+ lbm_la_LIBTOOLFLAGS  = --tag=disable-static
+ 
+ png_la_SOURCES       = loader_png.c $(SRCS_SAVE)
+ png_la_CPPFLAGS      = $(AM_CPPFLAGS) $(PNG_CFLAGS)
+ png_la_LDFLAGS       = -module -avoid-version
+-png_la_LIBADD        = $(PNG_LIBS)
++png_la_LIBADD        = $(PNG_LIBS) $(LIBADD_EXTRA)
+ png_la_LIBTOOLFLAGS  = --tag=disable-static
+ 
+ pnm_la_SOURCES       = loader_pnm.c
+ pnm_la_LDFLAGS       = -module -avoid-version
++pnm_la_LIBADD        = $(LIBADD_EXTRA)
+ pnm_la_LIBTOOLFLAGS  = --tag=disable-static
+ 
+ ps_la_SOURCES       = loader_ps.c
+ ps_la_CPPFLAGS      = $(AM_CPPFLAGS) $(PS_CFLAGS)
+ ps_la_LDFLAGS       = -module -avoid-version
+-ps_la_LIBADD        = $(PS_LIBS)
++ps_la_LIBADD        = $(PS_LIBS) $(LIBADD_EXTRA)
+ ps_la_LIBTOOLFLAGS  = --tag=disable-static
+ 
+ raw_la_SOURCES       = loader_raw.c
+ raw_la_CPPFLAGS      = $(AM_CPPFLAGS) $(RAW_CFLAGS)
+ raw_la_LDFLAGS       = -module -avoid-version
+-raw_la_LIBADD        = $(RAW_LIBS)
++raw_la_LIBADD        = $(RAW_LIBS) $(LIBADD_EXTRA)
+ raw_la_LIBTOOLFLAGS  = --tag=disable-static
+ 
+ qoi_la_SOURCES       = loader_qoi.c
+ qoi_la_LDFLAGS       = -module -avoid-version
++qoi_la_LIBADD        = $(LIBADD_EXTRA)
+ qoi_la_LIBTOOLFLAGS  = --tag=disable-static
+ 
+ svg_la_SOURCES       = loader_svg.c
+ svg_la_CPPFLAGS      = $(AM_CPPFLAGS) $(SVG_CFLAGS)
+ svg_la_LDFLAGS       = -module -avoid-version
+-svg_la_LIBADD        = $(SVG_LIBS)
++svg_la_LIBADD        = $(SVG_LIBS) $(LIBADD_EXTRA)
+ svg_la_LIBTOOLFLAGS  = --tag=disable-static
+ 
+ tga_la_SOURCES       = loader_tga.c
+ tga_la_LDFLAGS       = -module -avoid-version
++tga_la_LIBADD        = $(LIBADD_EXTRA)
+ tga_la_LIBTOOLFLAGS  = --tag=disable-static
+ 
+ tiff_la_SOURCES      = loader_tiff.c $(SRCS_SAVE)
+ tiff_la_CPPFLAGS     = $(AM_CPPFLAGS) $(TIFF_CFLAGS)
+ tiff_la_LDFLAGS      = -module -avoid-version
+-tiff_la_LIBADD       = $(TIFF_LIBS)
++tiff_la_LIBADD       = $(TIFF_LIBS) $(LIBADD_EXTRA)
+ tiff_la_LIBTOOLFLAGS = --tag=disable-static
+ 
+ webp_la_SOURCES      = loader_webp.c $(SRCS_SAVE)
+ webp_la_CPPFLAGS     = $(AM_CPPFLAGS) $(WEBP_CFLAGS)
+ webp_la_LDFLAGS      = -module -avoid-version
+-webp_la_LIBADD       = $(WEBP_LIBS)
++webp_la_LIBADD       = $(WEBP_LIBS) $(LIBADD_EXTRA)
+ webp_la_LIBTOOLFLAGS = --tag=disable-static
+ 
+ xbm_la_SOURCES       = loader_xbm.c
+ xbm_la_LDFLAGS       = -module -avoid-version
++xbm_la_LIBADD        = $(LIBADD_EXTRA)
+ xbm_la_LIBTOOLFLAGS  = --tag=disable-static
+ 
+ xpm_la_SOURCES       = loader_xpm.c
+ xpm_la_LDFLAGS       = -module -avoid-version
++xpm_la_LIBADD        = $(LIBADD_EXTRA)
+ xpm_la_LIBTOOLFLAGS  = --tag=disable-static
+ 
+ y4m_la_SOURCES       = loader_y4m.c
+ y4m_la_CPPFLAGS      = $(AM_CPPFLAGS) $(Y4M_CFLAGS)
+ y4m_la_LDFLAGS       = -module -avoid-version
+-y4m_la_LIBADD        = $(Y4M_LIBS)
++y4m_la_LIBADD        = $(Y4M_LIBS) $(LIBADD_EXTRA)
+ y4m_la_LIBTOOLFLAGS  = --tag=disable-static
+ 
+ bz2_la_SOURCES       = loader_bz2.c decompress_load.c compression.h
+ bz2_la_CPPFLAGS      = $(AM_CPPFLAGS) $(BZ2_CFLAGS)
+ bz2_la_LDFLAGS       = -module -avoid-version
+-bz2_la_LIBADD        = $(BZ2_LIBS)
++bz2_la_LIBADD        = $(BZ2_LIBS) $(LIBADD_EXTRA)
+ bz2_la_LIBTOOLFLAGS  = --tag=disable-static
+ 
+ lzma_la_SOURCES      = loader_lzma.c decompress_load.c compression.h
+ lzma_la_CPPFLAGS     = $(AM_CPPFLAGS) $(LZMA_CFLAGS)
+ lzma_la_LDFLAGS      = -module -avoid-version
+-lzma_la_LIBADD       = $(LZMA_LIBS)
++lzma_la_LIBADD       = $(LZMA_LIBS) $(LIBADD_EXTRA)
+ lzma_la_LIBTOOLFLAGS = --tag=disable-static
+ 
+ zlib_la_SOURCES      = loader_zlib.c decompress_load.c compression.h
+ zlib_la_CPPFLAGS     = $(AM_CPPFLAGS) $(ZLIB_CFLAGS)
+ zlib_la_LDFLAGS      = -module -avoid-version
+-zlib_la_LIBADD       = $(ZLIB_LIBS)
++zlib_la_LIBADD       = $(ZLIB_LIBS) $(LIBADD_EXTRA)
+ zlib_la_LIBTOOLFLAGS = --tag=disable-static
+ 
+ id3_la_SOURCES       = loader_id3.c
+ id3_la_CPPFLAGS      = $(AM_CPPFLAGS) $(ID3_CFLAGS)
+ id3_la_LDFLAGS       = -module -avoid-version
+-id3_la_LIBADD        = $(ID3_LIBS)
++id3_la_LIBADD        = $(ID3_LIBS) $(LIBADD_EXTRA)
+ id3_la_LIBTOOLFLAGS  = --tag=disable-static
diff --git a/debian/patches/series b/debian/patches/series
index 69edcce..c723e3f 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1 +1,2 @@
 remove-data-dir.patch
+link-modules-with-libimlib2.patch
diff --git a/debian/rules b/debian/rules
index c469e23..55a0daf 100755
--- a/debian/rules
+++ b/debian/rules
@@ -5,7 +5,7 @@ export DEB_BUILD_MAINT_OPTIONS = hardening=+all
 	dh $@
 
 override_dh_auto_configure:
-	dh_auto_configure -- --enable-mmx=no --disable-amd64
+	dh_auto_configure -- --enable-mmx=no --disable-amd64 --enable-rtld-local-support
 
 override_dh_auto_install:
 	dh_auto_install
-- 
2.39.5

Reply via email to