From Fedora Project Wiki
(Summary)
Line 27: Line 27:
 
Note that motivation for the change should be in the Motivation section below, and this part should answer the question "What?" rather than "Why?". -->
 
Note that motivation for the change should be in the Motivation section below, and this part should answer the question "What?" rather than "Why?". -->
  
Modify the gcc package so that the /usr/bin/cc symlink is managed by update-alternatives.
+
Modify the gcc package so that the /usr/bin/cc and /usr/bin/c++ symlinks are managed by update-alternatives. This will allow users to
  
 
== Owner ==
 
== Owner ==
Line 61: Line 61:
  
 
<!-- Expand on the summary, if appropriate.  A couple sentences suffices to explain the goal, but the more details you can provide the better. -->
 
<!-- Expand on the summary, if appropriate.  A couple sentences suffices to explain the goal, but the more details you can provide the better. -->
 +
 +
The gcc package currently installs symlinks to /usr/bin/cc and /usr/bin/c++ which point to /usr/bin/gcc and /usr/bin/g++ respectively.  For this change, the gcc package will be modified so that the update-alternatives creates these symlinks.
 +
 +
In addition to modifying the gcc package, the clang package will also be modified so that /usr/bin/clang and /usr/bin/clang++ can be used as alternatives for /usr/bin/cc /usr/bin/c++.  The clang alternatives will have a lower priority than the gcc alternatives, so that by default, gcc will provide the /usr/bin/cc and /usr/bin/c++ implementations.
 +
 +
The clang package currently has a run-time dependency on gcc, so this ensures that gcc will always provide the default implementation, because it's impossible to install clang without gcc.
 +
 +
The only way users will be able to change the /usr/bin/cc or /usr/bin/c++ implementations will be by explicitly making this change using the update-alternatives tool.
 +
  
 
== Benefit to Fedora ==
 
== Benefit to Fedora ==
Line 91: Line 100:
 
     https://fedoraproject.org/wiki/Changes/perl5.26 (major upgrade to a popular software stack, visible to users of that stack)
 
     https://fedoraproject.org/wiki/Changes/perl5.26 (major upgrade to a popular software stack, visible to users of that stack)
 
-->
 
-->
 +
 +
  
 
== Scope ==
 
== Scope ==

Revision as of 23:25, 10 December 2019

Important.png
Comments and Explanations
The page source contains comments providing guidance to fill out each section. They are invisible when viewing this page. To read it, choose the "view source" link.
Copy the source to a new page before making changes! DO NOT EDIT THIS TEMPLATE FOR YOUR CHANGE PROPOSAL.


Use update-alternatives for /usr/bin/cc

Summary

Modify the gcc package so that the /usr/bin/cc and /usr/bin/c++ symlinks are managed by update-alternatives. This will allow users to

Owner

Current status

  • Targeted release: [[Releases/<number> | Fedora <number> ]]
  • Last updated: 2019-12-10
  • Tracker bug: <will be assigned by the Wrangler>
  • Release notes tracker: <will be assigned by the Wrangler>

Detailed Description

The gcc package currently installs symlinks to /usr/bin/cc and /usr/bin/c++ which point to /usr/bin/gcc and /usr/bin/g++ respectively. For this change, the gcc package will be modified so that the update-alternatives creates these symlinks.

In addition to modifying the gcc package, the clang package will also be modified so that /usr/bin/clang and /usr/bin/clang++ can be used as alternatives for /usr/bin/cc /usr/bin/c++. The clang alternatives will have a lower priority than the gcc alternatives, so that by default, gcc will provide the /usr/bin/cc and /usr/bin/c++ implementations.

The clang package currently has a run-time dependency on gcc, so this ensures that gcc will always provide the default implementation, because it's impossible to install clang without gcc.

The only way users will be able to change the /usr/bin/cc or /usr/bin/c++ implementations will be by explicitly making this change using the update-alternatives tool.


Benefit to Fedora

Scope

  • Proposal owners:
  • Other developers: N/A (not a System Wide Change)
  • Policies and guidelines: N/A (not a System Wide Change)
  • Trademark approval: N/A (not needed for this Change)

Upgrade/compatibility impact

N/A (not a System Wide Change)

How To Test

N/A (not a System Wide Change)

User Experience

Dependencies

N/A (not a System Wide Change)

Contingency Plan

  • Contingency mechanism: (What to do? Who will do it?) N/A (not a System Wide Change)
  • Contingency deadline: N/A (not a System Wide Change)
  • Blocks release? N/A (not a System Wide Change), Yes/No
  • Blocks product? product

Documentation

N/A (not a System Wide Change)

Release Notes