Fossil: Release Build How-To
Fossil SCM
Home
Timeline
Branches
Tags
Tickets
Wiki
Notes on how Fossil deliverables are built and uploaded
All builds 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.
As of 2022-01-05, OpenSSL 3.0.1 is used for all builds.
After-Release Checklist (This section is to jog the memory of the release manager)
Verify that all items on the Before-Release Checklist
have been run
Update the version number and related links on the homepage.
fossil uv edit download.js
Edit the "releases" variable in the javascript
to add the new release number and title and various
hyperlinks. Perhaps also remove older releases.
Remove obsolete build products: fossil uv rm --glob $PATTERN
fossil uv edit latest-release.md
Update the latest result tarball link
fossil uv sync
Linux
Set up in-tree OpenSSL:
Download the OpenSSL tarball and unpack it into compat/openssl
cd
into the compat/openssl
directory
./config no-ssl3 no-weak-ssl-ciphers no-shared no-threads --openssldir=/usr/lib/ssl
CFLAGS=-Os make -e
./configure --with-openssl=tree --disable-fusefs
If the Makefile contains a reference to -lpthread
, remove it.
CFLAGS="-Os" make -e clean 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
For x64 builds, use the circa 2010 Macbook Air running MacOS 10.13.6. For arm64 builds
use the 2020 miniMac running MacOS 12.0.1.
Set up in-tree OpenSSL:
Download the OpenSSL tarball and unpack it into compat/openssl
cd
into the compat/openssl
directory
./config no-ssl3 no-weak-ssl-ciphers no-shared no-threads no-asm --openssldir=/etc/ssl
CFLAGS=-Os make -e
./configure --with-openssl=tree
CFLAGS=-Os make -e clean fossil
Verify no shared library dependencies using: otool -L ./fossil
strip fossil
Optional: codesign -s drh@sqlite.org fossil
then verify the signature using
codesign -d -v fossil
tar czf fossil-mac-ARCH-VERSION.tar.gz fossil
where ARCH is either x64 or arm64.
fossil uv add fossil-mac-ARCH-VERSION.tar.gz
fossil uv sync
Raspberry Pi
Set up in-tree OpenSSL:
Download the OpenSSL tarball and unpack it into compat/openssl
cd
into the compat/openssl
directory
./config no-ssl3 no-weak-ssl-ciphers no-shared no-threads --openssldir=/usr/lib/ssl
CFLAGS=-Os make
./configure --with-openssl=tree
CFLAGS="-Os" make -e clean fossil && 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 "x32 Native Tools Command Prompt"
Set up in-tree OpenSSL:
Install Strawberry-Perl if it is not already installed
Download the OpenSSL tarball and unpack under compat/
cd
into the OpenSSL source directory
C:/Strawberry/perl/bin/perl Configure VC-WIN32 no-asm no-ssl3 no-weak-ssl-ciphers no-shared /D_WIN32_WINNT=0x0501
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.
nmake /f Makefile.msc FOSSIL_ENABLE_SSL=1 FOSSIL_ENABLE_WINXP=1 OPTIMIZATIONS=4 clean fossil.exe
Verify dependencies: dumpbin /dependents fossil.exe
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"
Set up in-tree OpenSSL:
Install Strawberry-Perl if it is not already installed
Download the OpenSSL tarball and unpack under compat/
cd
into the OpenSSL source directory
C:/Strawberry/perl/bin/perl Configure VC-WIN64A no-asm no-ssl3 no-weak-ssl-ciphers no-shared
nmake /f makefile
cd
into the win/
subfolder of the Fossil source tree.
nmake /f Makefile.msc FOSSIL_ENABLE_SSL=1 OPTIMIZATIONS=4 clean fossil.exe
Verify dependencies: dumpbin /dependents fossil.exe
zip fossil-w64-$VERSION.zip fossil.exe
fossil uv add fossil-w64-$VERSION.zip
fossil uv sync
This page was generated in about
0.006s by
Fossil 2.19 [b14b0f2e56] 2022-03-04 08:14:38