Removing Perl from Build Root
This change aims to removing Perl from minimal build root.
- Name: Jitka Plesníková
- Email: <firstname.lastname@example.org>
- Name: Petr Písař
- Email: <email@example.com>
- Release notes owner:
- Perl packaging guidelines update on build-requires approved
- perl.spec changed to bootstrap without perl-generators 
- perl-Fedora-VSP changed to bootstrap without perl-generators 
- perl-generators changed to bootstrap without perl-generators 
- perl-generators run-requires perl-macros 
- Create tool for editing spec files
- Enhance Fedora-Rebuild for editing source repositories 
- Gather all packages requiring or providing a Perl module: 3292 packages
- Gather all packages requiring libperl.so: 491 packages
- Inject perl-devel and perl-generators into local copy: 3129 packages
- Test locally modified packages: 34 packages failed to rebuild, none of because spec file changes
BuildRequires: perl-generatorsadded into package that use perl() RPM dependency symbols and do not build-require perl-generators yet.
BuildRequires: perl-develadded into packages that run-require libperl.so and do not build-require perl-devel yet.
- 3121 packages were edited.
Items in progress
- Add dummy perl-generators package into EPEL to ease porting from Fedora
- Remove perl-generators dependency from rpm-build.
Items to be done
- Check rebuilt packages for dependencies.
When building a package in the Fedora build system (Koji), a predefined set of packages together with their dependencies is always installed. This is called minimal build root and it occupies about 527 MB now. In order to make it smaller, perl-generators dependency will be removed from rpm-build package. This effectively removes Perl packages from minimal build root (about 20 MB now).
However, this will break building all Perl packages as almost no Perl package build-requires perl-generators and thus these packages will miss auto-generated dependencies between Perl modules (perl() namespace in RPM dependency symbols).
Benefit to Fedora
Build root without Perl will allow faster and safer package building.
It will save build time (less amount of packages have to be downloaded and installed to a builder), disk space (about 20 megabytes), maintenance (less code in the build root means lower risk of breakage). It will improve not only the already fast Koji. It's also good for packagers running mock tool on their machines far away from mirrors.
Every Perl package spec file will be modified in the master git branch.
- Proposal owners:
Maintainers of rpm package to remove dependency on perl-generators. Perl maintainers to insert missing build-requirement on perl-generators into all Perl packages.
- Other developers:
Owners of packages that fail to rebuild, mainly perl-sig users, will be asked using Bugzilla to fix their packages.
- Release engineering:
- Policies and guidelines:
Perl packaging guidelines will be updated to mandate dependency on perl-generators for Perl packages.
There should no visible change to package compatibility in Fedora. It's possible that some old EPEL targets do not have standalone perl-generators, therfore maintainers will have to adjust their spec files when merging them from Fedora to EPEL.
How To Test
Compare Requires and Provides of Perl packages that were rebuilt after removing Perl from the build root. They should be the same.
There should not be any remarkable change in user experience.
There is more than 2800 packages depending on perl. None of them are expected to break. Finishing this change can be endangered only by change in minimal build root packages that would gained a new dependency on Perl. Not finishing this change should not affect user experience.
We reintroduce rpm-build run-time dependency on perl-generators.
- Contingency deadline: branching Fedora 25 from Rawhide.
- Blocks release? No.
- Discussion on perl-devel mailing list
- Discussion on Fedora devel mailing list
- Fedora Packaging Committee request for Perl Build-Requires Packaging guidelines update
- Perl Packaging guidelines draft
- Perl Packaging guidelines