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