Linux release packaging now goes through the reusable
gnustep-packager workflow and the downstream manifest at
packaging/manifests/linux-appimage.manifest.json.
The GitHub Actions entry point is linux-appimage.yml.
That workflow now:
- Resolves the release version from the dispatch input or pushed tag.
- Calls the reusable
gnustep-packagerworkflow pinned to commitbca864ff163e129100881145e017429fed155bf7. - Runs repo-owned Linux preflight from packaging/ci/preflight-appimage.sh on the self-hosted GNUstep runner.
- Builds with packaging/scripts/build-linux.sh.
- Stages the normalized
app/,runtime/, andmetadata/payload with packaging/scripts/stage-linux-runtime.sh. - Lets
gnustep-packagerrender the AppDir, generateAppRun, package the AppImage, run strict runtime-closure validation, and execute smoke launch. - On pushed tags, downloads the uploaded
objcmarkdown-linux-packagesartifact and publishes the.AppImage,.AppImage.zsync, and generated sidecars to the matching GitHub Release.
The repo-owned Linux stage root is:
app/MarkdownViewer.appplus app-private project libraries underapp/libruntime/GNUstep libraries, bundles, tools, Adwaita theme payload, fontconfig data, glib schemas, bundledpandoc, and native dependency closuremetadata/icon assets, packaging docs, and the sample smoke document
The launch policy is now manifest-driven instead of relying on a repo-local
AppRun wrapper:
GSTheme=AdwaitawithifUnset- GNUstep roots pointed at the packaged
runtime/ LD_LIBRARY_PATHseeded from packaged app/runtime library rootsPANDOC_DATA_DIRand related app variables pointed at the bundled payload
The Linux preflight keeps the packaged Adwaita theme pinned to:
- repository:
danjboyd/plugins-themes-Adwaita - commit:
9d455f67587242400f6620a0e8884084850d1204
The stage script also supports a local fallback checkout at
../gnustep/plugins-themes-adwaita when working outside CI.
Build and test the repo first:
scripts/ci/run-linux-ci.shThen run the packager pipeline locally:
pwsh ../gnustep/gnustep-packager/scripts/run-packaging-pipeline.ps1 \
-Manifest packaging/manifests/linux-appimage.manifest.json \
-Backend appimage \
-RunSmokeFor an extra repo-side inspection pass on the produced artifact:
./scripts/linux/validate-appimage.sh \
dist/packaging/linux/packages/ObjcMarkdown-0.1.1-rc2-linux-x86_64.AppImageFor clean-machine checks on Debian, use linux-debian-vm-validation.md.