From Fedora Project Wiki


Removing Perl from Build Root

Summary

This change aims to removing Perl from minimal build root.

Owner

Current status

Completed items

  • Perl packaging guidelines update on build-requires approved
  • perl.spec changed to bootstrap without perl-generators [1]
  • perl-Fedora-VSP changed to bootstrap without perl-generators [2]
  • perl-generators changed to bootstrap without perl-generators [3]
  • perl-generators run-requires perl-macros [4]
  • Create tool for editing spec files
  • Enhance Fedora-Rebuild for editing source repositories [5]
  • 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-generators added into package that use perl() RPM dependency symbols and do not build-require perl-generators yet.
  • BuildRequires: perl-devel added into packages that run-require libperl.so and do not build-require perl-devel yet.
  • 3121 packages were edited.
  • Add dummy perl-generators package into EPEL to ease porting from Fedora
  • Remove perl-generators dependency from rpm-build. It saves 20 MB on x86_64.

Items in progress

  • Check rebuilt packages for dependencies.

Items to be done

Detailed Description

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).

To prevent from havoc, Perl Packaging guidelines will be updated and all packages the deliver a Perl code will be updated to build-require perl-generators.

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.

Scope

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:

Not involved.

  • Policies and guidelines:

Perl packaging guidelines will be updated to mandate dependency on perl-generators for Perl packages.

Upgrade/compatibility impact

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.

User Experience

There should not be any remarkable change in user experience.

Dependencies

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.

Contingency Plan

We reintroduce rpm-build run-time dependency on perl-generators.

  • Contingency deadline: branching Fedora 25 from Rawhide.
  • Blocks release? No.

Documentation

Release Notes

Perl was removed from minimal build root. This change is visible for Fedora package maintainers only. If you maintain a Fedora package that uses Perl at build time or delivers a Perl code, please follow updated Perl packaging guidelines on build dependencies.