- commit
- 54a4b7d2868822bf3fd00aac68a2f99a8c8b98da
- parent
- 1c3e7a958228c1346d904fce41707f636bb561ef
- author
- FelineStateMachine <dami.etoile@gmail.com>
| M | .github/ | 9 | +++++++++ |
| M | README.md | 10 | +++++----- |
| M | docs/ | 12 | ++++++------ |
| M | scripts/ | 2 | +- |
| M | scripts/ | 12 | ++++++------ |
| M | scripts/ | 2 | +- |
| M | scripts/ | 1 | + |
| M | scripts/ | 7 | +++++-- |
| M | scripts/ | 8 | +++++++- |
| M | scripts/ | 2 | +- |
@@ -56,7 +56,14 @@ jobs:
5656 sudo apt-get install --yes --no-install-recommends \5757 build-essential \5858 ffmpeg \59+ gstreamer1.0-plugins-base \60+ gstreamer1.0-plugins-bad \61+ gstreamer1.0-plugins-good \62+ gstreamer1.0-plugins-ugly \63+ gstreamer1.0-tools \5964 libayatana-appindicator3-dev \65+ libgstreamer-plugins-base1.0-dev \66+ libgstreamer1.0-dev \6067 librsvg2-dev \6168 libssl-dev \6269 libudev-dev \@@ -79,6 +86,8 @@ jobs:
7986 cargo install cargo-zigbuild --locked --version 0.23.08087 8188 - name: Run complete repository gate89+ env:90+ GOQ_VERIFY_IN_PROCESS_GSTREAMER: "1"8291 run: ./scripts/verify-demo-build.sh8392 8493 - name: Build and verify unsigned candidate@@ -139,11 +139,11 @@ Requirements:
139139 - Tauri v2 system dependencies140140 - A FIDO2 key with `hmac-secret` support for the normal identity flow141141 142-The optional Linux `in-process-gstreamer` host feature additionally needs the143-GStreamer core, app, and video development libraries. Its matching runtime144-libraries and plugins, including `appsink`, must be installed on the host. The145-published Sigil package remains a default-feature build until native Bazzite146-and cross-build linking are proven.142+The Linux `in-process-gstreamer` host feature additionally needs the GStreamer143+core, app, and video development libraries at build time. Its matching runtime144+libraries and plugins, including `appsink`, must be installed on the host.145+Published Sigil packages include this feature while retaining the external146+pipeline as the runtime default until a host opts into the in-process backend.147147 148148 ### Enroll one Portal149149 @@ -44,12 +44,12 @@ low-latency encoder properties do not match. This implementation still needs
4444 the attached-display and headless appliance gates below before it is proven on4545 the target Bazzite image.4646 47-The proven compatibility backend launches the video pipeline through the48-configured `gst-launch-1.0` executable and remains the default when49-`encoder_backend` is omitted. `encoder_backend = "in-process-gstreamer"` is an50-explicit test opt-in. Sigil rejects that setting unless it is a Linux binary51-built with the matching Cargo feature; it must never silently fall back to the52-external backend. The public release package does not enable this feature yet.47+The compatibility backend launches the video pipeline through the configured48+`gst-launch-1.0` executable and remains the runtime default when49+`encoder_backend` is omitted. Published Sigil packages also include the50+`in-process-gstreamer` backend so a host can opt into the bounded appsink path51+without replacing its package. Sigil must never silently fall back to the52+external backend when that explicit configuration is unavailable.5353 5454 The host identity file is part of the normal daemon design. The client-side5555 `--dev-connect` passkey bypass is accepted by debug builds and by an explicitly@@ -263,7 +263,7 @@ expected = {
263263 "compatibility_executable": "sigil-host",264264 "target": "x86_64-unknown-linux-gnu.2.17",265265 "profile": "release",266- "features": ["default"],266+ "features": ["default", "in-process-gstreamer"],267267 "demo_direct_node": False,268268 }269269 for key, value in expected.items():@@ -23,9 +23,8 @@ an isolated Cargo target directory. The package includes atomic install,
2323 upgrade/rollback support, the systemd user unit, PipeWire sink, staged udev2424 rule, complete checksums, and build provenance. It never includes the source2525 tree, host identity, hardware configuration, environment files, or evidence.26-Product mode intentionally uses Sigil's default feature set; the opt-in27-in-process-gstreamer backend is excluded until its native/cross-build gate is28-approved.26+Product mode builds Sigil with the default feature set plus the approved27+in-process-gstreamer backend. The manifest records that exact feature contract.2928 3029 Options:3130 --output PATH New .tar.gz bundle path (required; must not exist)@@ -195,8 +194,9 @@ else
195194 git -C "$repo_dir" archive --format=tar "$git_commit" | tar -xf - -C "$build_source"196195 (197196 cd "$build_source"198- CARGO_TARGET_DIR="$build_target" cargo zigbuild --locked -p sigil-host --bins \199- --target "$linux_target" --release197+ PKG_CONFIG_ALLOW_CROSS=1 CARGO_TARGET_DIR="$build_target" \198+ cargo zigbuild --locked -p sigil-host --bins \199+ --target "$linux_target" --release --features in-process-gstreamer200200 )201201 host_binary="$build_target/$linux_output_target/release/sigil"202202 probe_binary="$build_target/$linux_output_target/release/sigil-probe"@@ -269,7 +269,7 @@ manifest = {
269269 "version": version,270270 "target": target,271271 "profile": "release",272- "features": ["default"],272+ "features": ["default", "in-process-gstreamer"],273273 "demo_direct_node": False,274274 "git_commit": commit,275275 "git_dirty": dirty == "true",@@ -41,6 +41,7 @@ printf '%s\n' \
4141 '#!/usr/bin/env bash' \4242 'set -euo pipefail' \4343 'test "${1:-}" = zigbuild' \44+ 'case " $* " in *" --features in-process-gstreamer "*) ;; *) exit 64 ;; esac' \4445 'output="$CARGO_TARGET_DIR/x86_64-unknown-linux-gnu/release"' \4546 'install -d -m 0700 "$output"' \4647 'printf "#!/usr/bin/env bash\\nexit 0\\n" >"$output/sigil"' \@@ -49,7 +49,7 @@ manifest = {
4949 "version": tag[1:],5050 "target": "x86_64-unknown-linux-gnu.2.17",5151 "profile": "release",52- "features": ["default"],52+ "features": ["default", "in-process-gstreamer"],5353 "demo_direct_node": False,5454 "git_commit": commit,5555 "git_dirty": False,@@ -62,6 +62,8 @@ manifest = {
6262 "asset_name": asset,6363 "release_kind": "product-candidate",6464 }65+if variant == "default-features":66+ manifest["features"] = ["default"]6567 binary = b"fixture executable\n"6668 release = {6769 "sigil": binary,@@ -168,7 +170,7 @@ printf '%064d %s\n' 0 "$(basename -- "$bad_archive")" >"$bad_archive.sha256"
168170 assert_rejected bad-checksum 'checksum declaration does not exactly match' \169171 "$verifier" --tag "$release_tag" --archive "$bad_archive" --candidate170172 171-for variant in symlink duplicate unexpected; do173+for variant in symlink duplicate unexpected default-features; do172174 fixture_dir="$temp_root/$variant"173175 make_fixture "$fixture_dir" "$variant"174176 fixture_archive="$fixture_dir/sigil-$release_tag-bazzite-x86_64.tar.gz"@@ -176,6 +178,7 @@ for variant in symlink duplicate unexpected; do
176178 symlink) expected='unsafe type' ;;177179 duplicate) expected='duplicate members' ;;178180 unexpected) expected='do not match the package allowlist' ;;181+ default-features) expected='field features does not match the product contract' ;;179182 esac180183 assert_rejected "$variant" "$expected" \181184 "$verifier" --tag "$release_tag" --archive "$fixture_archive" --candidate@@ -71,7 +71,13 @@ if [[ "${GOQ_VERIFY_IN_PROCESS_GSTREAMER:-0}" == 1 ]]; then
7171 echo 'in_process_gstreamer_gate=ok'7272 fi7373 if command -v cargo-zigbuild >/dev/null 2>&1 && command -v zig >/dev/null 2>&1; then74- cargo zigbuild --locked -p sigil-host --target x86_64-unknown-linux-gnu.2.1774+ if [[ "${GOQ_VERIFY_IN_PROCESS_GSTREAMER:-0}" == 1 ]]; then75+ PKG_CONFIG_ALLOW_CROSS=1 cargo zigbuild --locked -p sigil-host --bins \76+ --target x86_64-unknown-linux-gnu.2.17 --features in-process-gstreamer77+ else78+ cargo zigbuild --locked -p sigil-host --bins \79+ --target x86_64-unknown-linux-gnu.2.1780+ fi7581 echo 'linux_cross_build=ok'7682 else7783 echo 'linux_cross_build=skipped (cargo-zigbuild and zig are both required)'@@ -248,7 +248,7 @@ expected_values = {
248248 "version": release_tag[1:],249249 "target": "x86_64-unknown-linux-gnu.2.17",250250 "profile": "release",251- "features": ["default"],251+ "features": ["default", "in-process-gstreamer"],252252 "demo_direct_node": False,253253 "git_dirty": False,254254 "binary_provenance": "self-built-clean-head",