Source: xz-utils
Version: 5.8.2-2
Tags: patch
User: [email protected]
Usertags: rebootstrap

Hi,

thanks for taking care of precise symbols for xz-utils. Unfortunately,
this breaks bootstrapping musl-linux-any. Can musl be exempted here?

xz-utils uses symbol versioning, which is good. Unfortunately, musl (and
other non-glibc C libraries) does not provide the infrastructure for
symbol versioning in its dynamic linker. It is a feature that cannot be
used with musl. This completely breaks package upgrades the way Debian
does, but we can still build packages for a musl system from scratch and
assemble an OS image from there. Then image-based upgrades can work.

In any case, the xz-utils symbols do not reflect what xz-utils actually
provides on musl (and other non-glibc) architectures. I argue strict
symbol checking does not make sense there. The current musl bootstrap
simply exports DPKG_GENSYMBOLS_CHECK_LEVEL=0 and acknowledges that
package upgrades do not work. The code in xz-utils breaks this opt-out.

How abot matching linux+glibc here? I think that would be practically
good enough for what you wanted. Patch attached.

Helmut
diff -Nru xz-utils-5.8.2/debian/changelog xz-utils-5.8.2/debian/changelog
--- xz-utils-5.8.2/debian/changelog     2026-01-16 08:13:14.000000000 +0100
+++ xz-utils-5.8.2/debian/changelog     2026-01-23 19:16:37.000000000 +0100
@@ -1,3 +1,10 @@
+xz-utils (5.8.2-2.1) UNRELEASED; urgency=medium
+
+  * Non-maintainer upload.
+  * Relax strict symbol checking on non-glibc. (Closes: #-1)
+
+ -- Helmut Grohne <[email protected]>  Fri, 23 Jan 2026 19:16:37 +0100
+
 xz-utils (5.8.2-2) unstable; urgency=medium
 
   * Configure gbp.conf correctly following DEP-14 and using pristine-tar
diff -Nru xz-utils-5.8.2/debian/rules xz-utils-5.8.2/debian/rules
--- xz-utils-5.8.2/debian/rules 2026-01-15 23:38:34.000000000 +0100
+++ xz-utils-5.8.2/debian/rules 2026-01-23 19:16:36.000000000 +0100
@@ -1,10 +1,12 @@
 #!/usr/bin/make -f
 export DEB_BUILD_MAINT_OPTIONS = hardening=+all
 
-# Only do a strict symbol checking on Linux
+include /usr/share/dpkg/architecture.mk
+
+# Only do a strict symbol checking on Linux with glibc
 # https://manpages.debian.org/testing/dpkg-dev/dpkg-gensymbols.1.en.html
 # Level 4: Fails if some libraries have been introduced.
-ifneq (,$(filter linux,$(DEB_HOST_ARCH_OS)))
+ifeq (linux-gnu,$(DEB_HOST_ARCH_OS)-$(DEB_HOST_ARCH_LIBC))
     export DPKG_GENSYMBOLS_CHECK_LEVEL = 4
 endif
 

Reply via email to