Skip to content

Latest commit

 

History

History
129 lines (104 loc) · 6.87 KB

native-linux-prefix.md

File metadata and controls

129 lines (104 loc) · 6.87 KB

Linux native command validation with a temporary package prefix

Date: 2026-10-18. Initial evidence was compilation/headless tests. A later isolated native lifecycle GUI/IPC check now passes as recorded below; installed runtime, SSH terminal and packaged release claims remain separate.

The Arch Linux x86_64 host has GTK 3/libsoup but lacks globally installed WebKitGTK/JavaScriptCoreGTK 4.1. A temporary user-owned prefix allowed the actual Tauri crate and its HTTP contract tests to compile without root/system changes.

What was done

Read the system package database's missing dependency plan with pacman -Sp. Downloaded each exact package and detached signature through verified HTTPS from the Arch package mirror. Verified signatures with the public keyring shipped by archlinux-keyring; pacman -Qkk archlinux-keyring reported 17 files, zero altered. The packaged keyring is armored, so an initial gpgv attempt could not read it; a dearmored copy in the temporary directory fixed the format. No key was fetched from a keyserver, trust exception applied or personal GPG configuration accessed.

Only after successful verification, extracted each package's usr tree into the owned prefix without executing installation hooks. Adjusted only those copied pkg-config files to reference the temporary prefix. Binaries/signatures and the system package database were not modified.

Package Version
enchant 2.8.21-1
harfbuzz-icu 14.6.0-1
hyphen 2.8.9-1
libmanette 0.2.13-2
woff2 1.0.2-6
xdg-dbus-proxy 0.1.9-1
webkit2gtk-4.1 2.54.1-1

The official Arch package page identifies the WebKitGTK package/version and dependencies. This was a host-specific validation setup, not a new project dependency installer or portable SDK.

Actual result

With the temporary usr/lib/pkgconfig in PKG_CONFIG_PATH and its usr/lib in LD_LIBRARY_PATH/LIBRARY_PATH, make check-rust passed workspace formatting, all-target Clippy with warnings denied and all 95 tests: 80 server and 15 native client HTTP tests. The latter include history, instance observation and lifecycle preflight commands previously left source-prepared. A standalone client test-list build also succeeds without relying on the server's dependency feature graph. Frontend build, 15 Node controller tests and the Firefox simulated-IPC walkthrough passed separately on the same source. No native GUI or real IPC-to-WebView launch was performed by these commands.

Resume and limits

The retained temporary directory is /tmp/vmanyware-native-deps-61ktnqj7. packages.json records exact package URLs, SHA-256 values and signature outputs. Its prepare.py and check.py are local experimental helpers, not repository runtime code. While it still exists, from the repository run:

python3 /tmp/vmanyware-native-deps-61ktnqj7/check.py

The prefix is disposable and may vanish on reboot; inspect its existence before relying on it. Default checks on an unconfigured host still need proper native system prerequisites. WebKit helper/resource paths were not relocated or tested for application launch. A deployment should use supported installed dependencies, not this temporary validation prefix. macOS native integration, physical keyboard, Linux SSH support, signing/installers and mobile evidence remain separate gates.

Later real native lifecycle fixture

Added verified/extracted libxmu 1.3.1-1, xorg-xauth 1.1.5-1 and xorg-server-xvfb 21.1.25-2 to the same owned prefix, without hooks or system installation. display-packages.json retains exact URLs/hashes/signature evidence. A private bubblewrap read-only /usr overlay makes original WebKit helper paths available for this process tree only; temporary X11/XDG mounts and a separate D-Bus session isolate GUI state. Existing home directories are hidden.

make check-lifecycle-native NATIVE_TEST_PREFIX=/tmp/vmanyware-native-deps-61ktnqj7 passes the build/23 Node tests and real React/WebKit -> Tauri Rust IPC -> actual Axum -> generated HTTPS start/shutdown assertions. It requires exactly one POST per action and separate task/power results; no invoke is mocked. The example uses a separate fixture identifier, embedded assets and ephemeral WebView storage.

The final prefix make check-rust also passes fmt, all-target warnings-denied Clippy and all 122 workspace tests (104 server, 18 native). Rustfmt initially resolved the imported command module's test path incorrectly; an explicit repository-relative test module path fixes formatting/all-target compilation.

Software Mesa rendering avoids this host's Xvfb/NVIDIA EGL crash. Minimal-session D-Bus/portal/accessibility warnings remain; asserted interactions still pass. WebKit sandbox, X11 cookie authentication and TLS verification were not disabled. Normal packaged startup, hardware GPU rendering, real Proxmox, macOS/mobile and SSH remain outside this result. See the native harness.

Recreated snapshot-test prefix — 2026-10-20

The earlier /tmp prefix is absent. Recreated the same seven-package native library prefix under the ignored workspace directory .lab/native-deps, so a host reboot alone will not remove it. The installed Arch keyring integrity check again reported 17 files and no changes. Each archive was downloaded through verified HTTPS and its detached signature verified against a dearmored copy of the system-shipped public keyring before extraction. No package hooks or system installation were used. Copied pkg-config prefixes point to this owned tree.

.lab/native-deps/packages.json retains exact package URLs, versions, hashes and signature verification outputs; prepare.py records the executed setup. This is an owned experiment, not an application dependency installer. To use the library prefix for a targeted check, from the repository root:

export PKG_CONFIG_PATH="$PWD/.lab/native-deps/sysroot/usr/lib/pkgconfig"
export LIBRARY_PATH="$PWD/.lab/native-deps/sysroot/usr/lib"
export LD_LIBRARY_PATH="$PWD/.lab/native-deps/sysroot/usr/lib"
cargo test -p vmanyware-client --lib remote_snapshot_read -- --nocapture

This prefix currently provides compilation and headless command-test libraries; it does not include the older Xvfb additions or prove normal packaged GUI startup. Check actual presence before reuse. Native snapshot results are recorded in STATE.md and docs/snapshots.md after the checks finish.

The 2026-10-20 prefix was subsequently extended with the same verified/extracted libxmu, xorg-xauth and xorg-server-xvfb packages for the real snapshot UI scenario. The package manifest now records all ten archives. The isolated --snapshots WebView/IPC/HTTPS/server journey passed with read-only overlays, a generated X11 cookie, Mesa rendering and a private D-Bus session. This supersedes the earlier library-only limitation for .lab/native-deps; packaged startup remains separate.