void-linux / void-linux/void-packages

xbps-src: shlib-provides for real -32bit subpackages broken

Open
#45,927 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug xbps-src
Dominant language
Shell
Stars
3.4k
Forks
2.8k
Avg merge
2d 5h
Merged PRs (30d)
299

Description

Since #45504 the nvidia package is broken, the nvidia package is special in that it builds -32bit packages as part of the x86_64 package and not the usual -32bit multilib method using i686.

What happens is that two packages will provide the same shlib, once the 64bit and once for 32bit. Resulting in the shlib-requires on that version breaking because it finds two the soname in two files.

=> nvidia-535.98_1: running pre-pkg hook: 04-generate-runtime-deps ...
   SONAME: libpthread.so.0 <-> glibc>=2.36_1
   SONAME: librt.so.1 <-> glibc>=2.36_1
   SONAME: libdl.so.2 <-> glibc>=2.36_1
   SONAME: libc.so.6 <-> glibc>=2.36_1
   SONAME: libm.so.6 <-> glibc>=2.36_1
   SONAME: libX11.so.6 <-> libX11>=1.2_1
   SONAME: libXext.so.6 <-> libXext>=1.0.5_1
   SONAME: libnvidia-ml.so.1 <-> nvidia-libs-32bit.soname
nvidia-libs-535.98_1
   SONAME: libgcc_s.so.1 <-> libgcc>=4.4.0_1
   SONAME: ld-linux-x86-64.so.2 <-> glibc>=2.36_1

I have a workaround for it, but the pattern matching is really dirty and I think there is probably a better solution.
https://gist.github.com/Duncaen/dbc27bead074d4629b1802c8b2fd910c

I'm also not sure if it it could happen that a soname appears in multiple subpackages for other reasons, might be worth to detect and that and error out instead.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with xbps-src and the 04-generate-runtime-deps pre-pkg hook, then compare the reported nvidia 64-bit and 32-bit SONAME handling with the workaround in the linked gist. Reproduce the duplicate SONAME case and define completion as correct shlib-provides and shlib-requires generation without breaking ordinary multilib packages.

Written by the indexing model from the issue text.

Assessment

Tech stack
shell
Domain
build-system
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.