Skip to content

ci/tests: fix CLANG64 static linking, the AppImage FUSE dependency, Windows add-on command lines, and the OSC type tags test - #2330

Closed
jcelerier wants to merge 4 commits into
masterfrom
fix/clang64-static-test-build
Closed

jcelerier wants to merge 4 commits into
masterfrom
fix/clang64-static-test-build

Conversation

@jcelerier

@jcelerier jcelerier commented Oct 9, 2026 •

Copy link
Copy Markdown
Member

Changes

  • Resolve application-test static plug-in links after add-on discovery, and use that path for the state tests and ObjectGallery.
  • Make the generated static plug-in initializer inline, and export/link ImportedUi rather than compiling duplicate implementation and moc definitions into its test.
  • Share production resource initialization with minimal application fixtures; register process resources once and fonts for each QApplication lifetime, using QPointer to handle address reuse.
  • Fix Windows near/far/Polygon collisions, Winsock socket handling, glibc-only heap perturbation calls and portable aligned allocation in affected tests.
  • Document the CLANG64 test environment and static debug-build storage requirements.

Verification

  • Full default build passed in the MSYS2 CLANG64 shell after rebasing onto upstream master and its updated Avendish pin.
  • Focused CTest run: 21 passed, 3 graphics executables skipped under the offscreen platform. Native Windows reruns of those graphics executables passed; one Linux-specific high-DPI subprocess case remained skipped because /proc/self/exe is unavailable.
  • After the upstream update, all 9 selected tracking/application-fixture regressions passed.
  • Rebuilt score executed a startup script requesting exit code 17 and returned 17; ObjectGallery --list completed successfully.

Cross-repository context

Scope

Only the 20 session-modified tracked files are included. No unrelated untracked files or dependency edits are included. The machine-local test-PDB suppression policy and generated build artifacts are deliberately excluded; repository debug defaults and enabled tests are unchanged.


Also here: the OSC type tags test, recovered from #2322

#2322 was closed because it pinned
3rdparty/libossia to the pull request branch of ossia/libossia#957 rather than
to a commit on libossia's master, so it could never be merged. The test itself
was fine and was the only thing left of that work, so it rides here rather than
in a PR of its own.

tests/integration/MapperDatagramProtocolsTest.cpp gains one case for the
three-argument osc(address, values, typetags): the /spat/serv shape with
"sifffff", one argument per supported tag, a message with no tag string at
all, and a tag string shorter than the argument list. It asserts the exact
datagram bytes against hand-written OSC fixtures — address and type tag strings
padded to four bytes, network-order IEEE-754 payloads — so nothing libossia
encodes is its own oracle, and it reads the tag string back out of the packet
with its own padding arithmetic.

The libossia pin moves from 15a6c68801 to d94955801, which is that change on
libossia master. It deliberately stops there instead of at master's head: the
three geometry commits after it belong with the score-side shading work in
#2326, and one of them changes the default
ambient colour from 0.03 to 0, which has no business landing through a test PR.

Not built locally — the integration tests are not configured in the build tree
I have here, so this one case is on CI to compile and run.


And: the AppImage build needs no FUSE whichever workflow calls it

This is what sat-mtl/livepose#83 one failing job was
dying of, and the same hazard sits under every tool repo's packaging job.

ci/appimage.build.sh runs appimagetool, which is itself an AppImage, so it
needs either FUSE or APPIMAGE_EXTRACT_AND_RUN. FUSE is unavailable under
rootless docker on the self-hosted host — which is exactly why appimage.yml
sets the variable on the job, and why appimage.deps.sh says in so many words
that libfuse2 is therefore not required. The tool repositories reach the same
script through ossia/actions/custom-score-build, which does not set it, so
they die at the one place that depends on it:

/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.

The real fix is in the action — ossia/actions#29 —
because the tool repos pin ossia/actions/...@master and build score from
score's master, so a change living only here reaches none of them until this
PR merges. That PR also covers package-custom-app, which runs
tools/create-app-linux.sh for the app's own AppImage: livepose never got
that far, so fixing only score's script would have moved the failure instead of
removing it. The ${VAR:-1} default kept here is for anyone running the script
by hand on a machine without FUSE.

Reproduced and verified locally — appimagetool on a minimal AppDir with no
fusermount on $PATH:

exit result
variable unset 127 open dir error: No such file or directory, no AppImage — the CI failure, verbatim
APPIMAGE_EXTRACT_AND_RUN=1 0 AppImage written (948 KB)

@coveralls

coveralls commented Oct 10, 2026 •

Copy link
Copy Markdown

Coverage Status

Coverage is 47.78% — fix/clang64-static-test-build into master. No base build found for master.

jcelerier added a commit that referenced this pull request Oct 11, 2026
… defines

Same fix as the other tests in #2330: on Windows <windef.h> defines near
as an empty macro, so 'bool near(...)' does not compile.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JeL19ofVgPe9u9q7J1V9ex
@jcelerier
jcelerier force-pushed the fix/clang64-static-test-build branch from f9304c9 to 4d0ef49 Compare October 11, 2026 13:15
@jcelerier jcelerier changed the title tests: fix CLANG64 static linking, resources and portability ci/tests: fix CLANG64 static linking, the AppImage FUSE dependency, Windows add-on command lines, and the OSC type tags test Oct 11, 2026
@jcelerier
jcelerier force-pushed the fix/clang64-static-test-build branch from 9952563 to dee34b7 Compare October 11, 2026 16:00
@jcelerier
jcelerier force-pushed the fix/clang64-static-test-build branch from dee34b7 to 23abcfa Compare October 12, 2026 00:52
jcelerier and others added 3 commits October 11, 2026 20:55
An add-on built against the SDK compiles with -nostdinc, so every include
directory is spelled out on the command line; with the SDK's Qt paths that
overruns CreateProcess and ninja stops with "CreateProcess: The parameter is
incorrect". CMake 4.4 moved compile flags into a response file by default, but
the SDK ships 4.3, which does not.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019QYyvhRXvSMSRQPaq12Teq
Companion to the three-argument `osc(address, values, typetags)` that
libossia gained in ossia/libossia#957: every number a script put in an
OSC message went out as a float, so there was no way to send the int
source index SpatGRIS's /spat/serv grammar requires -- the shipped
Spatial Protocol Mapper emits it as "sffffff" with the index as
1.000000.

The fixture sends the /spat/serv shape with "sifffff", one argument per
supported tag, a message with no tag string at all, and a tag string
shorter than the argument list. The test asserts the exact datagram
bytes against hand-written OSC fixtures -- address and type tag strings
padded to four bytes, network-order IEEE-754 payloads -- so nothing
libossia encodes is its own oracle, and reads the type tag string back
out of the packet with its own four-byte-padding arithmetic.

The libossia pin moves to that commit on master, and stops there rather
than at master's head: the three geometry commits after it belong with
the score-side shading work, and one of them changes the default ambient
colour, which has no business landing through a test. The earlier
version of this test pinned the submodule to the pull request branch
instead, which is why it could not be merged.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019QYyvhRXvSMSRQPaq12Teq
`ci/appimage.build.sh` runs appimagetool, which is itself an AppImage, so
it needs either FUSE or APPIMAGE_EXTRACT_AND_RUN. FUSE is unavailable
under rootless docker on the self-hosted host, which is why
appimage.yml sets the variable on the job and appimage.deps.sh says in
so many words that libfuse2 is therefore not required.

The tool repositories reach the same script through
ossia/actions/custom-score-build, which did not set it, so every
packaging job that went that way died at the same place:

    /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.

That is fixed in the action itself, in ossia/actions#29, which is what
actually unblocks the tools -- they pin the action at @master. The
default here is for anyone running the script by hand on a machine
without FUSE, and `${VAR:-1}` leaves a caller that wants FUSE able to
ask for it.

Reproduced and checked locally by running appimagetool on an AppDir with
no fusermount on $PATH: unset, it exits 127 with the same "open dir
error" line; with the variable, exit 0 and the AppImage is written.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019QYyvhRXvSMSRQPaq12Teq
@jcelerier
jcelerier force-pushed the fix/clang64-static-test-build branch from 23abcfa to 09a5258 Compare October 12, 2026 00:55
@jcelerier

Copy link
Copy Markdown
Member Author

Merged into #2326 (gfx/shading-tiers) at 7f22521. libossia resolved to master 3e7ee8462e (same tree as c5d5ed307b). Closing in favour of #2326.

@jcelerier jcelerier closed this Oct 12, 2026
jcelerier added a commit that referenced this pull request Oct 13, 2026
… defines

Same fix as the other tests in #2330: on Windows <windef.h> defines near
as an empty macro, so 'bool near(...)' does not compile.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JeL19ofVgPe9u9q7J1V9ex
@jcelerier
jcelerier deleted the fix/clang64-static-test-build branch October 13, 2026 22:55
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.

2 participants