Repository navigation
Make the Research Linux AppImage work outside the Nix build - #1487
Open
w3irdrobot wants to merge 3 commits into
Open
w3irdrobot wants to merge 3 commits into
w3irdrobot wants to merge 3 commits into
Conversation
GIO loads its TLS backend and GTK reads its file chooser settings at runtime, so the DT_NEEDED closure repair never bundled either one. Without the module every HTTPS request from the webview fails, which users see as "Couldn't process attestation document: Load failed". Without the schemas any file dialog aborts the process. Stage glib-networking's TLS module and GTK3's compiled schemas before the closure repair, and point GIO_MODULE_DIR at the bundled module from AppRun. Package verification now loads the extracted AppImage's own libraries and fails unless they have a TLS backend and the file chooser's schema and template, since the dev shell's own GIO_MODULE_DIR hides this gap. Fixes #804 Fixes #805 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
|
Maple development preview: https://40b79d42.maple-ca8.pages.dev Commit: Uses development API, billing, flags and PCR configuration. Cloudflare Access applies. |
AnthonyRonning
previously approved these changes
Nov 8, 2026
w3irdrobot
marked this pull request as ready for review
November 9, 2026 13:47
w3irdrobot
marked this pull request as draft
November 9, 2026 14:33
The closure repair bundled Nix's libgbm and libdrm, which linuxdeploy's excludelist leaves out. The bundled libgbm searches only nixpkgs' compiled-in driver directory, /run/opengl-driver/lib/gbm, so on other distributions WebKit cannot open the GPU and the window stays white. On Fedora 45, pointing GBM_BACKENDS_PATH at the host's drivers made it draw. Treat both like glibc: never bundle them, so the host's libgbm finds its own drivers, NVIDIA's included. The runtime-closure check now rejects an AppImage that bundles any host-supplied library. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
|
Maple Auth development preview: https://eee47159.maple-auth-dev.pages.dev Commit: Uses development services. Cloudflare Access applies. Provider OAuth is not configured for PR URLs; use the stable Auth Dev host for OAuth rehearsal. |
w3irdrobot
marked this pull request as ready for review
November 9, 2026 16:46
This branch was successfully deployed
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.
Fixes #804.
Fixes #805.
Supersedes #1471, which was approved and is included here unchanged apart from one interaction noted below.
The AppImage bundled what the
DT_NEEDEDclosure could see and missed or mishandled anything loaded at runtime. That caused four separate failures on non-Nix hosts.Load failedglib-networking's TLS module;AppRunsetsGIO_MODULE_DIRto itlibgbmbundledlibgbmandlibdrmto the host, like glibcWebKitWebProcessaborts on hosts without a compatible GLESThe rule throughout: bundle what only talks to other bundled libraries, and leave anything tied to the GPU, kernel or drivers to the host. The pinned
linuxdeploy's own excludelist already leaves outlibgbm.so.1andlibdrm.so.2; Maple's closure repair was adding them back.Changes
libgiognutls.soand GTK3'sgschemas.compiledbefore the closure repair, which then bundles the module's dependencies. A closure missing either file fails the build.linux_appimage_ignored_needed_librarynext to glibc. The host'slibgbmthen finds the host's drivers, NVIDIA's included.libgbmorlibdrmpath still gets rewritten to the soname, but the library resolves from the host instead of being bundled.Package verification
scripts/ci/appimage_gio_runtime.pyloads the extracted AppImage's own libraries and fails unless they have a TLS backend and the file chooser's schema and template. The dev shell sets its ownGIO_MODULE_DIR, so only the package can show this gap.libgbm,libdrm)..rodataand missing libepoxydlopendependencies.Verification
All runtime checks used the packaged AppImage from
desktop-pr.sh(fake updater signing) under Xvfb. This build talks to the Dev enclave; login used an address with no account.Invalid email, password, or login method, so the server answeredlibgbmandlibdrm(/usr/lib/x86_64-linux-gnu)libgbmandlibdrm(/usr/lib)libgiognutls.sodeleted, Ubuntu 26.10Load failedNeither combined run logged any GBM,
MESA-LOADERor/run/opengl-drivererrors.File chooser (#805's reproducer,
gtk_file_chooser_widget_new, run through the realAppRun):AppRun's GIO and GSettings variables set by handReal GPU on Fedora 45: a TLS-only build left the window white because the bundled
libgbmwas searching/run/opengl-driver/lib/gbm. WithGBM_BACKENDS_PATH=/usr/lib64/gbmit drew, which is what led to the GBM change. The combined build (CI artifact from06491aef) draws there with no environment overrides and no GBM errors, signing in to a real Dev account works, and the image picker's file dialog opens without crashing.GLES (from #1471): Ubuntu 26.10/Xvfb previously showed the GLES error followed by
WebKitWebProcessSIGABRT. After the fix, the AppImage started and ran until the timeout without either.verified-linux-appimage-gio-runtime, runtime closure, portable runtime paths, andGLIBC_2.44 floor=2.44 files=629.just lane repopasses: 574 CI script tests, 2 skipped.Not verified
libgbm. It would now fail at start with a missing-library error. Any desktop with Mesa has it.desktop-release.sh, NixOS, and NVIDIA's proprietary driver.Notes for review
libEGL,libGLX,libGLdispatch,libvulkanandlibvaare bundled even thoughlinuxdeployexcludes most of them. fix(research): make AppImage GLES runtime loading portable #1471 bundles the GL dispatch libraries on purpose; the rest are left as they are here.libvalikely also has a Nix driver path, which would only affect hardware video decoding. Not investigated.gio-querymodulescache: GIO scans the module directory without one.GIO_MODULE_DIRis inherited by processes the app launches, as the bundle'sLD_LIBRARY_PATHalready is.AppRun's message pointing to the.debor.rpm.🤖 Generated with Claude Code