This repository contains packaging files to turn Fossil check-ins into installable Debian packages, especially useful if you have many Debian machines to manage and want to update them all to the Fossil trunk (or even a newer release than Debian provides). It is not intended to be a replacement for Debian's own package, and the versioning is crafted specifically so that Debian's packages can upgrade from these custom-made packages.
Building
To build a local Debian package, you are required to have build-essential, devscripts, debhelper, dh-shell-completions, libssl-dev, tcl, and zlib1g-dev installed on a Debian system.1 This needs not be the same system you install the package on. You will also need a copy of the Fossil source code. You can obtain it via a repository clone and check-out, a source tarball, or by running fossil get https://fossil-scm.org/home. The manifest and manifest.uuid files must be present, whichever method you use. If they do not exist in a local check-out, run fossil settings manifest on.2
With the required Debian packages and the Fossil source code, checkout this repository or obtain the files via fossil-debian-packaging.tar.gz.
Run make FOSSIL_SOURCES=/path/to/fossil/sources to automatically build Fossil and generate an installable Debian package. The resulting package should be in the parent directory of $FOSSIL_SOURCES. An .env file with FOSSIL_SOURCES=/path/to/fossil/sources may also be used to allow for a plain make invocation.
Package versioning
The versioning is chosen specifically so that it should provide a newer version than Debian's own, but these packages can still be upgraded to Debian's version if a new Debian release provides a suitable candidate. As an example list, from oldest to newest:
- 1:2.26-2
- 1:2.29~20260413.121212-cca8cc15f2~bpo13+1
- 1:2.29-1
Here, 1:2.26-2 is the version provided by Debian 13. 1:2.29~20260413.121212-cca8cc15f2~bpo13+1 is a locally-created package with a version field signifying what it was built from, and 1:2.29-1 is a version from Debian that will qualify as newer than the interim package.
Notice the use of the ~ character. In Debian versioning, it always precedes the - character. It is common practice to increase the version number in Fossil's trunk immediately following a stable release. Where Fossil 2.28 released on 2026-03-11, trunk subsequently received a version bump to 2.29 on 2026-03-12. This makes for a reliable mechanism for making packages from trunk that will always be newer than what Debian provides on the same day.
Similar in fashion to Debian backports, the Debian version and a build number are appended. This allows, for instance, an upgrade from Debian 12 to 13 to also upgrade a same-versioned Fossil package for the newer operating system. A build number is also used so that packaging changes and/or rebuilds can be accommodated within the same Fossil version.
This also causes a build for 2.28 to result in a package version such as 1:2.28~20260311.113146-52445a27f1~bpo13+1. Even though it coincides with the exact upstream stable release, Debian's own 2.28 package will qualify as an upgrade if apt sees it in a Debian repository.
- ^
Run
apt install build-essential devscripts debhelper dh-shell-completions libssl-dev tcl zlib1g-devto do all of these. - ^
The fossil-scm.org repository is actually configured with
manifestset tortu, which generates amanifest.tagsfile as well. This file is required in SQLite's build process but is unused by Fossil. It nevertheless shows up in generated tarballs/zips/fossil get. There is no harm in its presence, nor its absence.