Fedora 32 System-Wide Change proposal: Use update-alternatives for /usr/bin/cc and /usr/bin/c++

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



https://fedoraproject.org/wiki/Changes/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.

== Owner ==
* Name: [[User:tstellar| Tom Stellard]]
* Email: <tstellar@xxxxxxxxxx>

== 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 update-alternatives creates and manages these symlinks.

In addition to modifying the gcc package, the clang package will be
modified so that /usr/bin/clang and /usr/bin/clang++ can be used as
alternatives for /usr/bin/cc and /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 using the
update-alternatives tool.

== Benefit to Fedora ==
Many build systems default to using /usr/bin/cc and /usr/bin/c++ as
the default C/C++ compilers.  Being able to easily swap out these
implementation will provide a lot of flexibility within Fedora for
doing things like:

* Setting up alternative buildroots for testing.
* Installing a gcc wrapper script to /usr/bin/cc to help migrate
packages to new compiler flags or to capture statistics about compiler
usage.
* Letting users experiment easily with alternate compilers.
* Easily switch between system gcc and a development version of gcc.

== Scope ==
* Proposal owners: The proposal owner will implement the necessary
changes in the gcc and clang packages.

* Other developers: The gcc maintainers will be responsible for
reviewing and approving changes to the gcc package.

* Release engineering: (a check of an impact with Release Engineering is needed)
* Policies and guidelines: No policies or guidelines will need to be
updated as a result of this change.
* Trademark approval: N/A (not needed for this Change)


== Upgrade/compatibility impact ==
This change should not impact upgradeability.

== How To Test ==
CI tests will be added to the gcc package to ensure that /usr/bin/cc
and /usr/bin/c++ still point to /usr/bin/gcc and /usr/bin/g++ when
installed.  There will also be a CI test added to the clang package to
ensure that /usr/bin/gcc and /usr/bin/g++ remain the default when
clang is installed.

== User Experience ==
This change will give users a much better way to experiment using
other compilers for their own development.  They will be able to
easily switch between different compilers without having to modify
their projects build system or make non-standard changes to their
Fedora system.

== Dependencies ==
This change has no other dependencies besides the changes to the gcc
and clang packages.

== Contingency Plan ==
* Contingency mechanism: (What to do?  Who will do it?) Proposal Owner
will revert changes made to gcc and clang packages and rebuild.
* Contingency deadline: If the changes are not complete by 2 weeks
before the mass rebuild, then we will consider postponing to the next
Fedora release and back out any changes that were made.
* Blocks release? No
* Blocks product? None

== Documentation ==
Release notes will be added for this change.

== Release Notes ==
The user /usr/bin/cc and /usr/bin/c++ symlinks are now managed by
update-alternatives.  If you would like to change these symlinks to
point to another compiler, like clang, for example, you can use these
commands:

`update-alternatives --set cc /usr/bin/clang`

`update-alternatives --set c++ /usr/bin/clang++`

-- 
Ben Cotton
He / Him / His
Fedora Program Manager
Red Hat
TZ=America/Indiana/Indianapolis
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux