Skip to content

chore(xpkg): 0.0.57 - #202

Merged
Sunrisepeak merged 1 commit into
mainfrom
bump/xpkg-0.0.57
Aug 10, 2026
Merged

chore(xpkg): 0.0.57#202
Sunrisepeak merged 1 commit into
mainfrom
bump/xpkg-0.0.57

Conversation

@Sunrisepeak

Copy link
Copy Markdown
Member

elfpatch 现在给可执行文件打 DT_RPATH 而不是 DT_RUNPATH。

DT_RUNPATH 只对携带它的对象生效;DT_RPATH 对进程内任意深度的 dlopen 都生效。图形栈的加载链有三到四层 dlopen,只有传递性标签能到底 —— 实测:同样的路径内容,DT_RPATH 让 GLX/EGL/GLESv2/无显示 surfaceless EGL 全部到 GPU,DT_RUNPATH 则是 llvmpipe。

只改可执行文件。 在库上强制 DT_RPATH 是实测有害的(xim-pkgindex#593),传递性向下也成立。

三个平台段全部补齐,用解析验证而非看 diff:

linux    0.0.57=yes  sha=7b24c2f156ce  versions=18
macosx   0.0.57=yes  sha=7b24c2f156ce  versions=18
windows  0.0.57=yes  sha=7b24c2f156ce  versions=18

CN 镜像已上传并按大小校验(gitcode 对不存在的资源返回 200 + HTML 落地页,状态码不是证据):147212 bytes,与 GitHub archive 一致。

上游:openxlings/libxpkg#41

elfpatch now stamps DT_RPATH on executables instead of DT_RUNPATH.

DT_RUNPATH is consulted only for the object carrying it; DT_RPATH is consulted
for every dlopen anywhere in the process. The graphics stack's load chain is
three to four dlopens deep, so only the transitive tag reaches the bottom —
measured, the same path content stamped DT_RPATH puts GLX, EGL, GLESv2 and
headless surfaceless EGL all on the GPU, and stamped DT_RUNPATH renders on
llvmpipe.

Executables only. Forcing DT_RPATH on a library is measured harmful
(xim-pkgindex#593) because transitivity runs downward too.

All THREE platform sections, verified by PARSING the recipe rather than
reading the diff — a regex edit to a .lua applies cleanly and can mean
something else:

  linux    0.0.57=yes  sha=7b24c2f156ce  versions=18
  macosx   0.0.57=yes  sha=7b24c2f156ce  versions=18
  windows  0.0.57=yes  sha=7b24c2f156ce  versions=18

CN mirror uploaded and verified by SIZE (gitcode returns 200 with an HTML
landing page for an asset that is not there, so the status code proves
nothing): 147212 bytes, matching the GitHub archive.

Upstream: openxlings/libxpkg#41
@Sunrisepeak

Copy link
Copy Markdown
Member Author

那个红格早于本 PR,不是它造成的

graphics install: no side effects on unrelated membersmain 上 07:08 就已经是 failure(run 31364632947,PR #201 的合并),而本分支晚于它。按既定的归因方法:同一个 job、更早的提交、已经红。

根因:该 job 下载固定版本的 mcpp 2026.8.8.2并使用它自带的索引;而 compat.glx-runtime 要求 xim:libglvnd@>=1.7.0.1。libglvnd 1.7.0.1 是今天才发布到 xim-pkgindex 的(openxlings/xim-pkgindex#594 一线),比固定的 mcpp 新,所以那个索引里没有它:

E_INVALID_INPUT: package 'xim:libglvnd@>=1.7.0.1' not found

这是跨索引版本要求与固定工具链版本的错配 —— 提高一个 xim: 依赖的下界,就需要同时提高引用它的 CI 里的 mcpp 固定版本。与本 PR(只新增一个 xpkg 版本条目)无关。

本 PR 自身相关的检查(build / lint / select / mirror-cn-reachable)全绿。

@Sunrisepeak
Sunrisepeak merged commit b4e28f2 into main Aug 10, 2026
6 of 7 checks passed
Sunrisepeak added a commit to openxlings/xim-pkgindex that referenced this pull request Aug 10, 2026
The loader tag now has one owner. elfpatch (libxpkg 0.0.57) stamps DT_RPATH on
executables instead of DT_RUNPATH, and closure_check gains rule E to say so at
install time on the user's machine when a payload arrives with the old tag.

DT_RUNPATH is consulted only for the object carrying it; DT_RPATH is consulted
for every dlopen anywhere in the process. A GL program reaches its driver
through three levels of dlopen, so the tag — not the path — decided whether it
rendered on the GPU. Of 73 installed executables on a real home, 1 carried
DT_RPATH and 55 of the other 68 already carried the correct path.

Also: `subos info` reports host driver drift (the detector existed as
`xlings-gl-doctor` and lacked a channel), and `subos use --sandbox` without
`--gpu` says the sandbox exposes no GPU — under three conditions, so it can
only fire where acting on it changes the outcome.

All THREE platform sections, verified by PARSING rather than reading the diff:

  linux    latest=2026.8.10.4  arch=[aarch64,x86_64]
  macosx   latest=2026.8.10.4  arch=[aarch64]
  windows  latest=2026.8.10.4  arch=[x86_64]

Hashes taken from the assets in xlings-res — what `XLINGS_RES` actually
resolves to — not from the upstream release they were mirrored from.

CN mirror uploaded from a local shell and verified by SIZE on all four
platforms; before the upload all four returned 127 bytes, so the status code
would have said 200 for assets that were not there.

Upstream: openxlings/xlings#536, openxlings/libxpkg#41, mcpplibs/mcpp-index#202

Co-authored-by: sunrisepeak <x.d2learn.org@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant