GCC will be removed from the FreeBSD core

FreeBSD Developers presented plan to remove GCC 4.2.1 from the FreeBSD base system sources. The GCC components will be removed before the FreeBSD 13 fork, which will only include the Clang compiler. GCC, if desired, can be installed from ports that offer GCC 9, 7 и 8, as well as already transferred to the category of obsolete issues GCC 4.8, 5, 6 и 7.

Architectures that rely on GCC and cannot migrate to Clang will be prompted to migrate to an external toolkit installed from ports. In preparation for the removal of GCC from the base system, work is planned to improve the integration of the base system build system with external toolkits. For example, for the amd64 architecture, the ability to build using gcc 6.4 from ports has already been added to the continuous integration system, which can be used as a basis for translating other architectures.

Recall that starting from FreeBSD 10, the base system for the i386, AMD64 and ARM architectures was switched to the default delivery of the Clang compiler and the libc ++ library developed by the LLVM project. GCC and libstdc++ for these architectures were no longer built as part of the base system, but continued to be shipped by default for powerpc, mips, mips64, and sparc64 architectures, and could also be rebuilt with the WITH_GCC and WITH_GNUCXX flags. The delivery of an outdated version of GCC 4.2.1 was due to licensing restrictions.

FreeBSD could not migrate to a newer version of GCC because since release 4.2.2 GCC was translated the GPLv3 license and GCC 4.2.2 integration were hindered by the incompatibility of GCC runtime components with the BSD license. Later, in version GCC 4.4, this incompatibility has been eliminated, but adding GPLv3-licensed components to the FreeBSD base system was declared impossible due to conflicts with goals of the FreeBSD project and unwillingness to impose further restrictions on users, such as tivoization.

The process of getting rid of GCC in the base system will be divided into several stages and will last 9 months, which will give developers of GCC-bound architectures (powerpc, mips, mips64 and sparc64) time to migrate to Clang or switch to using external tools. The first phase starts on August 31st and will result in gcc 4.2.1 being removed from the build in the continuous integration system, as well as removing the "-Werror" flag for GCC-bound platforms, and disabling GCC builds by default when doing "make universe".

On December 31, 2019, the GCC build will be disabled by default, but for the time being it can be reverted with certain flags. On March 31, 2020, GCC will be removed from the SVN repository, and on May 31, all platforms that are not covered by the continuous integration system, do not support LLVM, or are not converted to use an external build toolkit will be removed from SVN. On July 31, 2020, the final removal from SVN of all remaining platforms that require the use of external tooling, but are not supported in release scripts, will be performed.

Source: opennet.ru

Add a comment