Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Shipping to distros

Slides

Is packaging to distros still valuable these days? Yes, both to the ecosystem in general and your own project.[1]

Why get involved?

Participating as upstream

You do not have to be a packager to help with distro packaging. Just running the downstream package build in upstream is a huge step towards it. If your project is not yet packaged, that’s fine, you can do it yourself.

The only files you need to manage are a .spec file and a packit configuration[2]. The spec file can be quite minimal and low/no maintenance:

Name:           foo
Version:        0.0.0
Release:        %autorelease
Summary:        Example package
License:        Unlicense
URL:            https://example.com
Source:         %{pypi_source foo}
BuildRequires:  python3-devel

%description
Lorem ipsum

%prep
%autosetup -n foo-%{version}

%generate_buildrequires
%pyproject_buildrequires -x test

%build
%pyproject_wheel

%install
%pyproject_install
%pyproject_save_files foo

%check
%pytest

%files -f %{pyproject_files}
%license LICENSE
%doc README.md

%changelog
%autochangelog
Or you can start from a no-op spec file and build up
foo.spec
Name:           foo
Version:        0.0.0
Release:        %autorelease
Summary:        Example package
License:        Unlicense
URL:            https://example.com
Source:         %{pypi_source foo}

%description
Lorem ipsum

%files

%changelog
%autochangelog

Packit is a service available as a GitHub app and on GitLab, but can be extended upon request. There are some onboarding steps to follow, after which you get distro builds in your upstream project.

Packit jobs run in upstream

Shipping to distros

Packaging is dangerous business

Doing the whole packaging process yourself is daunting. It is best to contact your local neighborhood distro packager. You can find some in #scitech or #python channels in Fedora matrix who also share your interest. #devel channel is where you find everyone else if you’re feeling social.

If you want to do it all yourself, drop a line in #join or #devel and there will be people guiding you. Note being a packager is as much a social problem as it is a technical one.

What about non-Fedora?

Unfortunately equivalent CI tools do not seem to be available for other distros.

Lots more files to manageLooks like a lot to maintain

But still the same advice applies, get in touch with a local packager and express your interest.

Footnotes
  1. You can handle the building yourself, but why would you? There are a bunch of edge-case issues you should not be subjected to.