F38 proposal: Perl: Replace versioned MODULE_COMPAT_ requires by RPM dependency generator (System-Wide Change proposal)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



https://fedoraproject.org/wiki/Changes/Perl_replace_MODULE_COMPAT_by_generator

(Note that this proposal was originally submitted to use a macro. See
https://fedoraproject.org/w/index.php?title=Changes%2FPerl_replace_MODULE_COMPAT_by_generator&type=revision&diff=662550&oldid=661061
for a diff from the previous announcement)

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 ==

A ''perl(:MODULE_COMPAT_%(eval "<nowiki>`%{__perl}
-V:version`</nowiki>"; echo $version))'' run-time dependency will be
removed from all Perl spec files. The replacement will be generated by
dependency generator which will be placed in ''perl-generators''.

The result of generator will be based on content of the binary
packages. That will significantly shrink an amount of Perl packages
required to be rebuilt with each Perl upgrade.

== Owner ==
* Name: [[User:jplesnik| Jitka Plesnikova]]
* Email: <jplesnik@xxxxxxxxxx>


== Current status ==

=== Completed items ===

=== Items in progress ===
* Add the file `/usr/lib/rpm/fileattrs/perlcompat.attr` to
''perl-generators'' in F38
* Add the file `/usr/lib/rpm/fileattrs/perlcompat.attr` to
''perl-generators'' in F37
* Add the file `/usr/lib/rpm/fileattrs/perlcompat.attr` to
''perl-generators'' in F36
* Create the package ''perl-generators-epel'' which provides the
functionality for EPEL 7/8/9
* Update [[Packaging:Perl | Fedora Packaging Guidelines for Perl]]
* Remove ''perl(:MODULE_COMPAT_XXX)'' from run-time in all F38 spec files (3259)

== Detailed Description ==

The list of packages that need to be rebuilt with the new major
version of Perl is determined according to the dependency on
''perl(:MODULE_COMPAT_XXX)'' now.

In Fedora, all Perl modules run-require the versioned
''perl(:MODULE_COMPAT_XXX)'' provided by ''perl-libs'' now.

However, only packages with compiled code 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. For
those packages, we need to ensure that the packages will use the right
version of ''libperl.so'' for the Perl used during the rebuild.

The other packages don't need to be rebuilt against each new major
version of Perl, they only have to require non-versioned ''perl-libs''
which includes all directories used by all Perl modules.

The new generator will generate runtime requirements based on files
which are in the package.

The content of ''/usr/lib/rpm/fileattrs/perlcompat.attr'' will be:
 %__perlcompat_requires() %{lua:
    if macros[1]:match('.+%.so$') and macros.perl_version then
       print('perl(:MODULE_COMPAT_' .. macros.perl_version .. ')')
    else
       print('perl-libs')
    end
 }
 %__perlcompat_path
^(%{perl_vendorarch}|%{perl_vendorlib}|%{perl_privlib}|%{perl_archlib})/.+

The file will be placed in ''perl-generators'' which requires
''perl-macros''. Since RPM 4.15, ''perl-macros'' provides definition
of ''perl_vendor*'', ''perl_privlib'' and ''perl_archlib'' and it
requires  ''perl-interpreter''. The Fedora guidelines already require
Perl modules to BuildRequire ''perl-generators''.

The generator will evaluate to the correct value. There is a known,
yet harmless, imperfection: The generator will evaluate to
''perl-libs'' for each package which contains any (non *.so) file in
the given paths. It means the packages with compiled code will usually
require both ''perl(:MODULE_COMPAT_<perl_version>)'' and
''perl-libs''.

This generator will work for all supported Fedoras.

I'll add ''perl-generators-epel'' which provides the similar behavior
for EPEL 7/8/9.

== Benefit to Fedora ==

It will simplify the rebuild and reduce the number of packages which
have to be rebuild from 3259 to approximately 600. 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. The
generator approach will also be shorter and clearer for packagers.

== Scope ==
* Proposal owners:
** Submit Fedora Packaging Guidelines for Perl update to Fedora
Packaging Committee.
** Update and rebuild ''perl-generators'' source package.
** Add ''/usr/lib/rpm/fileattrs/perlcompat.attr'' to
''perl-generators'' package in older Fedoras.
** Remove Requires ''perl(:MODULE_COMPAT_XXX)'' in all spec files.

* Other developers: Get familiar with new Fedora Packaging Guidelines for Perl.

* Release engineering: No action needed.
* 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 ==
N/A

== How To Test ==

All packages with compiled code should run-require
''perl(:MODULE_COMPAT_%{perl_version})'' and probably also
''perl-libs'' - it is explaned in '''Detailed Description'''. The
other packages should run-require ''perl-libs'' only.

== User Experience ==
There should not be any remarkable change in user experience.

== Dependencies ==
This change will affect 3259 source packages and all binary noarch
packages. The rebuild of affected packages will be done by mass
rebuild of Fedora 38. There is no dependency on other Fedora changes.

== Contingency Plan ==

* Contingency mechanism: The change will be reverted.
* Contingency deadline: Before Mass Rebuild.
* Blocks release? No.

== Documentation ==

== Release Notes ==


-- 
Ben Cotton
He / Him / His
Fedora Program Manager
Red Hat
TZ=America/Indiana/Indianapolis
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
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@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux