Skip to content

ci: Build the release's AppImage with Rust libobs on a manual dispatch too - #670

Merged
zackees merged 2 commits into
masterfrom
fix/appimage-call-rust-libobs
Oct 14, 2026
Merged

zackees merged 2 commits into
masterfrom
fix/appimage-call-rust-libobs

Conversation

@zackees

@zackees zackees commented Oct 14, 2026

Copy link
Copy Markdown
Member

Today's manually dispatched release (run 38497010624) failed every AppImage distro test: expected 'OBS-Studio-Rust 0.1.0-beta.20261014 (based on OBS ...)' from --version, got: OBS Studio - 33.0.0-beta6-1045-ga7edb3bc9. The AppImage was built without ENABLE_RUST_LIBOBS. Inside a called workflow github.event_name is the caller's event, so github.event_name != 'workflow_dispatch' || inputs.rust_libobs read a dispatch-only input that a workflow_call never sets. A scheduled release would have been fine.

  • RED: ci/test_appimage_call_inputs.py checks that workflow_call declares rust_libobs (default true) and that RUST_LIBOBS doesn't depend on github.event_name.
  • GREEN: rust_libobs is added to workflow_call, and RUST_LIBOBS: ${{ inputs.rust_libobs != false }} treats an unset input (push, tag, pull_request) as on.

A manually dispatched release (run 38497010624) built the AppImage
without ENABLE_RUST_LIBOBS: github.event_name was the caller's
workflow_dispatch, so a dispatch-only input was read.
…GREEN)

appimage.yaml's workflow_call now declares rust_libobs (default true), and
ENABLE_RUST_LIBOBS follows the input alone instead of github.event_name,
which is the caller's event inside a called workflow. The test's input
regex also matches the input's last line.

Local-Gate: v1 tree=c36642c3aa06ad455dc2fbbab825a780f44ce060 secs=310 lanes=lint:run,rust-test:run,cross:run,tier2-linux:run
Ci-Attestation: {"at":1791943297,"gate":"rust/all/fmt","host":"linux-x86_64","key":"aa67ea154927d5bb5e08ec23cd2eb6967c8ad3bde4301f4e56ebcdffc2e70b24","lane":"lint","parents":["4df113ad421fcbad1feefc722d2937937f753600"],"secs":17,"stamp":"ae78a4a2e25fb9c08c8591b15d3c02f2","tree":"c36642c3aa06ad455dc2fbbab825a780f44ce060","v":1,"via":"run"}
Ci-Attestation: {"at":1791943297,"gate":"rust/x86_64-unknown-linux-gnu/clippy","host":"linux-x86_64","key":"aa67ea154927d5bb5e08ec23cd2eb6967c8ad3bde4301f4e56ebcdffc2e70b24","lane":"lint","parents":["4df113ad421fcbad1feefc722d2937937f753600"],"secs":17,"stamp":"3682da7c027180f9a0c020b279c435ca","tree":"c36642c3aa06ad455dc2fbbab825a780f44ce060","v":1,"via":"run"}
Ci-Attestation: {"at":1791943297,"gate":"rust/x86_64-unknown-linux-gnu/test","host":"linux-x86_64","key":"f24977092d111992db75025707b4dc1b80f9bc01ec98a900a71b5a0d76982aa3","lane":"rust-test","parents":["4df113ad421fcbad1feefc722d2937937f753600"],"secs":81,"stamp":"ab721fb86b77becae71a9157560ec00c","tree":"c36642c3aa06ad455dc2fbbab825a780f44ce060","v":1,"via":"run"}
Ci-Attestation: {"at":1791943297,"gate":"rust/x86_64-pc-windows-msvc/clippy","host":"linux-x86_64","key":"9054e3000b85e7b1a206ebfba295dd73a9eee7d7d5871966c51fa7f5ad67e7c6","lane":"cross","parents":["4df113ad421fcbad1feefc722d2937937f753600"],"secs":63,"stamp":"edc8b470f80826506744fb889542d80a","tree":"c36642c3aa06ad455dc2fbbab825a780f44ce060","v":1,"via":"run"}
Ci-Attestation: {"at":1791943297,"gate":"rust/x86_64-pc-windows-msvc/dylint","host":"linux-x86_64","key":"9054e3000b85e7b1a206ebfba295dd73a9eee7d7d5871966c51fa7f5ad67e7c6","lane":"cross","parents":["4df113ad421fcbad1feefc722d2937937f753600"],"secs":63,"stamp":"db3a5617baa567f8afff110a828a2b62","tree":"c36642c3aa06ad455dc2fbbab825a780f44ce060","v":1,"via":"run"}
Ci-Attestation: {"at":1791943297,"gate":"rust/aarch64-apple-darwin/clippy","host":"linux-x86_64","key":"9054e3000b85e7b1a206ebfba295dd73a9eee7d7d5871966c51fa7f5ad67e7c6","lane":"cross","parents":["4df113ad421fcbad1feefc722d2937937f753600"],"secs":63,"stamp":"f63416591aed3c915a5f0ee46ca319c7","tree":"c36642c3aa06ad455dc2fbbab825a780f44ce060","v":1,"via":"run"}
Ci-Attestation: {"at":1791943297,"gate":"rust/aarch64-apple-darwin/dylint","host":"linux-x86_64","key":"9054e3000b85e7b1a206ebfba295dd73a9eee7d7d5871966c51fa7f5ad67e7c6","lane":"cross","parents":["4df113ad421fcbad1feefc722d2937937f753600"],"secs":63,"stamp":"f4f4aa4b304aabc842718c95f57bf381","tree":"c36642c3aa06ad455dc2fbbab825a780f44ce060","v":1,"via":"run"}
Ci-Attestation: {"at":1791943297,"gate":"rust/x86_64-apple-darwin/clippy","host":"linux-x86_64","key":"9054e3000b85e7b1a206ebfba295dd73a9eee7d7d5871966c51fa7f5ad67e7c6","lane":"cross","parents":["4df113ad421fcbad1feefc722d2937937f753600"],"secs":63,"stamp":"092a285d56eaf9eab151f604839c3d4f","tree":"c36642c3aa06ad455dc2fbbab825a780f44ce060","v":1,"via":"run"}
Ci-Attestation: {"at":1791943297,"gate":"rust/x86_64-apple-darwin/dylint","host":"linux-x86_64","key":"9054e3000b85e7b1a206ebfba295dd73a9eee7d7d5871966c51fa7f5ad67e7c6","lane":"cross","parents":["4df113ad421fcbad1feefc722d2937937f753600"],"secs":63,"stamp":"4afd098b52e810a6f7a591ba2bcd9034","tree":"c36642c3aa06ad455dc2fbbab825a780f44ce060","v":1,"via":"run"}
Ci-Attestation: {"at":1791943297,"gate":"cpp/linux-x64/tier2","host":"linux-x86_64","key":"18bb2349f50d2109c1dc30f6d9ae69d6286127e301fb987c3adc875461080bbb","lane":"tier2-linux","parents":["4df113ad421fcbad1feefc722d2937937f753600"],"secs":149,"stamp":"8ec07681c7cec47363417ea8ef724669","tree":"c36642c3aa06ad455dc2fbbab825a780f44ce060","v":1,"via":"run"}
@zackees
zackees merged commit 9671e43 into master Oct 14, 2026
27 checks passed
@zackees

zackees commented Oct 14, 2026

Copy link
Copy Markdown
Member Author

The merged expression regresses direct push/PR/tag-style builds: GitHub's official @actions/expressions evaluator 0.3.61 evaluates inputs.rust_libobs != false as false when the inputs dictionary has no rust_libobs property. This matches GitHub's documented loose numeric equality (null/empty string and false all coerce to 0). The new test checks only input presence and absence of an event-name check; it does not evaluate the absent-input result.

I reproduced this with the actual source expression for push, pull_request, workflow_dispatch and schedule contexts: absent=false, explicit false=false, explicit true=true in each case. Absent input should preserve the ordinary Rust build default. The #664 AppImage-input work already owns this unit; I will integrate an actual evaluator regression and a fix that distinguishes absent input from explicit false there, avoiding a duplicate PR.

Sources: https://docs.github.com/en/actions/reference/workflows-and-actions/expressions and https://github.com/actions/languageservices/tree/main/expressions.

zackees added a commit to ProtonDev-sys/obs-studio that referenced this pull request Oct 15, 2026
obs-rust#670 and d67c6da each added it; the merged file had it twice and GitHub
refused to start release-rust.yaml ("'rust_libobs' is already defined").

Local-Gate: v1 tree=af38171a48b8091fd780264605dc8e5d8db2deb0 secs=359 lanes=lint:run,rust-test:run,cross:run,tier2-linux:run
Ci-Attestation: {"at":1791949341,"gate":"rust/all/fmt","host":"linux-x86_64","key":"1c8074fe33b0f2eb9c863442547fa5769b2e6cdcc5c9d068e270033dedd8acbd","lane":"lint","parents":["9b1137a63ba9f32969b76ad067b2df20b91edbbf"],"secs":25,"stamp":"f5c1374bda3598adcd2c9c41c8bc42d1","tree":"af38171a48b8091fd780264605dc8e5d8db2deb0","v":1,"via":"run"}
Ci-Attestation: {"at":1791949341,"gate":"rust/x86_64-unknown-linux-gnu/clippy","host":"linux-x86_64","key":"1c8074fe33b0f2eb9c863442547fa5769b2e6cdcc5c9d068e270033dedd8acbd","lane":"lint","parents":["9b1137a63ba9f32969b76ad067b2df20b91edbbf"],"secs":25,"stamp":"ca7cc8e371968107a88c7d4a94e18541","tree":"af38171a48b8091fd780264605dc8e5d8db2deb0","v":1,"via":"run"}
Ci-Attestation: {"at":1791949341,"gate":"rust/x86_64-unknown-linux-gnu/test","host":"linux-x86_64","key":"513b4c32cc9f78ca8d5be95035f00d41c6b8336f408b61e5a0838cbacbadf03d","lane":"rust-test","parents":["9b1137a63ba9f32969b76ad067b2df20b91edbbf"],"secs":88,"stamp":"7cfe365a7db46b4587c35d39345c75c5","tree":"af38171a48b8091fd780264605dc8e5d8db2deb0","v":1,"via":"run"}
Ci-Attestation: {"at":1791949341,"gate":"rust/x86_64-pc-windows-msvc/clippy","host":"linux-x86_64","key":"e32f7ed6a17e18de84d326056c30720bc31ae866d8faa989524de8c8768369c2","lane":"cross","parents":["9b1137a63ba9f32969b76ad067b2df20b91edbbf"],"secs":64,"stamp":"97e06ea6c7dda7bd5d89cbefe8b55c2a","tree":"af38171a48b8091fd780264605dc8e5d8db2deb0","v":1,"via":"run"}
Ci-Attestation: {"at":1791949341,"gate":"rust/x86_64-pc-windows-msvc/dylint","host":"linux-x86_64","key":"e32f7ed6a17e18de84d326056c30720bc31ae866d8faa989524de8c8768369c2","lane":"cross","parents":["9b1137a63ba9f32969b76ad067b2df20b91edbbf"],"secs":64,"stamp":"5013f1fed83d719ed2f2a6697c14d512","tree":"af38171a48b8091fd780264605dc8e5d8db2deb0","v":1,"via":"run"}
Ci-Attestation: {"at":1791949341,"gate":"rust/aarch64-apple-darwin/clippy","host":"linux-x86_64","key":"e32f7ed6a17e18de84d326056c30720bc31ae866d8faa989524de8c8768369c2","lane":"cross","parents":["9b1137a63ba9f32969b76ad067b2df20b91edbbf"],"secs":64,"stamp":"41cb8bae82d7689466febbf688ccbb49","tree":"af38171a48b8091fd780264605dc8e5d8db2deb0","v":1,"via":"run"}
Ci-Attestation: {"at":1791949341,"gate":"rust/aarch64-apple-darwin/dylint","host":"linux-x86_64","key":"e32f7ed6a17e18de84d326056c30720bc31ae866d8faa989524de8c8768369c2","lane":"cross","parents":["9b1137a63ba9f32969b76ad067b2df20b91edbbf"],"secs":64,"stamp":"b5825c752d459f895c8fa8928ebbf218","tree":"af38171a48b8091fd780264605dc8e5d8db2deb0","v":1,"via":"run"}
Ci-Attestation: {"at":1791949341,"gate":"rust/x86_64-apple-darwin/clippy","host":"linux-x86_64","key":"e32f7ed6a17e18de84d326056c30720bc31ae866d8faa989524de8c8768369c2","lane":"cross","parents":["9b1137a63ba9f32969b76ad067b2df20b91edbbf"],"secs":64,"stamp":"27ef93b5933e9c118bb4725532b3eab3","tree":"af38171a48b8091fd780264605dc8e5d8db2deb0","v":1,"via":"run"}
Ci-Attestation: {"at":1791949341,"gate":"rust/x86_64-apple-darwin/dylint","host":"linux-x86_64","key":"e32f7ed6a17e18de84d326056c30720bc31ae866d8faa989524de8c8768369c2","lane":"cross","parents":["9b1137a63ba9f32969b76ad067b2df20b91edbbf"],"secs":64,"stamp":"70512522cb41fa3ff841748ad40fc166","tree":"af38171a48b8091fd780264605dc8e5d8db2deb0","v":1,"via":"run"}
Ci-Attestation: {"at":1791949341,"gate":"cpp/linux-x64/tier2","host":"linux-x86_64","key":"382817625e0b7da70536c929bd8be80044c5b93d371bd750c98cf97bdca88e6c","lane":"tier2-linux","parents":["9b1137a63ba9f32969b76ad067b2df20b91edbbf"],"secs":183,"stamp":"9c237c17ee4531228c8e822c4081dda9","tree":"af38171a48b8091fd780264605dc8e5d8db2deb0","v":1,"via":"run"}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant