Le jeu. 19 déc. 2019 à 22:44, Ben Cotton <bcotton@xxxxxxxxxx> a écrit : > > 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++` Does this process even works in RPM context ? given rpm -E %{__cc} outputs gcc, I don't think /usr/bin/cc is ever used anywhere. (same for __cxx, __cpp) If that's only supposed to work in a local compilation context (not with RPM), what is the benefit from using alternatives rather than export CC=clang ? What about ccache ? (does it need to also be registered with alternatives) ? As I imagine, setting clang for a given package with such alternatives would requires to add a BR of some clang-default that will call alternatives in %post. At first sight, I would dramatically prefer to have a RPM macro that would set __cc, __cpp,__cxx and the relevant cflags ldflgas in %prep. (and eventually another macro that would set then back to default). -- - Nicolas (kwizart) _______________________________________________ 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