mirror of
https://github.com/logos-co/nix-bundle-appimage.git
synced 2026-08-27 10:41:07 +00:00
main
* ci: bump nix-bundle-dir to main, gate the AppImage on a smoke test
nix-bundle-dir main sets each ELF's psABI interpreter at build time, writes
DT_RPATH instead of DT_RUNPATH, drops the ld.so trampoline and its
/proc/self/exe LD_PRELOAD shim, and now emits a bin/<name> launcher only for
GUI bundles that need XKB_CONFIG_ROOT or QT_QPA_PLATFORMTHEME. It also adds a
qtCliApp bundler, which this flake mirrors automatically.
That changes what lands inside the AppDir, and this repo had no CI at all --
an odd gap for the last step before an artifact reaches a user, where the
failure modes (a payload that cannot exec on another distro, a launcher whose
companion ELF was not copied, a missing lib dir) all still build and still
extract.
tests/smoke.sh builds two deliberately tiny AppImages -- hello via qtCliApp
for the plain path, xkbcli via qtApp for the launcher path -- asserts the
payload contract inside the extracted AppDir, and runs each in ubuntu and
fedora containers with APPIMAGE_EXTRACT_AND_RUN=1. The matrix covers
ubuntu-latest and ubuntu-24.04-arm because the psABI loader paths differ per
arch and a single-arch job would miss exactly that.
Verified against the pre-bump pin: 8 of these assertions fail there (9 on
x86_64) -- the interpreter, both RPATH/RUNPATH checks, libprocself_fix.so,
__BUNDLE_REAL_EXE, the trampoline exec shape, the loader probe, and the
qtCliApp bundle itself. The dotfile question in mkAppImage.nix was settled by
experiment rather than reading: `cp -a ${bundle}/bin/.` does take the hidden
companion, and mutating it to `cp -a ${bundle}/bin/*` produces an AppImage
that builds, extracts, and then fails to run on both distros -- which the new
test catches.
* fix(ci): address Copilot review on the smoke gate
- Require the AppImage path to be a real file before greening
"AppImage built": an unmatched `*.AppImage` glob expands to the
literal pattern, which is non-empty and was producing a misleading
pass.
- Compare the full ELF magic (\x7fELF) instead of grepping the first
four bytes for the substring "ELF".
- Make the image list overridable via SMOKE_DISTROS, pin
ubuntu:24.04 / fedora:42 in CI, and hard-fail under GITHUB_ACTIONS
when Docker is missing.
Co-authored-by: Cursor <cursoragent@cursor.com>
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
Description
No description provided
90 KiB
Languages
Shell
61.9%
Nix
38.1%