Notes on how Fossil deliverables are built and uploaded
All builds are statically link against OpenSSL, which is a library that is
often missing from systems on which Fossil might be installed. By statically
linking with OpenSSL, the dependency on OpenSSL is omitted, making the
precompiled binaries more portable.
The latest version of OpenSSL is used for new builds.
As of 2024-11-06, OpenSSL 3.4.0 is being used. Use the
fossil version -v to find out which version of
OpenSSL your version of Fossil is linked against.
Pre-Release Checklist
If pikchr.c has been updated since the last release, be sure that its WASM
build is up-to-date, as documented in build.wiki.
The easiest approach is simply to see if both /finfo/extsrc/pikchr.c and
/finfo/extsrc/pikchr.wasm have the same checkin time. If the WASM build is out
of date, the /pikchrshow app will be using a different pikchr version than the rest of
fossil.
After-Release Checklist (This section is to jog the memory of the release manager)
If the Makefile contains a reference to -lpthread, remove it.
make clean && make -j8 CFLAGS=-Os fossil && strip fossil
strip fossil
Verify dependencies using "ldd ./fossil"
tar czf fossil-linux-x64-$VERSION.tar.gz fossil
fossil uv add fossil-linux-x64-$VERSION.tar.gz
fossil uv sync
Mac
Published Fossil builds use the lead developer's 2010 Macbook Air running MacOS 10.13.6 for x64
and the lead devloper's minimac running MacOS 12.0.1 for arm. Binaries are signed on the lead
developer's 2017 iMac. All that said, the following procedure should work on any Mac.
Build the in-tree OpenSSL library:
Download the OpenSSL tarball into $HOME/openssl
and unpack it into $HOME/openssl/openssl (or similar)
make clean && make -j2 fossil CFLAGS=-Os && strip fossil
tar czf fossil-pi-$VERSION.tar.gz fossil
fossil uv add fossil-pi-$VERSION.tar.gz
fossil uv sync
Windows 32-bit using MSVC
Run all of the following from a "x86 Native Tools Command Prompt"
Build the in-tree OpenSSL library:
Install Strawberry-Perl (or similar) if it is not already installed. Perl is needed to run the
OpenSSL configuration script prior to building OpenSSL from sources. Fossil itself does not use Perl.
Download the OpenSSL tarball and unpack under compat/openssl. Note that the OpenSSL tarball will
unpack into openssl-3.X.Y. You will need to rename that folder to just openssl.
The _WIN32_WINT definition on the perl Configure command, and the FOSSIL_ENABLE_WINXP=1 term on
the second nmake command below, are necessary in order for this build to work on older
WindowsXP machines. See forum thread 66f106195aaf289e.
nmake /f makefile
cd into the win/ subfolder of the Fossil source tree.
dumpbin /dependents fossil.exe ← check output to verify no unexpected dependencies
zip fossil-w32-$VERSION.zip fossil.exe
fossil uv add fossil-w32-$VERSION.zip
fossil uv sync
Windows 64-bit using MSVC
Run all of the following from a "x64 Native Tools Command Prompt"
Build the in-tree OpenSSL library:
Install Strawberry-Perl (or similar) if it is not already installed. Perl is needed to run the
OpenSSL configuration script prior to building OpenSSL from sources. Fossil itself does not use Perl.
Download the OpenSSL tarball and unpack under compat/openssl. Note that the OpenSSL tarball will
unpack into openssl-3.X.Y. You will need to rename that folder to just openssl.