Package software for any distribution with upt

In this talk, we will introduce the Universal Packaging Tool (upt), a modular tool meant to help packagers in their daily tasks. We will show how it is an improvement over similar existing tools, which upt means to replace. This will be especially interesting for distribution developers that have had to deal with upstream platforms such as PyPI, CPAN or RubyGems.

Nowadays, most languages come with a package manager (such as pip or gem) that can install packages from an upstream package archive (such as pypi.org or rubygems.org). Traditional distributions (such as Debian, Fedora or OpenBSD) still package these same pieces of software, making them available through their own package manager (such as apt, dnf or the OpenBSD ports).

Over the years, multiple scripts have been written in order to automate part of the packaging process. Tools like pypi2deb (which turns a package from PyPI into a Debian package) or gem2rpm (which turns a package from RubyGems into an RPM package) make the work of packagers much easier. There are a lot of these tools, and they all behave a bit differently, expose a different interface to their users, and duplicate a lot of code.

In this presentation, I will introduce the Univesal Packaging Tool (upt), a modular program that allows packagers to create packages from any language-specific upstream archive to any GNU/Linux or *BSD distribution. We will show how this is done without any code duplication, and how any improvement to this tool will benefit developers from all distributions.