Repository navigation
Conversation
…ads sharing one path override "Pro" means the same thing in every Suite SAT tool: basic offers camera and file input, pro also offers NDI / Spout / Syphon. A per-tool flag name was therefore redundant, and it made the four hosts look like they implemented four different policies. They now all read SAT_ADVANCED_IO, set only by the shipped environment-pro. Nothing outside the packages sets the old name, so the rename carries no migration. The two uploads also both read `matrix.artifact-path`, defaulting to their own directory. That default hid a trap: a single matrix row adding an artifact-path override -- as the wasm rows in koaia and spm do -- would have pointed the pro upload at the basic directory, publishing the basic package under the pro artifact name. livepose has no such row yet, so this was latent rather than live, but it is the same failure that shipped the wrong Domeport edition. The matrix now overrides only the file glob (artifact-file) and each upload keeps its own output directory. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019QYyvhRXvSMSRQPaq12Teq
Every other tool in the suite already gives its editions the same identifier -- DomeportPro uses ca.qc.sat.domeportpro for both, koaia ca.qc.sat.koaia -- and livepose was the only one splitting it, so LivePose Pro built as ca.qc.sat.liveposepro. app-identifier only ever reaches CFBundleIdentifier on macOS (create-app.sh exports it, create-app-macos.sh writes it into Info.plist); it is not the settings scope, which comes from app-name and app-organization. So this moves no user's preferences, and no Pro artifact has been released under the old identifier. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019QYyvhRXvSMSRQPaq12Teq
|
Triaged: the Fixed in ossia/actions#29, which sets Verified by A/B on appimagetool with no |
Every Linux packaging job that goes through these actions dies after
about twenty minutes of building, at the first AppImage it has to write:
/usr/bin/fusermount3: mount failed: Operation not permitted
Cannot mount AppImage, please check your FUSE setup.
open dir error: No such file or directory
##[error]Process completed with exit code 127.
appimagetool is itself an AppImage, so running it needs either FUSE --
unavailable under rootless docker on the self-hosted host -- or
APPIMAGE_EXTRACT_AND_RUN. score's own appimage.yml sets that on the job,
with the same reasoning in a comment, and ci/appimage.deps.sh says in so
many words that libfuse2 is therefore not required; a caller reaching
the same scripts through these actions has to set it too, and did not.
Two steps need it, one per AppImage that gets written:
- custom-score-build's Build, which runs score's ci/appimage.build.sh
(this is where sat-mtl/livepose#83 failed)
- package-custom-app's Create custom app packages, which runs
tools/create-app-linux.sh for the app's own AppImage -- the next place
it would have failed
Checked with appimagetool on an AppDir with no fusermount on $PATH:
unset, exit 127 with the same "open dir error" line and no output file;
with the variable, exit 0 and the AppImage is written. The
`--appimage-extract` at create-app-linux.sh:57 was checked the same way
and needs no FUSE, so those two steps are the whole exposure.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019QYyvhRXvSMSRQPaq12Teq
Part of a six-repo pass standardizing Suite SAT packaging on one convention. livepose is the reference implementation, so the changes here are small: the flag rename, and one latent bug.
The convention
<tool>-${{ matrix.artifact-name }}and<tool>-pro-${{ matrix.artifact-name }}<tool>-*, which must match both editionsapp-namediffers per edition ("<Tool>"/"<Tool> Pro"), becausetools/create-app.sh:234derives the output filename from it -- two editions sharing a name produce one filename and silently overwriteenvironmentleaves the flag commented out,environment-prosets itFlag rename
"Pro" means the same thing in every tool: basic is camera and file input, pro also has NDI / Spout / Syphon. A per-tool
LIVEPOSE_ADVANCED_IOwas redundant and made the four hosts look like four different policies. All four now readSAT_ADVANCED_IO. The variable is only ever set by the shippedenvironment-pro, so nothing external depends on the old name.qmlcomponents/io/InputSourceSelector.qmlis unchanged: its contract is that the host computesallowedBackendsand the widget does the platform filtering, which is exactly what is wanted here.Latent bug fixed
Both uploads read
${{ matrix.artifact-path || '<their own dir>' }}. A single matrix row adding anartifact-pathoverride -- as the wasm rows in koaia and spm do -- would have pointed both uploads at the basic directory, publishing the basic package under thelivepose-pro-*artifact name. livepose has no wasm row yet, so this was latent, but it is the same failure mode that shipped the wrong Domeport edition. The matrix now overrides only the file glob (artifact-file) and each upload keeps its own output directory.Verification
livepose-${{ matrix.artifact-name }}livepose-pro-${{ matrix.artifact-name }}livepose-*-- matches bothLivePose-*/LivePose-Pro-*build.ymlpassesyaml.safe_load. These workflows cannot be run locally, so CI is the verification path.The set
One convention across the Suite SAT tools; review these together:
speaker-setup-format-converterneeds no change: it is not a score app and has no editions, and itsspeaker-layout-converter-*uploads already match itsspeaker-layout-converter-*release pattern.qmlcomponentsis unchanged. It is a git submodule in livepose, DomeportPro and spm, not a vendored copy, so there is one source of truth and no drift.InputSourceSelectoris agnostic by contract — the host computesallowedBackends, the widget does the platform filtering — which is exactly what these PRs rely on.