Wednesday, April 29, 2026

F45 Change Proposal: Versioned_libgit2_packages [SystemWide]

Wiki: https://fedoraproject.org/wiki/Changes/Versioned_libgit2_packages

Discussion Thread: https://discussion.fedoraproject.org/t/189891

**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 either `libgit2_2.0` or `libgit2_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: [https://forge.fedoraproject.org/releng/tickets/issues/13325 #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.

-- _______________________________________________ devel-announce mailing list -- devel-announce@lists.fedoraproject.org To unsubscribe send an email to devel-announce-leave@lists.fedoraproject.org Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/devel-announce@lists.fedoraproject.org Do not reply to spam, report it: https://forge.fedoraproject.org/infra/tickets/issues/new

No comments:

Post a Comment