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 dpkg-dev, libssl-dev, and tcl installed on a Debian system. 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.1

With the required Debian packages and the Fossil source code, you will also need to obtain the files from this repository: fossil-debian-packaging.tar.gz

From these files, copy the debian/ directory into the Fossil source tree. You can use cp -r debian/ $FOSSIL_SOURCES to perform this task. From here, go into the root of the Fossil source tree:

$ debian/changelog.prepare
$ dpkg-buildpackage -uc -b

The debian/changelog.prepare script uses Fossil's manifest, manifest.uuid, and VERSION files to generate a version number for the resulting package to describe itself.

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~20260407.095825-0201a1e2cc 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.

This also causes a build for 2.28 to result in a package version of 1:2.28~20260311.113146-52445a27f1. 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. ^ 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.