compat.vulkan-runtime 2026.09.06: declare the payloads the farm substitutes - #350
Merged
Merged
Conversation
…substitutes Until this version the substitution pass took a payload only when some earlier, unrelated install had already placed it in the store. The same package therefore produced a farm of twenty payload libraries on a developer machine and a farm of one in a fresh subos, and the report read "no installed payload provides this soname" for sonames this index does publish. Measured 2026-09-05: 30 host entries in a fresh subos against 8 on a machine that happened to have the stack installed. The payload set is now declared as xpm.linux.deps.runtime, at platform level because a per-version deps table parses and is then not applied. PAYLOAD_PACKAGES maps each soname to the package declared for it and is the reader that keeps the two lists honest: a soname it maps whose package is absent is reported as a declaration that did not take effect rather than silently farmed from the host. xim:icu and xim:libedit are deliberately absent. Their sonames (78, 0) differ from the ones a host Mesa built against Ubuntu 24.04 asks for (libicuuc.so.74, libedit.so.2), and a different soname is a different ABI. xim:libllvm and xim:libxml2 are absent for the reason the symbol test already records: their payloads are 12215 and 195 symbols short of the host copies. Both adapters gain an ELF machine guard. nm reads a foreign object without complaint and reports a covering symbol set, so the symbol test alone would substitute an x86_64 payload into an aarch64 farm, which is the store every aarch64 machine has today. The Vulkan adapter also gains the aarch64 multiarch directories, whose absence made its farm empty on a Debian-family aarch64 machine. Measured on this host with the new version: 24 substitutions against 20, seven host entries against eleven, and a Vulkan probe still enumerating two devices.
An unreadable ELF header -- a dangling farm link, a file the reader cannot open -- is not evidence of a foreign machine. Reporting it as one would put a wrong reason in the record; the symbol test then rejects it for the reason that applies.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this changes
compat.vulkan-runtimegains version 2026.09.06, whose payload set is declared rather than discovered.Until this version the substitution pass took a payload only when some earlier, unrelated install had already placed it in the store. The same package therefore produced a farm of twenty payload libraries on a developer machine and a farm of one in a fresh subos, and the report read
no installed payload provides this sonamefor sonames this index does publish. Measured 2026-09-05 in a fresh subos: 30 host entries, against 8 on the machine that happened to have the stack installed.The declaration and its reader
The payload set is now
xpm.linux.deps.runtime, at platform level because a per-versiondepstable parses and is then not applied (compat.glx-runtimerecords that measurement).PAYLOAD_PACKAGESmaps each soname to the package declared for it, and is the reader that keeps the two lists honest: a soname it maps whose package is absent is reported as a declaration that did not take effect, rather than silently farmed from the host.xim:icuandxim:libeditare deliberately absent: their sonames (78, 0) differ from the ones a host Mesa built against Ubuntu 24.04 asks for (libicuuc.so.74,libedit.so.2), and a different soname is a different ABI.xim:libllvmandxim:libxml2are absent for the reason the symbol test already records, being 12215 and 195 symbols short of the host copies.The machine guard
Both runtime adapters gain an ELF machine guard.
nmreads a foreign object without complaint and reports a covering symbol set, so the symbol test alone would substitute an x86_64 payload into an aarch64 farm, which is the store every aarch64 machine has today, since every Linux payload in this index publishes one x86_64 artifact. The Vulkan adapter also gains the aarch64 multiarch directories, whose absence made its farm empty on a Debian-family aarch64 machine.Measured
On this host with the new version, against a project-local index:
The remaining seven are
libdrm_amdgpu,libLLVM,libtinfoandlibxml2(symbol-test gaps, recorded with counts), andlibedit,libicuuc,libicudata(different soname, different ABI). A Vulkan probe built against the new version still enumerates two devices, andcompat.vulkanmoves its pin to the new runtime version in the same change.