void-linux / void-linux/void-packages
xbps-src: shlib-provides for real -32bit subpackages broken
Nobody has claimed this yet.
- 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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