Fossil Debian Packaging

Fossil Debian Packaging
Login

Fossil Debian Packaging

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:

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.


  1. ^ Run apt install build-essential devscripts debhelper dh-shell-completions libssl-dev tcl zlib1g-dev to do all of these.
  2. ^ The fossil-scm.org repository is actually configured with manifest set to rtu, which generates a manifest.tags file 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.