13.14. Reprepro setup#

We use a Debian-style workflow with testing and stable in the same reprepro setup. This chapter is not about the nightly distribution. The deb.taler.net site is pointed to a directory of the taler-packaging user where under www/apt we have a subdirectory per supported distribution, right now we have one for Debian and one for Ubuntu.

Systems should use:

  • deb https://deb.taler.net/apt/debian bookworm main for stable

  • deb https://deb.taler.net/apt/debian bookworm-testing main for testing

or equivalent for Ubuntu noble.

13.14.1. Distribution file structure#

In conf/distributions we list the supported distributions, each with a testing and a stable suite:

conf/distributions#
Origin: GNU Taler
Label: Taler
Suite: testing
Codename: bookworm-testing
Architectures: amd64
Components: main
Description: GNU Taler testing packages for Debian Bookworm
SignWith: your-gpg-key-id

Origin: GNU Taler
Label: Taler
Suite: stable
Codename: bookworm
Architectures: amd64
Components: main
Description: GNU Taler stable packages for Debian Bookworm
SignWith: your-gpg-key-id
Pull: bookworm-testing-to-stable

The pull rule is elaborated in conf/pulls, and it defines how packages move from testing to stable. We basically simply move everything at once (after testing it!):

conf/pulls#
Name: bookworm-testing-to-stable
From: bookworm-testing
Components: main
Architectures: amd64
UDebComponents:
FilterFormula: Package (% package-name-pattern )

If we in the future wanted to only pull packages that have been in testing for at least 10 days, we could use:

FilterFormula: Package (% *), Version (% *), $Date (>= now - 10 days)

The conf/options file used is mainly giving the path:

conf/options#
verbose
basedir /home/taler-packaging/www/apt/debian
ask-passphrase

13.14.2. Shell scripts#

We install various simple shell scripts in the taler-packaging HOME directory to call reprepro. They are maintained in the taler-deployment.git under packaging/ng/server-side.

The following shell scripts are used to manage the system:

  • include-$DISTRO-$RELEASE.sh imports new packages from the respective origin directory into testing

  • promote-$DISTRO-$RELEASE.sh promotes packages from testing to stable for the respective distribution

  • show-$DISTRO-$RELEASE.sh shows all packages from the respective distribution

  • export-$DISTRO-$RELEASE.sh scripts export the respective distributions (this is mostly useful after errors)