Skip to content

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

ScriptHostOutput
scripts/build-release.shmacOS / LinuxDMG (macOS) or tarball (Linux) under build/
scripts/build-release.ps1WindowsZIP of the extracted app folder under build/

Both scripts:

  1. Configure the build with cmake -B build -S . -DCMAKE_BUILD_TYPE=Release.
  2. Build the GuitarPrometheus target.
  3. Run CPack with the platform’s default generator (DragNDrop on macOS, ZIP on Windows, TGZ on Linux).

What ships in the bundle

  • The compiled .app (macOS) or .exe plus 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:

  1. The archive extracts cleanly.
  2. The app launches without missing-library errors.
  3. File → New Project… accepts a .musicxml, a .gp, and a .gpx source. Each should produce a usable Score with the unknown-techniques banner clean for the Odin techniques fixture.
  4. The profile editor opens, lets you create a new profile, saves it, and the file lands in the platform’s persistence directory.
  5. File → Export MIDI… writes a .mid whose 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 via notarytool.
  • 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:

Terminal window
cmake -B build -S . -DCPACK_GENERATOR=TGZ
cpack --config build/CPackConfig.cmake