From Fedora Project Wiki

< Changes

Revision as of 07:46, 16 June 2016 by Ppisar (talk | contribs) (→‎Current status: Perl toolchain adapted)

Removing Perl from Build Root


This change aims to removing Perl from minimal build root.


Current status

Completed items

  • 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]

Items in progress

Items to be done

  • Gather all packages requiring or providing a Perl module.
  • Add BuildRequires: perl-generators into all of them that do not build-require it yet.
  • Remove perl-generators dependency from rpm-build.
  • Check rebuilt packages for dependencies

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.


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.


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.


Release Notes