GCC буде видалено з основного складу FreeBSD

Розробники FreeBSD представили план видалення GCC 4.2.1 із вихідних текстів базової системи FreeBSD. Компоненти GCC будуть видалені до відгалуження гілки FreeBSD 13, до складу якої входитиме лише компілятор Clang. GCC за бажанням можна буде поставити з портів, в яких пропонується GCC 9, 7 и 8, а також вже переведені до розряду застарілих випуски GCC 4.8, 5, 6 и 7.

Архітектурам, які зав'язані на GCC і не можуть перейти на Clang, буде запропоновано перейти на зовнішній інструментарій з портів. У рамках підготовки до видалення GCC з базової системи планується провести роботу з покращення інтеграції системи складання базової системи із зовнішніми інструментаріями. Наприклад, для архітектури amd64 до системи безперервної інтеграції вже додано можливість складання з використанням gcc 6.4 з портів, яка може бути використана як основа для перекладу інших архітектур.

Нагадаємо, що починаючи з FreeBSD 10 базова система для архітектур i386, AMD64 і ARM була переведена на поставку за замовчуванням компілятора Clang і бібліотекою libc++, що розвивається проектом LLVM. GCC і libstdc++ для зазначених архітектур перестали збиратися як частина базової системи, але продовжили поставлятися за умовчанням для архітектур powerpc, mips, mips64 і sparc64, а також могли бути встановлені при пересборні із зазначенням прапорів WITH_GCC і WITH_GNUCXX. Постачання застарілої версії GCC 4.2.1 було обумовлено ліцензійними обмеженнями.

FreeBSD не міг перейти на новішу версію GCC, оскільки починаючи з випуску 4.2.2 GCC був перекладений на ліцензію GPLv3 та інтеграцію GCC 4.2.2 заважала несумісність runtime-компонентів GCC з ліцензією BSD. Пізніше, у версії GCC 4.4 дана несумісність була усунена, але додавання до базової системи FreeBSD компонентів під ліцензією GPLv3 було визнано неможливим через суперечності з цілями проекту FreeBSD та небажанням накладати додаткові обмеження на користувачів, такі як заборона тивоізації.

Процес позбавлення від GCC у базовій системі буде поділено на кілька етапів і триватиме 9 місяців, що дасть розробникам прив'язаних до GCC архітектур (powerpc, mips, mips64 та sparc64) час на те, щоб виконати міграцію на Clang або перейти на використання зовнішнього інструментарію. Перший етап стартує 31 серпня і призведе до виключення gcc 4.2.1 зі складання в системі безперервної інтеграції, а також до припинення застосування прапора -Werror для прив'язаних до GCC платформ і відключення за замовчуванням складання GCC при виконанні make universe.

31 грудня 2019 року складання GCC буде відключено за замовчуванням, але поки що зможе бути повернено при вказівці певних прапорів. 31 березня 2020 року GCC буде видалено з SVN-репозиторію, а 31 травня з SVN будуть видалені всі платформи, які не охоплені системою безперервної інтеграції, не підтримують LLVM або не переведені на використання зовнішнього складального інструментарію. 31 липня 2020 року буде виконано фінальне видалення з SVN всіх платформ, що вимагають використання зовнішнього інструментарію, але не підтримуються в скриптах формування релізів.

Джерело: opennet.ru

Додати коментар або відгук