Versioned libgit2 packages
This is a proposed Change for Fedora Linux.
This document represents a proposed Change. As part of the Changes process, proposals are publicly announced in order to receive community feedback. This proposal will only be implemented if approved by the Fedora Engineering Steering Committee.
Summary
Going forward, only fully versioned packages for libgit2 will be provided. Dependent libraries and applications are adapted to build and link with the specific libgit2 version they support, and the version-less package names will no longer be provided.
Owner
- Name: [[User:Decathorpe| Fabio Valentini]]
- Email: decathorpe AT gmail DOT com
Detailed Description
Both major and minor versions of libgit2 bring ABI and / or API changes, so applications and libraries that link libgit2 need to be rebuilt for new versions. Using fully versioned package names (or version ranges on pkgconfig dependency specs), packages are adapted to build with the specific libgit2 version they support.
By providing fully versioned package names, it will be possible to introduce newer libgit2 versions to older Fedora releases (and eventually EPEL) transparently and without breaking existing dependencies. As applications are adpated to new libgit2 versions, the oldest provided versions will eventually become unused and can be dropped from Fedora.
- libgit2 (currently v1.9 in Fedora): will be retired
- libgit2_1.9: newly introduced, obsoleting the unversioned package names
- libgit2_1.8: already exists
When libgit2 v2.0.0 is released, it will be packaged as eitherlibgit2_2.0orlibgit2_2, depending on whether libgit2 upstream can finally commit to avoiding ABI changes in minor versions or not.
It is planned to eventually make equivalent changes in EPEL 10 and 9 in order to be able to introduce new parallel-installable libgit2 versions there too.
Feedback
N/Y
Benefit to Fedora
Historically, updates for libgit2 have been tricky due to handle due to frequent ABI changes even in minor versions. Applications that built and worked fine with one version of libgit2 might be subtly broken when built with a different minor version. The corresponding Python bindings (python-pygit2) and bindings for other languages would need to be updated at the same time to avoid even more subtle breakage. Since core build system components like rpmautospec utilize pygit2, issues quickly had a large impact.
By providing fully versioned and parallel-installable packages for different libgit2 versions by default in the future, dependent libraries, applications, and language bindings can be explicitly moved to the next version when things are ready and tested. It also allows introducing newer versions of libgit2 - which often contain fixes for security issues - to older Fedora releases (and eventually, EPEL) transparently without breaking dependent packages.
Scope
- Proposal owners:
Import new libgit2_1.9 package, providing libgit2 v1.9.
Adapt package dependencies to move away from unversioned dependencies.
Retire unversioned libgit2 package from Fedora Rawhide / 45+.
- Other developers:
Adapt package dependencies to move away from unversioned dependencies.
Pull requests for packages where the Change owner is not a co-maintainer will be provided by the Change owner(s).
- Release engineering: [Making sure you're not a bot! #13325]
- Policies and guidelines: N/A (not needed for this Change)
- Trademark approval: N/A (not needed for this Change)
- Alignment with the Fedora Strategy: N/A (not needed for this Change)
Upgrade/compatibility impact
On upgrade, existing installs will be migrated from unversioned libgit2 packages to the versioned equivalents (currently, that would be libgit2_1.9). No actual impact for users is expected.
Early Testing (Optional)
N/A
Do you require ‘QA Blueprint’ support? Y/N
How To Test
Upgrading to Fedora 45 should remove the libgit2 package and transparently replace it with libgit2_1.9. Packages built against libgit2 v1.9 should depend on libgit2_1.9, and packages built against libgit2 v1.8 should depend on libgit2_1.8, and both should be parallel-installable.
User Experience
No impact to user experience is expected.
Dependencies
libgit2:
-
R-gert
-
R-git2r
-
foundry (libfoundry)
-
geany-plugins (geany-plugins-git-changebar, geany-plugins-workbench)
-
git-evtag
-
gnome-builder
-
gnuastro
-
julia
-
kicad
-
kommit
-
kup-backup
-
libgit2-glib
-
nix (nix-libs)
-
python-pygit2 (python3-pygit2)
-
python-rpmautospec (rpmautospec, python3-rpmautospec)
-
rpm-git-tag-sort
-
rubygem-rugged
-
rust (cargo)
-
siril
libgit2-devel only: -
calligra
-
goose
-
kf5-ktexteditor
-
kf6-ktexteditor
-
public-inbox
-
ruyi
Contingency Plan
- Contingency mechanism:
If dependent packages cannot be adapted in time, retirement of the unversioned libgit2 package can be postponed to a later release. The package adaptations themselves are backwards compatible and do not need to be reverted. - Contingency deadline:
Final Freeze - Blocks release?
No
Documentation
N/A
Release Notes
\nDifferent libgit2 minor versions will all be provided as fully-versioned, parallel-installable packages in order to ensure easy upgrades and migration paths for dependent applications, libraries, and language bindings. The un-versioned libgit2 packages (libgit2, libgit2-devel) were dropped.
Last edited by @alking 2026-04-29T12:43:29Z
Last edited by @alking 2026-04-29T12:43:29Z