Skip to content

Fix CI after release 0.9.18#1673

Open
ppigazzini wants to merge 4 commits intoc3d:stablefrom
ppigazzini:fix_ci
Open

Fix CI after release 0.9.18#1673
ppigazzini wants to merge 4 commits intoc3d:stablefrom
ppigazzini:fix_ci

Conversation

@ppigazzini
Copy link
Copy Markdown

@ppigazzini ppigazzini commented Apr 13, 2026

fix(ci): use libsystre in Windows packaging
MSYS2 now removes libgnurx from the install set because it conflicts with
libsystre, which is pulled in by the current Qt dependency graph.

Update the Windows workflow to install libsystre and copy libsystre-0.dll
and libtre-5.dll instead of the missing libgnurx-0.dll.

fix(wasm): bootstrap recorder and host tools correctly
Generate recorder/config.h in the GitHub wasm job before the emsdk build
so clean checkouts do not fail when recorder.c includes the header.

Force host tools to build with OUTPUT=./ so wasm does not place
ttf2font and decimize under nested wasm/ directories that the top-level
rules do not invoke.

fix(ci): package db50x Windows simulator from the correct path
The color Windows job signs and uploads debug/db50x.exe and debug/*
even though the build and windeployqt6 place the simulator files at the
workspace root.

Update the artifact and signing paths so the db50x archive includes the
executable, deployed DLLs, Qt plugin directories, and help files.

Use the same process for db48x.exe for consistency.

fix(ci): keep Android AABs under android/
Make the Android bundle path independent from the generic OUTPUT
variable, which defaults to the workspace root in CI.

Verify android/db48x.aab and android/db50x.aab before upload and
fail the artifact step when no AAB is present.

MSYS2 now removes libgnurx from the install set because it conflicts with
libsystre, which is pulled in by the current Qt dependency graph.

Update the Windows workflow to install libsystre and copy libsystre-0.dll
and libtre-5.dll instead of the missing libgnurx-0.dll.
Generate recorder/config.h in the GitHub wasm job before the emsdk build
so clean checkouts do not fail when recorder.c includes the header.

Force host tools to build with OUTPUT=./ so wasm does not place
ttf2font and decimize under nested wasm/ directories that the top-level
rules do not invoke.
Copilot AI review requested due to automatic review settings April 13, 2026 21:08
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates CI/build scripts to restore successful builds after release 0.9.18, addressing MSYS2 package changes on Windows and clean-checkout issues in the WASM workflow.

Changes:

  • Windows CI: switch from libgnurx to libsystre and package the correct runtime DLLs.
  • WASM CI: generate recorder/config.h before the Emscripten build so clean checkouts succeed.
  • Build system: force host tool builds to use a local OUTPUT=./ to avoid nested output paths during WASM builds.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

File Description
Makefile Ensures tools are built with OUTPUT=./ so host tools land where top-level rules expect them.
.github/workflows/build.yml Updates Windows MSYS2 deps + packaged DLLs, fixes db50x Windows artifact/signing paths, and adds a WASM pre-step to generate recorder config header.

Comment thread .github/workflows/build.yml
The color Windows job signs and uploads debug/db50x.exe and debug/*
even though the build and windeployqt6 place the simulator files at the
workspace root.

Update the artifact and signing paths so the db50x archive includes the
executable, deployed DLLs, Qt plugin directories, and help files.

Use the same process for db48x.exe for consistency.
Make the Android bundle path independent from the generic OUTPUT
variable, which defaults to the workspace root in CI.

Verify android/db48x.aab and android/db50x.aab before upload and
fail the artifact step when no AAB is present.
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated 4 comments.

- Runs only on pushes to main/master
- Depends on all other build jobs
- Creates `.tar.gz` archives of firmware builds
- Runs only for version-tag pushes
Copy link

Copilot AI Apr 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The README says build-release-package “runs only for version-tag pushes”, but in build.yml that job currently runs on branch pushes (stable/dev) and does not run on tag pushes. Please align this documentation with the actual workflow trigger/if: condition to avoid misleading maintainers.

Suggested change
- Runs only for version-tag pushes
- Runs for `stable`/`dev` branch pushes (not for version-tag pushes)

Copilot uses AI. Check for mistakes.
Comment thread Makefile
Comment on lines +608 to +609
BUILT_AAB="$$(find "$$OUTDIR" -type f -name '*.aab' | sort | tail -1)"; \
[ -n "$$BUILT_AAB" ] && cp "$$BUILT_AAB" "$$AAB"; \
Copy link

Copilot AI Apr 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The fallback that copies the “latest” *.aab from OUTDIR can select the wrong bundle if multiple AABs exist under the same ANDROID_OUTPUT_DIR (e.g., after building both db48x and db50x in the same tree). Consider constraining the find to bundles matching $(NAME) (or the expected package/app name) and failing if there isn’t an unambiguous match, rather than sort | tail -1.

Suggested change
BUILT_AAB="$$(find "$$OUTDIR" -type f -name '*.aab' | sort | tail -1)"; \
[ -n "$$BUILT_AAB" ] && cp "$$BUILT_AAB" "$$AAB"; \
BUILT_AABS="$$(find "$$OUTDIR" -type f -name '$(NAME)*.aab' -print)"; \
BUILT_AAB_COUNT="$$(printf '%s\n' "$$BUILT_AABS" | sed '/^$$/d' | wc -l | tr -d '[:space:]')"; \
if [ "$$BUILT_AAB_COUNT" = "1" ]; then \
cp "$$BUILT_AABS" "$$AAB"; \
else \
echo "Expected exactly one $(NAME) Android App Bundle in $$OUTDIR, found $$BUILT_AAB_COUNT." >&2; \
if [ "$$BUILT_AAB_COUNT" != "0" ]; then \
printf '%s\n' "$$BUILT_AABS" >&2; \
fi; \
exit 1; \
fi; \

Copilot uses AI. Check for mistakes.
run: |
echo "${{ github.run_number }}" > .build_id
mingw32-make sim
mingw32-make debug-sim
Copy link

Copilot AI Apr 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mingw32-make debug-sim does not appear to be a valid top-level make target in this repo (the Makefile documents/implements sim-<target> e.g. sim-debug). As-is, this job likely fails with “No rule to make target 'debug-sim'”. Use the existing target naming convention (e.g. mingw32-make sim-debug) or add a corresponding alias target in the Makefile.

Suggested change
mingw32-make debug-sim
mingw32-make sim-debug

Copilot uses AI. Check for mistakes.
run: |
echo "${{ github.run_number }}" > .build_id
mingw32-make color-dm32-sim
mingw32-make debug-color-dm32-sim
Copy link

Copilot AI Apr 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mingw32-make debug-color-dm32-sim does not match the Makefile’s target composition rules (which build variants via prefixes like color-/dm32- and suffixes like -debug, e.g. color-dm32-sim-debug). As written, this is likely an invalid target and will fail the Windows color simulator job.

Suggested change
mingw32-make debug-color-dm32-sim
mingw32-make color-dm32-sim-debug

Copilot uses AI. Check for mistakes.
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