Skip to content

Packaging

Packaging assembles a built executable with the exact data, graphics, translations, shaders, libraries, licenses, launcher/support files, and platform metadata needed to run outside a developer checkout. A successful compile is not a successful package.

Authoritative entry points

Use the current release workflows, Makefile install/package targets, Gradle Android bundle tasks, and platform helpers under build-scripts/. build-scripts/windist.ps1 owns Windows distribution staging; Android Gradle owns APK/AAB contents; release jobs own final artifact names and uploads.

Reproducible inputs

Record source commit/tag, toolchain and dependency revisions, feature flags (curses/tiles, SDL2/SDL3, sound, localization, Lua), architecture/ABI, build type, translation artifact, shader artifact, and asset source. Never package arbitrary files from an unclean development directory.

Platform checks

  • Linux: inspect dynamic dependencies or the intended static set, data paths, executable bits, desktop/icon metadata, and archive extraction.
  • Windows: test outside the developer PATH, check DLL/PDB pairing and path case/encoding.
  • Android: check variant/ABI, manifest, assets/native libraries, version code/name, signature, install/upgrade, and launch on a device.

Smoke test

Extract or install into a clean location; launch; create/load a world; verify JSON/Mod loading, Lua API availability for the intended build, translation, fonts, tiles, sound, shader variants, save/write paths, and a clean shutdown. Report every feature omitted intentionally.

Security and licensing

Signing keys, passwords, service tokens, and local certificates remain outside tracked files and logs. Include required licenses/attributions and a source/commit reference. Scan the final artifact, not only the source checkout, for accidental credentials or local paths.

Artifact policy

Do not commit packages, build directories, symbols, or generated shader/translation outputs unless a checked generated-file policy says otherwise. Upload packages and matching symbols as CI/release artifacts with documented retention and restoration.