(Updated 'Detailed description') |
|||
Line 2: | Line 2: | ||
== Summary == | == Summary == | ||
The versioned `perl(:MODULE_COMPAT_XXX)` (provided by `perl-libs`) will be required only by multi-arch packages. For those packages, we need to ensure that the packages will use the right libperl.so for the Perl used. The `noarch` packages will depend on non-version `perl-libs`. | The versioned `perl(:MODULE_COMPAT_XXX)` (provided by `perl-libs`) will be required only by multi-arch packages. For those packages, we need to ensure that the packages will use the right libperl.so for the Perl used. The `noarch` packages will depend on non-version `perl-libs`. | ||
The macro `%perl_require_compat` will evaluate the requires based on `%{_target_cpu}`. It will be defined in the rpm `perl-srpm-macros`. | |||
`%perl_require_compat %[ "%{_target_cpu}" == "noarch" ? "perl-libs" : "%{!?perl_version:perl-libs}%{?perl_version:perl(:MODULE_COMPAT_%{perl_version})}" ]` | |||
== Owner == | == Owner == | ||
Line 41: | Line 45: | ||
== Detailed Description == | == Detailed Description == | ||
The macro `% | The list of packages that need to be rebuilt with the new Perl is determined according to the dependency on `perl(:MODULE_COMPAT_XXX)` now. | ||
However, only multi-arch packages need to have a dependency on the particular version of Perl it was built against, or on a newer version of Perl that provides backward compatibility with it. | |||
The noarch packages don't need to be rebuild against each new major version of Perl, they only need to require `perl-libs` which includes all directories used by all Perl modules. | |||
The macro `%perl_requires_compat` will be evaluated to the correct value. | |||
== Feedback == | == Feedback == |
Revision as of 11:32, 8 November 2022
Perl: Replace MODULE_COMPAT by macro
Summary
The versioned perl(:MODULE_COMPAT_XXX)
(provided by perl-libs
) will be required only by multi-arch packages. For those packages, we need to ensure that the packages will use the right libperl.so for the Perl used. The noarch
packages will depend on non-version perl-libs
.
The macro %perl_require_compat
will evaluate the requires based on %{_target_cpu}
. It will be defined in the rpm perl-srpm-macros
.
%perl_require_compat %[ "%{_target_cpu}" == "noarch" ? "perl-libs" : "%{!?perl_version:perl-libs}%{?perl_version:perl(:MODULE_COMPAT_%{perl_version})}" ]
Owner
- Name: Jitka Plesnikova
- Email: <jplesnik@redhat.com>
Current status
- Targeted release: Fedora Linux 38
- Last updated: 2022-11-08
- 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>
Completed items
Items in progress
- Add
%perl_require_compat
macro to perl-srpm-macros in F38 - Add
%perl_require_compat
macro to perl-srpm-macros in F37 - Add
%perl_require_compat
macro to perl-srpm-macros in F36 - Add
%perl_require_compat
macro to perl-srpm-macros in F35 - Update Fedora Packaging Guidelines for Perl
- Replace
perl(:MODULE_COMPAT_XXX)
by%perl_require_compat
dependency in all F38 spec files (3335)- Have to update all kinds of dependencies: Requires, Recommends, Suggests
Detailed Description
The list of packages that need to be rebuilt with the new Perl is determined according to the dependency on perl(:MODULE_COMPAT_XXX)
now.
However, only multi-arch packages need to have a dependency on the particular version of Perl it was built against, or on a newer version of Perl that provides backward compatibility with it.
The noarch packages don't need to be rebuild against each new major version of Perl, they only need to require perl-libs
which includes all directories used by all Perl modules.
The macro %perl_requires_compat
will be evaluated to the correct value.
Feedback
Benefit to Fedora
It will simplify the rebuild and reduce the number of packages which have to be rebuild. It should currently be enough to rebuild only multi-arch packages and those that are part of the Perl itself (dual-life packages). Here we need to ensure that the packages will use the right libperl.so for the Perl used.
Scope
- Proposal owners:
- Other developers:
- Release engineering: #Releng issue number
- Policies and guidelines: N/A (not needed for this Change)
- Trademark approval: N/A (not needed for this Change)
- Alignment with Objectives:
Upgrade/compatibility impact
How To Test
User Experience
Dependencies
Contingency Plan
- Contingency mechanism: (What to do? Who will do it?) N/A (not a System Wide Change)
- Contingency deadline: N/A (not a System Wide Change)
- Blocks release? N/A (not a System Wide Change), Yes/No
Documentation
N/A (not a System Wide Change)