Summary
Rebase libffi in Fedora 34 from libffi 3.1 to libffi 3.3.9000.
Owner
- Name: DJ Delorie
- Email: dj@redhat.com
Current status
- Targeted release: Fedora 34
- Last updated: 2021-07-07
- FESCo issue: <will be assigned by the Wrangler>
- Tracker bug: <will be assigned by the Wrangler>
- Release notes tracker: <will be assigned by the Wrangler>
Detailed Description
Libffi 3.3 was released in November 2019, about a year ago. Since then, Intel Control-flow Enforcement Technology support has been added, which is a desirable feature for Fedora. Fedora is currently bundling libffi 3.1, released in 2014. Due to the slow release schedule of libffi, this Change Request is targetting an unofficial "3.3.9000" source tree in order to bring in post-3.3 changes needed by Fedora (FIXME modify wording as libffi 3.4 schedule solidifies)
Note that this change will require an SONAME bump due to ABI changes. Because this affects Python, a side-tagged build of libffi, Python, and DNF is recommended to stage this change. No compat package is planned, packages using libffi must rebuild. Approximately 38 packages depend on libffi.so.6; approximately 158 depend on libffi.rpm.
Feedback
Benefit to Fedora
Stay up to date with upstream libffi, including bug fixes et al.
Stay compatible with other distros which have updated already.
Add support for Intel CET and Power10
Scope
- Proposal owners: Update to libffi 3.3 plus other upstream patches (or 3.4 if scheduled in time)
- Other developers: Packages which link against libffi must be rebuilt. Depending on your API usage, some code changes might be needed as well.
- Release engineering: #Releng issue number (a check of an impact with Release Engineering is needed)
- Policies and guidelines: The policies and guidelines do not need to be updated.
- Trademark approval: N/A (not needed for this Change)
- Alignment with Objectives: None
Upgrade/compatibility impact
Packages built against the previous version of libffi will need to be upgraded in sync with this change, during any upgrade. Conversely, updating packages that use libffi will require libffi also be upgraded.
How To Test
libffi includes its own testsuite. However, running Python's test suite should also be done.
User Experience
The new version of libffi, aside from the usual internal bugfixes and tweaks, introduces support for Intel CET and Power10.
Dependencies
Approximately 38 packages depend on libffi.so.6 and will need rebuilds. Approximately 158 packages depend on libffi's RPM.
$ dnf repoquery --whatrequires libffi.so.6 cjs-1:4.7.0-0.2.20201019gitbefc11a.fc34.i686 ecl-0:20.4.24-3.fc33.i686 gjs-0:1.66.1-3.fc34.i686 glib2-0:2.67.0-1.fc34.i686 gnustep-base-libs-0:1.27.0-4.fc33.i686 gobject-introspection-0:1.66.1-1.fc34.i686 gobject-introspection-devel-0:1.66.1-1.fc34.i686 guile-5:2.0.14-22.fc34.i686 guile22-0:2.2.6-6.fc34.i686 libffi-devel-0:3.1-26.fc33.i686 librep-0:0.92.7-12.fc33.i686 libwayland-client-0:1.18.0-2.fc33.i686 libwayland-cursor-0:1.18.0-2.fc33.i686 libwayland-server-0:1.18.0-2.fc33.i686 llvm-libs-0:11.0.0-2.fc34.i686 llvm10-libs-0:10.0.0-10.fc34.i686 llvm5.0-libs-0:5.0.1-11.fc32.i686 llvm6.0-libs-0:6.0.1-10.fc32.i686 llvm7.0-libs-0:7.0.1-7.fc34.i686 llvm9.0-libs-0:9.0.1-8.fc33.i686 moarvm-0:0.2020.07-1.fc34.i686 p11-kit-0:0.23.21-2.fc34.i686 polyml-libs-0:5.8.1-2.fc33.i686 pygobject2-0:2.28.7-11.fc33.i686 pypy-libs-0:7.3.1-2.fc33.i686 pypy3-0:7.3.1-3.fc33.i686 python2.7-0:2.7.18-6.fc34.i686 python3-debug-0:3.9.0-1.fc34.i686 python3-gobject-base-0:3.38.0-2.fc34.i686 python3-libs-0:3.9.0-1.fc34.i686 python3.10-0:3.10.0~a1-2.fc34.i686 python3.5-0:3.5.10-3.fc34.i686 python3.6-0:3.6.12-3.fc34.i686 python3.7-0:3.7.9-3.fc34.i686 python3.8-0:3.8.6-2.fc34.i686 racket-minimal-0:7.4-3.fc33.i686 ruby-libs-0:2.7.2-135.fc34.i686 yosys-0:0.9-8.fc34.i686
Contingency Plan
- Contingency mechanism: Revert to libffi 3.1
- Contingency deadline: Beta freeze, or any mass rebuild.
- Blocks release? No
- Blocks product? N/A
Documentation
libffi includes its own documentation. No additional documentation work is required.
Release Notes
libffi does not public formal release notes. A change list can be found in libffi's git history: https://github.com/libffi/libffi/commits/master