From Fedora Project Wiki
(Created page with "= Remove GCC from BuildRoot = == Summary == Removing gcc and gcc-c++ from default buildroot in Koji and mock. == Owner == <!-- For change proposals to qualify as self-conta...")
 
No edit summary
 
(19 intermediate revisions by 3 users not shown)
Line 11: Line 11:
* Name: [[User:ignatenkobrain|Igor Gnatenko]]
* Name: [[User:ignatenkobrain|Igor Gnatenko]]
<!-- Include you email address that you can be reached should people want to contact you about helping with your change, status is requested, or technical issues need to be resolved. If the change proposal is owned by a SIG, please also add a primary contact person. -->
<!-- Include you email address that you can be reached should people want to contact you about helping with your change, status is requested, or technical issues need to be resolved. If the change proposal is owned by a SIG, please also add a primary contact person. -->
* Email: <your email address so we can contact you, invite you to meetings, etc.>
* Email: ignatenkobrain@fedoraproject.org
* Release notes owner: <!--- To be assigned by docs team [[User:FASAccountName| Release notes owner name]] <email address> -->
* Release notes owner: <!--- To be assigned by docs team [[User:FASAccountName| Release notes owner name]] <email address> -->
<!--- UNCOMMENT only for Changes with assigned Shepherd (by FESCo)
<!--- UNCOMMENT only for Changes with assigned Shepherd (by FESCo)
Line 32: Line 32:
CLOSED as NEXTRELEASE -> change is completed and verified and will be delivered in next release under development
CLOSED as NEXTRELEASE -> change is completed and verified and will be delivered in next release under development
-->
-->
* Tracker bug: <will be assigned by the Wrangler>
* Tracker bug: [https://bugzilla.redhat.com/show_bug.cgi?id=1551327 #1551327]
* Release Notes tracking: [https://pagure.io/fedora-docs/release-notes/issue/123 #123]


== Detailed Description ==
== Detailed Description ==
Since beginning of Fedora, gcc (and gcc-c++) are installed in every buildroot. Times have changed and nowadays many of packages are not written in C/C++, they are written in Python, Ruby, Node.js, Go, Rust, OCaml, Perl and so on so they don't need to have C/C++ compiler. Installing gcc and gcc-c++ takes time so if we remove it, we can improve build times for most of the packages.
Since beginning of Fedora, gcc (and gcc-c++) are installed in every buildroot. Times have changed and nowadays many of packages are not written in C/C++, they are written in Python, Ruby, Node.js, Go, Rust, Perl and so on so they don't need to have C/C++ compiler. Installing gcc and gcc-c++ takes time so if we remove it, we can improve build times for many of the packages.
 
* Remove <code>gcc</code> and <code>gcc-c++</code> from <code>build</code> group in Koji.
* Remove <code>gcc</code> and <code>gcc-c++</code> from <code>buildsys-build</code> group in comps (fedora-comps).
* Try to automatically fix affected packages.


== Benefit to Fedora ==
== Benefit to Fedora ==
Faster build times (for packages which do not need gcc/gcc-c++ during build).
* Smaller build times (for packages which do not need gcc/gcc-c++ during build).
<!-- What is the benefit to the platform?  If this is a major capability update, what has changed?  If this is a new functionality, what capabilities does it bring? Why will Fedora become a better distribution or project because of this proposal?-->
* Better package compliance with Packaging Guidelines.
* Cleaner buildroot environment.


== Scope ==
== Scope ==
* Proposal owners: Remove <code>gcc</code>, <code>gcc-c++</code> from <code>build</code> group in Koji and from <code>buildsys-build</code> group in comps.
* Proposal owners: Automatically fix as much as possible of affected packages and send Pull Request for fedora-comps.
<!-- What work do the feature owners have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->
* Other developers: If package has not been automatically fixed by owners, fix it manually.
 
* Release engineering: [https://pagure.io/releng/issue/7317 #7317] (rel-eng should adjust koji configuration and merge Pull Request for fedora-comps)
* Other developers: Maintainers should follow guidelines and add <code>BuildRequires: gcc</code> if they need it during build (this guideline exists for long time).
* Release engineering: [https://pagure.io/releng/issues #Releng issue number] (a check of an impact with Release Engineering is needed)
** [[Fedora_Program_Management/ReleaseBlocking/Fedora{{FedoraVersionNumber|next}}|List of deliverables]]: N/A (not a System Wide Change) <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
** [[Fedora_Program_Management/ReleaseBlocking/Fedora{{FedoraVersionNumber|next}}|List of deliverables]]: N/A (not a System Wide Change) <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Policies and guidelines: Nothing needed, guidelines already have paragraph about listing all required BuildRequires.
* Policies and guidelines: Nothing needed, guidelines already have paragraph about listing all required BuildRequires.
Line 52: Line 56:


== Upgrade/compatibility impact ==
== Upgrade/compatibility impact ==
Users would no notice this, Fedora Package Maintainers need to fix their packaging.
This change is internal to packaging and is not visible to end users.


== How To Test ==
== How To Test ==
Try to rebuild your package using mock with configuration provided (TODO).
 
You can test that your package still builds without gcc and gcc-c++ in the buildroot by running <code>mock</code> or <code>fedpkg mockbuild</code> with a modified configuration file that excludes <code>gcc</code> and <code>gcc-c++</code> from the buildroot. Instructions can be found [https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/message/4GUVCYWZ2BS3YHIS7ZFHJO5MHIIUQY3S/ here].


== User Experience ==
== User Experience ==
Users (developers) who build packages would notice this change if they use gcc/gcc-c++ in their packages. Solution is simple, add appropriate BuildRequires.
Users (developers) who build packages could notice this change if they use gcc/gcc-c++ in their packages. Solution is simple, add appropriate BuildRequires.


== Dependencies ==
== Dependencies ==
Koji and fedora-comps needs to change.
Change in koji settings and fedora-comps is required.


== Contingency Plan ==
== Contingency Plan ==
Line 71: Line 76:


== Documentation ==
== Documentation ==
https://fedoraproject.org/wiki/Packaging:C_and_C%2B%2B#BuildRequires_and_Requires
* https://fedoraproject.org/wiki/Packaging:C_and_C%2B%2B#BuildRequires_and_Requires
https://fedoraproject.org/wiki/Packaging:Guidelines#Build-Time_Dependencies_.28BuildRequires.29
* https://fedoraproject.org/wiki/Packaging:Guidelines#Build-Time_Dependencies_.28BuildRequires.29


== Release Notes ==
== Release Notes ==
Line 81: Line 86:
-->
-->


[[Category:ChangePageIncomplete]]
[[Category:ChangeAcceptedF29]]
<!-- When your change proposal page is completed and ready for review and announcement -->
<!-- When your change proposal page is completed and ready for review and announcement -->
<!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler -->
<!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler -->

Latest revision as of 19:46, 4 March 2018

Remove GCC from BuildRoot

Summary

Removing gcc and gcc-c++ from default buildroot in Koji and mock.

Owner

  • Name: Igor Gnatenko
  • Email: ignatenkobrain@fedoraproject.org
  • Release notes owner:

Current status

Detailed Description

Since beginning of Fedora, gcc (and gcc-c++) are installed in every buildroot. Times have changed and nowadays many of packages are not written in C/C++, they are written in Python, Ruby, Node.js, Go, Rust, Perl and so on so they don't need to have C/C++ compiler. Installing gcc and gcc-c++ takes time so if we remove it, we can improve build times for many of the packages.

  • Remove gcc and gcc-c++ from build group in Koji.
  • Remove gcc and gcc-c++ from buildsys-build group in comps (fedora-comps).
  • Try to automatically fix affected packages.

Benefit to Fedora

  • Smaller build times (for packages which do not need gcc/gcc-c++ during build).
  • Better package compliance with Packaging Guidelines.
  • Cleaner buildroot environment.

Scope

  • Proposal owners: Automatically fix as much as possible of affected packages and send Pull Request for fedora-comps.
  • Other developers: If package has not been automatically fixed by owners, fix it manually.
  • Release engineering: #7317 (rel-eng should adjust koji configuration and merge Pull Request for fedora-comps)
  • Policies and guidelines: Nothing needed, guidelines already have paragraph about listing all required BuildRequires.
  • Trademark approval: N/A (not needed for this Change)

Upgrade/compatibility impact

This change is internal to packaging and is not visible to end users.

How To Test

You can test that your package still builds without gcc and gcc-c++ in the buildroot by running mock or fedpkg mockbuild with a modified configuration file that excludes gcc and gcc-c++ from the buildroot. Instructions can be found here.

User Experience

Users (developers) who build packages could notice this change if they use gcc/gcc-c++ in their packages. Solution is simple, add appropriate BuildRequires.

Dependencies

Change in koji settings and fedora-comps is required.

Contingency Plan

  • Contingency mechanism: (What to do? Who will do it?) Revert changes in koji/fedora-comps by persons who have access there.
  • Contingency deadline: Beta Freeze
  • Blocks release? Hard to say, we would need to fix packages.

Documentation

Release Notes