Story: Build and packaging
Table of Contents
This page documents a story in Sprint 04. It captures the goal, current status, acceptance criteria, and the tasks that compose it.
Goal
Get the Windows package installable on a real Windows machine, fix the local-time / shutdown-crash regressions surfaced along the way, and clear up assets packaging.
Status
| Field | Value |
|---|---|
| State | DONE |
| Parent sprint | Sprint 04 |
| Now | Completed 2025-11-20. |
| Waiting on | None. |
| Next | None. |
| Last touched | 2025-11-20 |
Continued in: Build platform follow-up (sprint 07) — WSL setup, prebuilt Qt switch, Windows clang build breaks.
Acceptance
- Windows package installs and runs (console end-to-end).
- Windows clang build compiles
-Werrorclean (nolocaltimedeprecation). - Qt UI shuts down without crash.
Tasks
| Task | State | Start | End | Description |
|---|---|---|---|---|
| Install Windows package on Windows machine | DONE | 2025-11-20 | 2025-11-20 | Verify the Windows package produced by CI installs and runs end-to-end on a real Windows machine. |
| Fix broken Windows build due to local time | DONE | 2025-11-20 | 2025-11-20 | Resolve a Windows-only build break triggered by a local-time API mismatch. |
| Resolve crash on shutdown | DONE | 2025-11-20 | 2025-11-20 | Diagnose and fix a crash that occurs on application shutdown. |
Decisions
- Adopt
X_VCPKG_APPLOCAL_DEPS_INSTALL=true - copies Qt and other DLLs into the bin folder during install; closes the bulk of the Windows runtime-dependency failures.
safe_localtimehelper- Windows uses
localtime_s, the rest uselocaltime_r. Behind one function so call sites stay simple. - Sole-ownership rule for detachable MDI widgets
- fixes the
shutdown crash; widgets stay parent-less,
MainWindowowns them,QObject::destroyedcleans the lookup maps.
Out of scope
- macOS code signing.
- Windows installer beyond the basic vcpkg-driven packaging.
See also
- CMake setup — preset menu, output directory layout.
- Build stabilisation (sprint 02) / Build stabilisation 3 (sprint
- — predecessor build stories.
- ores.qt — the Qt component where the shutdown crash lived.