Files

3.1 KiB

Release process

The checklist for a release; release tags are the version number without "v" (1.0.0).

1. Prepare the version

  1. project(Playfin VERSION x.y.z ...) in CMakeLists.txt (the app's version and the package's APP_VER follow; version_test checks the app's).
  2. CHANGELOG.md: the version's section with its date.
  3. The PS4 dependency packages: when scripts/ps4/deps.txt changed, build them with scripts/ps4/build-deps.sh and upload the new ones to the deps release (see "Dependency packages" below). A changed recipe always gets a new pkgrel, so a package name never stands for two builds.
  4. Run the CI workflow (Actions → CI → Run workflow).

2. Check

  • ctest --preset linux-debug and ctest --preset linux-asan green; cmake --build --preset linux-fuzz and ctest --preset linux-fuzz (30 s per target) without findings.
  • scripts/build-ps4.sh: the imports, eboot and licences checks pass (a library linked without a licence line in resources/licenses/manifest.txt fails the build).
  • Licences: every component of resources/licenses/manifest.txt matches the versions in scripts/ps4/deps.txt and the pacbrew image; THIRD_PARTY_LICENSES agrees.
  • Security: docs/security.md reviewed for what changed since the last release (dependencies' versions against their published vulnerabilities).
  • On the console (back up saves and settings first, never cut the power during an install, prefer external storage): install the package, sign in, home, a library, a film (direct play) and an episode (subtitles, skip intro, next episode), a transcode, music in the background, a Live TV channel, settings (accent, language), the licences page. playfin.log without errors.

3. Publish

  1. Commit "build: Playfin x.y.z", tag x.y.z, push the tag.
  2. GitHub release "Playfin x.y.z" on the tag, with:
    • IV0001-PLFN00000_00-PLFN000000100000.pkg (this exact name: the README's download button links to releases/latest/download/ with it, and "latest" skips pre-releases);
    • the corresponding source, dist/playfin-x.y.z-sources.tar, made by scripts/ps4/source-archive.sh (run at the release's commit): Playfin, every recipe of scripts/ps4 with its patches and upstream sources, and the build image's FriBidi, zlib, libsamplerate and OpenOrbis toolchain (GPL-3.0: crt and link.x) with their PacBrew recipes, all checked against pinned checksums;
    • the changelog section as notes.

Dependency packages

scripts/build-ps4.sh installs the packages listed in scripts/ps4/deps.txt from build-deps/ when they are there, else from the deps release (PS4_DEPS_URL overrides it). To publish packages built locally:

scripts/ps4/build-deps.sh                      # or only the changed ones: scripts/ps4/build-deps.sh libass
gh release upload deps build-deps/ps4-openorbis-<name>-<version>-<pkgrel>-any.pkg.tar.gz -R LowganDev/PlayfinPS4

The release is a pre-release on the tag deps; it was created once with gh release create deps --prerelease --title "PS4 dependencies" --notes "..." -R LowganDev/PlayfinPS4.