Conversation
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.
There was a problem hiding this comment.
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
libgnurxtolibsystreand package the correct runtime DLLs. - WASM CI: generate
recorder/config.hbefore 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. |
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.
| - 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 |
There was a problem hiding this comment.
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.
| - Runs only for version-tag pushes | |
| - Runs for `stable`/`dev` branch pushes (not for version-tag pushes) |
| BUILT_AAB="$$(find "$$OUTDIR" -type f -name '*.aab' | sort | tail -1)"; \ | ||
| [ -n "$$BUILT_AAB" ] && cp "$$BUILT_AAB" "$$AAB"; \ |
There was a problem hiding this comment.
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.
| 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; \ |
| run: | | ||
| echo "${{ github.run_number }}" > .build_id | ||
| mingw32-make sim | ||
| mingw32-make debug-sim |
There was a problem hiding this comment.
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.
| mingw32-make debug-sim | |
| mingw32-make sim-debug |
| run: | | ||
| echo "${{ github.run_number }}" > .build_id | ||
| mingw32-make color-dm32-sim | ||
| mingw32-make debug-color-dm32-sim |
There was a problem hiding this comment.
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.
| mingw32-make debug-color-dm32-sim | |
| mingw32-make color-dm32-sim-debug |
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.