Preparing A Release - prismmodelchecker/prism GitHub Wiki
These notes are primarily intended for reference by the PRISM development team when building and distributing public releases.
Preliminary steps for public releases
1. Final checks/changes to code
- Make sure all local changes are
git pushed and that GitHub CI passed - Make sure all commits are documented in
CHANGELOG.txt - Make sure
prism -helpis up-to-date with all commits
2. Update manual
- Document changes or new features (on local copy)
- Set version number on Main/Welcome and Main/AllOnOnePage
- Upload manual from local copy
- Download local copy (
make doc) and commit/push (git add ../manual/ && git commit -m 'Update manual.' && git push). NB: ChangePRISM_MANUAL_WEBSITEin theMakefileto download from the local copy, but doing it from the live one seems to work slightly better, even if the new manual goes live slightly too early.
3. Update version info
- Add version number and release date to
CHANGELOG.txt - Set new version number in
prism/Version.java: e.g.src/scripts/bump_version.sh 4.11 git commit -a -m 'Version info.' && git push
Publishing a public release
1. Create GitHub release
- Create/push new tag, e.g.,
git tag v3.2.4 && git push origin v3.2.4 - Check progress of triggered build on PRISM GitHub actions (or PRISM-games GitHub actions)
- Check for creation of PRISM release (or PRISM-games release)
- Paste bulleted list from
CHANGELOG.txtinto new release description field - Remove release draft flag
2. Update source/binary + web files on web site
-
In both local and remote
prism-www/dldirectory, e.g.:prism-download.sh prism 4.10.1prism-download.sh prism-games 3.2.4
-
Update
download.phppage
Post release
- Set new version number in
prism/Version.java: e.g.src/scripts/bump_version.sh 4.12 dev git commit src/prism/Version.java -m 'Version info (dev).'
Optional extra testing of GitHub-built files
- Source distribution (Mac/Linux):
TOOL=prism-games
VERSION=3.2.2
wget https://github.com/prismmodelchecker/${TOOL}/releases/download/v${VERSION}/${TOOL}-${VERSION}-src.tar.gz
tar xfz ${TOOL}-${VERSION}-src.tar.gz
cd ${TOOL}-${VERSION}-src/prism
make && make tests
- Mac binary (local):
TOOL=prism-games
VERSION=3.2.2
DISTR=mac64-arm
wget https://github.com/prismmodelchecker/${TOOL}/releases/download/v${VERSION}/${TOOL}-${VERSION}-${DISTR}.tar.gz
tar xfz ${TOOL}-${VERSION}-${DISTR}.tar.gz
cd ${TOOL}-${VERSION}-${DISTR}
./install.sh
xattr -d com.apple.quarantine lib/*lib
etc/tests/run.sh
- Linux binary (clean VM):
TOOL=prism-games
VERSION=3.2.2
DISTR=linux64-x86
sudo apt-get -y update && sudo apt -y install default-jdk
wget https://github.com/prismmodelchecker/${TOOL}/releases/download/v${VERSION}/${TOOL}-${VERSION}-${DISTR}.tar.gz
tar xfz ${TOOL}-${VERSION}-${DISTR}.tar.gz
cd ${TOOL}-${VERSION}-${DISTR}
./install.sh
etc/tests/run.sh
Old notes on manual distribution building
Building a source distribution
A source distribution is built from a local git checkout.
From the prism directory, where PRISM is usually compiled, run:
make release_source
This assembles all the files needed into, for example, release/prism-4.10-src.tar.gz. This is done by taking an archive of the local master branch on git. You can change the branch if you wish, e.g.:
make release_source BRANCH=HEAD
make release_source BRANCH=newfeature
By default, the version number (4.10 above) is automatically extracted from prism/Version.java, but can be overridden if required:
make release_source VERSION=4.10.1
make release_source BRANCH=newfeature VERSION=4.10.newfeature
Building a binary distribution
A binary distribution is built from a local copy of the source,
either an unzipped source release or a local git checkout.
From the prism directory, where PRISM is usually, compiled, run:
make release
This makes sure that PRISM is compiled afresh, builds prism.jar containing all the Java class files, and assembles all the files needed into, for example, release/prism-4.10-mac64-arm.tar.gz. It's advisable to also run at least a few tests to make sure that the compiled code works properly:
etc/tests/run.sh
If building the release on a clean VM, the prism-install-* scripts in etc/scripts install everything that is needed and (optionally) compile the master branch:
Building a binary distribution (PRISM)
On (Unbuntu) Linux:
/bin/bash <(curl -fsSL https://raw.githubusercontent.com/prismmodelchecker/prism/master/prism/etc/scripts/prism-install-ubuntu) --nobuild
On Windows (in a Command Prompt and Cygwin shell respectively:
"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -Command "wget -Uri https://raw.githubusercontent.com/prismmodelchecker/prism/master/prism/etc/scripts/prism-install-windows.bat -Outfile prism-install-windows.bat" && cmd /K .\prism-install-windows.bat
/bin/bash <(curl -fsSL https://raw.githubusercontent.com/prismmodelchecker/prism/master/prism/etc/scripts/prism-install-cygwin) --nobuild
And then (all OSs):
export VERSION=X.X
wget https://www.prismmodelchecker.org/dl/prism-$VERSION-src.tar.gz
tar xfz prism-$VERSION-src.tar.gz
cd prism-$VERSION-src/prism && make release && etc/tests/run.sh
Building a binary distribution (PRISM-games)
On (Unbuntu) Linux:
/bin/bash <(curl -fsSL https://raw.githubusercontent.com/prismmodelchecker/prism-games/master/prism/etc/scripts/prism-install-ubuntu) --nobuild
On Windows (in a Command Prompt and Cygwin shell respectively:
"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -Command "wget -Uri https://raw.githubusercontent.com/prismmodelchecker/prism-games/master/prism/etc/scripts/prism-install-windows.bat -Outfile prism-install-windows.bat" && cmd /K .\prism-install-windows.bat
/bin/bash <(curl -fsSL https://raw.githubusercontent.com/prismmodelchecker/prism-games/master/prism/etc/scripts/prism-install-cygwin) --nobuild
And then (all OSs):
export VERSION=X.X
wget https://www.prismmodelchecker.org/dl/prism-games-$VERSION-src.tar.gz
tar xfz prism-games-$VERSION-src.tar.gz
cd prism-games-$VERSION-src/prism && make release && etc/tests/run.sh
Building a binary distribution (customisations)
By default, the version number (4.8 above) is automatically extracted from prism/Version.java, but can be overridden if required:
make release VERSION=4.8.1
The platform name is derived automatically from the current build, but can be changed. For example, to cross-compile for (older) Intel macOS on a (newer) Arm-based Mac, use:
make release ARCH=x86_64