Fedora 29 Dropping GCC From Their Default Build Root Has Been Causing A Heated Debate
One of the surprisingly controversial changes being implemented for Fedora 29 is dropping GCC and GCC-C++ from the default BuildRoot for assembling Fedora packages with Koji and Mock.
Up to now it's always just been implied that GCC (including the GCC C++ compiler) is there by default with every build-root. But these days with more packages being written in languages like Go, Rust, Python, Node.js, and other modern languages, the proportion of C/C++ applications is decreasing. As such, the GCC C/C++ support is no longer being implied with the default build environments in Koji/Mock, which in turn should help package build times for non-C/C++ packages as they will no longer need to pull in the gcc/gcc-c++ packages and in turn a cleaner buildroot environment too.
Packages needing a C or C++ compiler now need to list it as part of their BuildRequires tag. In reality, this shouldn't be a big change all things considered as just for this Fedora 29 cycle ahead of the imminent mass rebuild they have added gcc/g++ to all of the packages that require said compiler. And for users there should be virtually no difference. The exact plans have been outlined for months on the Fedora Wiki.
But in recent days when notice of this imminent change-over was posted to the Fedora devel list it turned into a heated exchange for some stakeholders. Among the concerns expressed:
Adding "BuildRequires: gcc" (or gcc-c++) is fairly explicit that in the future to build C/C++ packages with LLVM Clang or alternative compilers could require a lot of changes. Granted, not all current C/C++ packages in Fedora build cleanly under Clang. Some suggested instead using a build depends upon glibc-devel or libstdc++ instead, but that poses its own set of challenges.
On the plus side, it should now become clearer to see just how many Fedora packages require C/C++ as previously it was rather opaque with GCC always being present or relying upon other packaging commands to estimate the totals.
This topic was previously discussed and approved by FESCo back in February~March, but seems some members missed out on it or didn't want to participate at that time. Those curious about the entire discussion can find it via the mailing list archive.
Up to now it's always just been implied that GCC (including the GCC C++ compiler) is there by default with every build-root. But these days with more packages being written in languages like Go, Rust, Python, Node.js, and other modern languages, the proportion of C/C++ applications is decreasing. As such, the GCC C/C++ support is no longer being implied with the default build environments in Koji/Mock, which in turn should help package build times for non-C/C++ packages as they will no longer need to pull in the gcc/gcc-c++ packages and in turn a cleaner buildroot environment too.
Packages needing a C or C++ compiler now need to list it as part of their BuildRequires tag. In reality, this shouldn't be a big change all things considered as just for this Fedora 29 cycle ahead of the imminent mass rebuild they have added gcc/g++ to all of the packages that require said compiler. And for users there should be virtually no difference. The exact plans have been outlined for months on the Fedora Wiki.
But in recent days when notice of this imminent change-over was posted to the Fedora devel list it turned into a heated exchange for some stakeholders. Among the concerns expressed:
Adding "BuildRequires: gcc" (or gcc-c++) is fairly explicit that in the future to build C/C++ packages with LLVM Clang or alternative compilers could require a lot of changes. Granted, not all current C/C++ packages in Fedora build cleanly under Clang. Some suggested instead using a build depends upon glibc-devel or libstdc++ instead, but that poses its own set of challenges.
On the plus side, it should now become clearer to see just how many Fedora packages require C/C++ as previously it was rather opaque with GCC always being present or relying upon other packaging commands to estimate the totals.
This topic was previously discussed and approved by FESCo back in February~March, but seems some members missed out on it or didn't want to participate at that time. Those curious about the entire discussion can find it via the mailing list archive.
47 Comments