#1115395 libgctp: Fix SONAME filename handling

Package:
libgctp
Source:
libgctp
Submitter:
Michael Biebl
Date:
2025-12-10 11:33:03 UTC
Severity:
normal
Tags:
#1115395#5
Date:
2025-09-16 13:49:22 UTC
From:
To:
Hi Guillem,

for some back story please see
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1111805#49

In https://salsa.debian.org/glibc-team/glibc/-/commit/5e3aa111654e9aad080881fb98f9e5b01b277857
(currently only available via Debian experimental),
the duplicated paths for /lib were removed from ld.so.conf files.

This triggered a build failure for ncl, hdf-eos5 and ruby-hdfeos5.

All those packages link against libgctp and the build failures look
similar:


hdf-eos5:

dpkg-shlibdeps: error: no dependency information found for /usr/lib/x86_64-linux-gnu/libgctp-2.0.0.so (used by debian/libhe5-hdfeos0t64/usr/lib/x86_64-linux-gnu/libhe5_hdfeos.so.0.0.0)
dpkg-shlibdeps: hint: check if the library actually comes from a package
dh_shlibdeps: error: dpkg-shlibdeps -Tdebian/libhe5-hdfeos0t64.substvars debian/libhe5-hdfeos0t64/usr/lib/x86_64-linux-gnu/libhe5_hdfeos.so.0.0.0 returned exit code 1

ncl:

dpkg-shlibdeps: error: no dependency information found for /usr/lib/x86_64-linux-gnu/libgctp-2.0.0.so (used by debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGncl.so.1)
dpkg-shlibdeps: hint: check if the library actually comes from a package
dh_shlibdeps: error: dpkg-shlibdeps -Tdebian/libncarg0t64.substvars debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGgksPS.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGmisc2.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGllu.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGras.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGcgm.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGff.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGgksPDF.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGgksX.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libfftpack5_dp.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGnfpfort.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGgksCTXT.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGlluC.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGmp.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGmisc.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGgks.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGhlu.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGncl.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGctrans.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGmath.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGc.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGnfp.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGcn.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGictrans.so.1 returned exit code 1
dh_shlibdeps: error: Aborting due to earlier error
make: *** [debian/rules:14: binary] Error 25


ruby-hdfeos5:

dpkg-shlibdeps: error: no dependency information found for /usr/lib/x86_64-linux-gnu/libgctp-2.0.0.so (used by debian/ruby-hdfeos5/usr/lib/x86_64-linux-gnu/ruby/vendor_ruby/3.3.0/numru/hdfeos5raw.so)
dpkg-shlibdeps: hint: check if the library actually comes from a package
dh_shlibdeps: error: dpkg-shlibdeps -Tdebian/ruby-hdfeos5.substvars debian/ruby-hdfeos5/usr/lib/x86_64-linux-gnu/ruby/vendor_ruby/3.3.0/numru/hdfeos5raw.so returned exit code 1
dh_shlibdeps: error: Aborting due to earlier error
make: *** [debian/rules:18: binary] Error 25



If you want to reproduce the problem, remove the line
/lib/x86_64-linux-gnu
in /etc/ld.so.conf.d/x86_64-linux-gnu.conf and try to build one of those
packages in debian sid or trixie.

It is unclear to me, if this is a problem in libgctp, dpkg-shlibdeps or
the affected packages themselves. I decided to file it against
dpkg(-shlibdeps) as it is the command failing.
I chose severity important (as it makes packages FTBFS) and it probably
should be bumped to RC once glibc with that change is uploaded to
unstable.

The setup of libgctp is a bit special as detailed in
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1111805#69

As Aurelien pointed out, while special it should still be covered
according to the dpkg-shlibdeps documentation but maybe it is hitting
less tested code paths.

Would very much appreciate your input on this matter.

Michael

#1115395#12
Date:
2025-09-16 14:28:10 UTC
From:
To:
The problem can be reproduced in Debian sid, with no ld.so.conf
modifications. (Or I botched my testing?)

It looks to me like this breakage comes from the recent
libgctp upload. I've not looked into what that might be though, but
otherwise I'll reassign to that package later today.

Thanks,
Guillem

#1115395#17
Date:
2025-09-16 14:57:25 UTC
From:
To:
Am 16.09.25 um 16:28 schrieb Guillem Jover:

I can't repoduce the failure with with no ld.so.conf modifications.

#1115395#22
Date:
2025-09-16 21:19:58 UTC
From:
To:
Am 16.09.25 um 16:28 schrieb Guillem Jover:

I can not confirm that.
I can successfully build e.g. hdf-eos5 in a a Debian sid chroot.
Only after removing /lib from ld.so.conf.d I'm able to trigger the
dpkg-shlibdeps error.

Attached are two straces:

- strace_success.txt, with /lib/x86_64-linux-gnu in
/etc/ld.so.conf.d/x86_64-linux-gnu.conf
- strace_failure.txt without the /lib line

Notice how in strace_failure.txt dpkg-shlibdeps tries to open
/var/lib/dpkg/info/libgctp-dev.shlibs, whereas in strace_success.txt it
is /var/lib/dpkg/info/libgctp-2.0.0:amd64.shlibs

#1115395#27
Date:
2025-09-16 21:23:46 UTC
From:
To:
- with /lib

- without /lib

#1115395#32
Date:
2025-09-16 21:46:25 UTC
From:
To:
Control: reassign -1 libgctp
Control: tag -1 patch
Control: retitle -1 libgctp: Fix SONAME filename handling

This can be reproduced on a system with a merged-/usr with selective
filename aliasing (instead of global directory aliasing).

The problem is that merged-/usr with directory aliasing has been
shadowing this problem, which is a packaging issue in libgctp. The
non-dev package should be containing the shared library named as its
SONAME, which is what dpkg-shlibdeps expects, to be able to map from
the SONAME to the package that contains the shlibs file.

This has worked on merged-/usr systems with directory aliasing (and
/lib in the ld.so default path) because dpkg-shlibdeps was able to
find the file on the filesystem but no match on its db, which
resulted in triggering a fallback to canonicalize the filename and
overwrite the filename to package mapping which then leads it to the
package containing the shlibs file (libgctp-2.0.0 vs libgctp-dev).

On systems where there is no searching or presence of SONAME via /lib,
then dpkg-shlibdeps does not trigger the canonicalization and instead
finds the mapping to the -dev package, which contains no shlibs file,
and that fails the build.

The attached patch should fix the issue (at least it does for me).
Reassigning to libgctp.

Thanks,
Guillem

#1115395#45
Date:
2025-09-16 21:57:23 UTC
From:
To:
Hi Guillem

Am 16.09.25 um 23:46 schrieb Guillem Jover:

Thanks a lot for the detailed explanation (and the patch)!


Looping in Aurelien as well so he is aware that there is now a fix for
this issue and should not block this glibc change being uploaded to
unstable.

Michael

#1115395#50
Date:
2025-09-16 22:23:08 UTC
From:
To:
Hi,

Thanks a lot for the investigation and the patch.

Aurelien

#1115395#55
Date:
2025-09-17 20:09:34 UTC
From:
To:
As this resulted in broken shlibs dependencies, I'm bumping the severity
to RC. This might even be something you might want to fix via a stable
upload as the packages depending on libgctp are currently broken in stable.

Michael

#1115395#62
Date:
2025-09-17 21:04:27 UTC
From:
To:
Just for clarification just in case (given that the wording seems
to imply something else), the packages are breaking dpkg-shlibdeps
assumptions in how they are shipping the shared library and its
symlinks, the shlibs file it provides should be fine by itself (and
the patch should not be changing its contents).

For stable I'd assume that given a default Debian system with
merged-/usr via directory aliasing and with /lib in ld.so.conf,
there should be no breakage, even though the package is still
broken (but should in theory not trigger breakage in dpkg-shlibdeps
there). So while I think fixing it there would make sense to me,
it should not be needed to solve any FTBFS.

Thanks,
Guillem

#1115395#67
Date:
2025-09-17 21:10:55 UTC
From:
To:
Am 17.09.25 um 23:04 schrieb Guillem Jover:

The point is, packages in stable have a dependency on libgctp-2.0.0
while libgctp-2.0.0.so is actually provided by libgctp-dev.

So installing rdeps of libgctp-2.0.0 results in a broken setup.

#1115395#72
Date:
2025-09-17 21:18:39 UTC
From:
To:
Ah, I see what you mean. Although that should also be shadowed by
ldconfig generating the missing SONAME symlinked to to real library
filename when installing libgctp-2.0.0. So the SONAME symlink will
be unowned (in dpkg terms), but dpkg will overwrite it when installing
libgctp-dev. So while this is also broken, it should not cause
visible breakage either (I think).

Thanks,
Guillem

#1115395#79
Date:
2025-12-09 14:13:07 UTC
From:
To:
control: severity -1 serious

Hello, I tried a rebuild of ncl and now it fails to build

dpkg-shlibdeps: warning: symbol cpux_ used by debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGmisc2.so.1 found in none of the libraries
dpkg-shlibdeps: warning: symbol mskrv2_ used by debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGmisc2.so.1 found in none of the libraries
dpkg-shlibdeps: warning: symbol wtstr_ used by debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGmisc2.so.1 found in none of the libraries
dpkg-shlibdeps: warning: symbol gqclip_ used by debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGmisc2.so.1 found in none of the libraries
dpkg-shlibdeps: warning: 19 other similar warnings have been skipped (use -v to see them all)
dpkg-shlibdeps: error: no dependency information found for /usr/lib/x86_64-linux-gnu/libgctp-2.0.0.so (used by debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGncl.so.1)
dpkg-shlibdeps: hint: check if the library actually comes from a package
dh_shlibdeps: error: dpkg-shlibdeps -Tdebian/libncarg0t64.substvars debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libfftpack5_dp.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGgksCTXT.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGctrans.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGgksPDF.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGgksX.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGnfpfort.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGras.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGmisc2.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGlluC.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGgks.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGgksPS.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGllu.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGcgm.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGc.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGnfp.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGcn.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGmp.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGhlu.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGmisc.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGff.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGncl.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGictrans.so.1 debian/libncarg0t64/usr/lib/x86_64-linux-gnu/libNGmath.so.1 returned exit code 1
dh_shlibdeps: error: Aborting due to earlier error
make: *** [debian/rules:14: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
I: copying local configuration
E: Failed autobuilding of package
I: unmounting dev/ptmx filesystem
I: unmounting dev/pts filesystem


https://tests.reproducible-builds.org/debian/rbuild/unstable/amd64/ncl_6.6.2.dfsg.1-12.rbuild.log.gz

G.

#1115395#86
Date:
2025-12-10 11:08:52 UTC
From:
To:
We believe that the bug you reported is fixed in the latest version of
libgctp, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 1115395@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Alastair McKinstry <mckinstry@debian.org> (supplier of updated libgctp package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@ftp-master.debian.org)
Format: 1.8
Date: Wed, 10 Dec 2025 10:39:47 +0000
Source: libgctp
Architecture: source
Version: 2.0.0-13
Distribution: unstable
Urgency: medium
Maintainer: Debian Science Maintainers <debian-science-maintainers@lists.alioth.debian.org>
Changed-By: Alastair McKinstry <mckinstry@debian.org>
Closes: 1115395
Changes:
 libgctp (2.0.0-13) unstable; urgency=medium
 .
   * Fix from Guillem Jover for SONAME filename handling. Closes: #1115395
Checksums-Sha1:
 9905a96ed8a900090f42f5d01d8720f253e04b89 2028 libgctp_2.0.0-13.dsc
 8d443826dfde301ac9258cd0f0585e6d663af2e5 5776 libgctp_2.0.0-13.debian.tar.xz
Checksums-Sha256:
 626dd9982583ef8a8e3cc9e38ad5a912cc137f8f3d630e604fc6278c3ae66770 2028 libgctp_2.0.0-13.dsc
 96ee0b70832bd6fa7e937228dd3b9f81838919466c3519f1f399fdbf7180d4f1 5776 libgctp_2.0.0-13.debian.tar.xz
Files:
 5d61b095633c0803213bf733c933ff19 2028 utils optional libgctp_2.0.0-13.dsc
 a17d185269d44896f1899a03e7117bad 5776 utils optional libgctp_2.0.0-13.debian.tar.xz
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEgjg86RZbNHx4cIGiy+a7Tl2a06UFAmk5TjUACgkQy+a7Tl2a
06VosQ/9GrU+zdfHXt0cVfE72oRtomIgFr7cKbC05Z4Gtr1kw9ak1UqJvVnNipsO
D80Db4VtBMw1tcj1F0I10SYVmOGtHRAZb7BHHXI9oB/Hz669d7AYmQ+hkBHyiRTP
rHYX2xeTpVsOn/NjyscQeyRvoYxpOdFw1WAztbfozFRT63FEOhN9ibOj2TV8E4t+
SzlzhtRRpoi1aUAAkTdu5c7yowrHLVe5Gq0NUZhS0C/TYd6v5345Cr6W5EVqmOqn
66TopbpX6Sc3ZqvN7fnAlns7dmPF6TtqROgisOEEle0/uX6PHdt2Fq+uzRMGXLw9
odI2q2Xj/4a91FQgPFJ1PGaJ2WZ9eF4aR7TG0b0qqf2OtzcA8BzmhCI0nMY79zqg
W4qG4iRFsTSJBPFGEe0ys4IwACN3JEQscquqHO6xeo6tfUKQqSFKyztcNdlLJHRq
KsUbDfU6P2lumPb5de6V2U98dn8xgCAWsYG8RSBTi8K1ln77jD/h5bFrZm1fjNi1
cQMAxO6AI82trU80plkDLMZI+sYrwQ3gnHBqR1o2BXUuFV7tjhMuCrJswt6bUYKy
4FIVPDlZKly/ctXuu+szf5WC6Vnvf+qn9C7F6x7y0vL4QRGVt3rMJsfkDGJY61SI
acpKbDYMC9F/Yje2OcRP2Quh2xailLuUstGm6f3V228BXUTatrk=
=U+CX
-----END PGP SIGNATURE-----

#1115395#91
Date:
2025-12-10 11:32:21 UTC
From:
To:
Yeah, forgot to bump the severity after the change landed in unstable
(which I said I would)

https://tracker.debian.org/news/1695954/accepted-glibc-242-5-source-into-unstable/

Thanks for noticing and bumping it.

And thanks Alastair for the upload.


Michael