From Fedora Project Wiki
(→‎Current status: Things are under test)
(→‎Current status: Local test finished)
Line 46: Line 46:


* Targeted release: [[Releases/25 | Fedora 25 ]]  
* Targeted release: [[Releases/25 | Fedora 25 ]]  
* Last updated: 2016-06-22
* Last updated: 2016-06-23
<!-- After the change proposal is accepted by FESCo, tracking bug is created in Bugzilla and linked to this page  
<!-- After the change proposal is accepted by FESCo, tracking bug is created in Bugzilla and linked to this page  
Bugzilla states meaning as usual:
Bugzilla states meaning as usual:
Line 68: Line 68:
* Gather all packages requiring libperl.so: 491 packages
* Gather all packages requiring libperl.so: 491 packages
* Inject perl-devel and perl-generators into local copy: 3129 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


=== Items in progress ===
=== Items in progress ===
* Test locally modified packages
* Add [https://bugzilla.redhat.com/show_bug.cgi?id=1110823#c8 dummy perl-generators package into EPEL to ease porting from Fedora]
* Add [https://bugzilla.redhat.com/show_bug.cgi?id=1110823#c8 dummy perl-generators package into EPEL to ease porting from Fedora]


=== Items to be done ===
=== Items to be done ===
* Add <code>BuildRequires: perl-generators</code> into package that use perl() RPM dependency symbols and do not build-require perl-generators yet.
* Add <code>BuildRequires: perl-generators</code> into package that use perl() RPM dependency symbols and do not build-require perl-generators yet.
* Add <code>BuildRequires: perl-devel</code> into packages that run-require libperl.so and do not build-require perl-devel yet.
* Add <code>BuildRequires: perl-devel</code> into packages that run-require libperl.so and do not build-require perl-devel yet.

Revision as of 12:06, 23 June 2016


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

Items in progress

Items to be done

  • Add BuildRequires: perl-generators into package that use perl() RPM dependency symbols and do not build-require perl-generators yet.
  • Add BuildRequires: perl-devel into packages that run-require libperl.so and do not build-require perl-devel 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.

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