src/swipl-devel/doc/Release.md

Creating a SWI-Prolog release

This document summarises the steps and prerequisites to build a SWI-Prolog release. Most of the scripts are in the scripts directory. Many of these scripts contain paths and addresses that relate to how things are setup on my development machines.

Machines

Releases are currently build using a Linux machine running Ubuntu 20.04 and a Mac running MacOS 10.15. For a full release you need a Linux machine and a Mac. With minor adjustments, any Linux distro will do, but the hardware must be amd64 to be able to run Wine for building the Windows releases.

Preparing the build machines

This only needs to be done once. One must regularly check Windows and MacOS dependencies for new releases, in particular for OpenSSL.

Linux machine

Preparing building Windows releases

Mac

MacOS universal binaries

We assume the build is done on an M1 system.

Note that ideally, one could build the dependencies as universal binaries, but OpenSSL does not build that way and pcre2 does not include JIT support for x86_64 this way. In general, libraries that include assembly or use CPU detection may not work at all or be slower when built as a universal binary.

Accounts, etc

Preparing a release (on Linux, but could be adopted for Mac)

Build the releases

Uploading the releases

Updating the website

Updating the Linux snaps

Updating Macports

Testing the Macports version

There is typically not that much need to verify the whole thing also builds under Macports if you already built and tested the current version on the Mac. Still, if there are problems proceed as follows:

Now, to test your version run these commands. The first creates a source tar archive and the second publishes this in the local Macports distfiles store and updates the version and hashes of the Portfile.

./scripts/make-src-tape --tag=HEAD
./scripts/update-macports

Now you can run

port lint swi-prolog-devel
sudo port test swi-prolog-devel

Creating a PR

Go back to the Linux machine and run

./scripts/update-macports

This creates a branch with the version (say 8.3.1) in ~/src/macports-ports with the correct version and hashes. This is why you need to run this on the Linux machine as you have uploaded the tar archive from this machine. The one on the Mac isn't the same as time stamps vary. Now

Updating the official Docker image

Preparation

Update docker-swipl

Update official-images

Creating the Announce post

Create the basic ChangeLog, replacing the two releases (previous and new) and edit the result, highlighting the important aspects:

mkdir -p ReleaseNotes
./scripts/mkchangelog --nodate 8.3.0 > ReleaseNotes/RELNOTES-8.3.1
edit ReleaseNotes/RELNOTES-8.3.1

Finally, copy/paste into a new release topic in Discourse.



Try the rswipl package in your browser

Any scripts or data that you put into this service are public.

rswipl documentation built on April 3, 2025, 5:53 p.m.