Releases
Releases
Guitar Prometheus ships as a portable distributable for macOS and Windows. This document covers the release scripts, what they produce, and the manual smoke-test before publishing.
Build scripts
| Script | Host | Output |
|---|---|---|
scripts/build-release.sh | macOS / Linux | DMG (macOS) or tarball (Linux) under build/ |
scripts/build-release.ps1 | Windows | ZIP of the extracted app folder under build/ |
Both scripts:
- Configure the build with
cmake -B build -S . -DCMAKE_BUILD_TYPE=Release. - Build the
GuitarPrometheustarget. - Run CPack with the platform’s default generator (
DragNDropon macOS,ZIPon Windows,TGZon Linux).
What ships in the bundle
- The compiled
.app(macOS) or.exeplus runtime DLLs (Windows). resources/profiles/vst-presets/— bundled VST profile JSONs (Odin III, etc.).resources/schema/profile-v1.schema.json— the on-disk profile schema.
The macOS DMG is a slim, .app-only layout — install(DIRECTORY)
copies just the JUCE bundle into the staged DragNDrop tree, so the
resulting DMG carries no duplicated CMake bookkeeping or CLI shims.
The Windows ZIP is portable: the executable looks for a sibling
profiles/ directory rather than %AppData%. macOS uses
~/Library/Application Support/Guitar Prometheus (see
Util::getPersistenceRoot()).
Release builds are produced with GP_ENABLE_SCORE_VIEWER=OFF (the
default). The Phase 13 Verovio-based score viewer is feature-flagged
out pending the rendering fixes tracked in the
Wishlist. Flip the flag on for
local development only — releases do not ship the panel.
Convenience output: release/
Every successful build populates a release/ directory at the repo root
with symlinks to the latest artefacts. After cmake --build build you
get release/Guitar Prometheus.app (macOS POST_BUILD step). After
scripts/build-release.sh runs cpack, the resulting .dmg / .zip /
.tar.gz gets symlinked alongside.
The directory is .gitignored and stable across builds — it’s a fixed
entry point for opening / inspecting the latest output without
remembering the deep build/GuitarPrometheus_artefacts/Release/… path.
scripts/clean.sh wipes release/ along with build/, dist/, and
the generated icon artefacts. Use it when you want a guaranteed-clean
starting state.
scripts/generate-icons.sh is the icon-pipeline script CMake invokes at
configure time; you can run it manually if you’ve edited the SVG source
and want to regenerate the PNG / .icns outside a full build.
Smoke-test before publishing
After running the release script, verify on each target platform:
- The archive extracts cleanly.
- The app launches without missing-library errors.
- File → New Project… accepts a
.musicxml, a.gp, and a.gpxsource. Each should produce a usable Score with the unknown-techniques banner clean for the Odin techniques fixture. - The profile editor opens, lets you create a new profile, saves it, and the file lands in the platform’s persistence directory.
- File → Export MIDI… writes a
.midwhose tempo and keyswitches match the configured profile.
Signing & notarisation (deferred)
Neither script signs or notarises the output. Production releases will need:
- macOS: Developer ID Application certificate +
codesign+ notarisation vianotarytool. - Windows: Authenticode code-signing certificate (
signtool sign /n …).
Both are external-input items — see PROJECT_CONTEXT.md for status.
CPack generators
Configured in CMakeLists.txt:
- macOS:
set(CPACK_GENERATOR DragNDrop) - Windows:
set(CPACK_GENERATOR ZIP)(portable mode) - Linux:
set(CPACK_GENERATOR TGZ)(best-effort; primary platforms are macOS and Windows)
To override at config time:
cmake -B build -S . -DCPACK_GENERATOR=TGZcpack --config build/CPackConfig.cmake