build(linux): carry the pinned Node inside the AppImage so serve's slot works offline (#28204)

* build(linux): carry the pinned Node inside the AppImage so orca serve's slot works offline

Linux packaging places the pinned glibc Node at resources/node-runtime/bin/node before the
glibc-floor gate, proves it serves one PTY with the packaged daemon entry, and deb/rpm exclude
it through fpm. orca serve's orcad slot copies that Node (hash-checked) instead of downloading.

* test(serve): type the bundled Node fixture

---------

Co-authored-by: m4air <m4air@Mac.localdomain>
This commit is contained in:
OrcaWin
2026-10-13 00:39:39 -07:00
committed by GitHub
co-authored by m4air
parent e9285f0f58
commit 49a1129aa6
10 changed files with 353 additions and 10 deletions
+13
View File
@@ -1173,6 +1173,19 @@ jobs:
rpm_marker="$(rpm2cpio "$rpm" | cpio --quiet --extract --to-stdout ./opt/Orca/resources/package-type)"
[[ "$deb_marker" == deb ]] || { echo "Expected deb marker, got: $deb_marker"; exit 1; }
[[ "$rpm_marker" == rpm ]] || { echo "Expected rpm marker, got: $rpm_marker"; exit 1; }
# Only the AppImage carries the pinned Node (config/scripts/appimage-node-runtime.cjs).
if dpkg-deb --fsys-tarfile "$deb" | tar -t | grep '/resources/node-runtime' >/dev/null; then
echo "The deb must not carry the AppImage's Node"; exit 1
fi
if rpm2cpio "$rpm" | cpio --quiet -t | grep '/resources/node-runtime' >/dev/null; then
echo "The rpm must not carry the AppImage's Node"; exit 1
fi
appimage_root="$(mktemp -d)"
(cd "$appimage_root" && "$GITHUB_WORKSPACE/dist/orca-linux.AppImage" --appimage-extract 'resources/node-runtime/bin/node' >/dev/null)
test -x "$appimage_root/squashfs-root/resources/node-runtime/bin/node"
"$appimage_root/squashfs-root/resources/node-runtime/bin/node" --version
rm -rf "$appimage_root"
ls -l dist/orca-linux.AppImage "$deb" "$rpm"
- wait: shutdown-fixture-cache