Cookbook научился собирать один рецепт в несколько вариантов

03.12.2025

В системе сборки Redox появилась секция необязательных компонентов пакета: одна конфигурация может собираться в несколько вариантов. В примере базовый пакет компилятора ужался с 892 МБ до 597 МБ, когда из него убрали поддержку C++.

Какую задачу это решает

Пакет — это не один файл, а набор программ и данных. Скажем, компилятор: без поддержки C++ он заметно меньше. Но ставить урезанный вариант на системы, где C++ нужен, нельзя.

Обычно это решают двумя пакетами с общим исходным кодом, и тогда правки приходится вносить дважды. Варианты внутри одного рецепта снимают это: правится одно место.

Как это выглядит

В описании рецепта появилась секция необязательных компонентов, а сборка запускается добавлением имени компонента к команде. В примере из сводки базовый gcc собирает вариант с поддержкой C++, причём он зависит от основного пакета — то есть общая часть не дублируется.

Указанный эффект: 892 МБ против 597 МБ.

Похоже на Cargo features

Действительно похоже на то, как в Cargo объявляются дополнительные возможности: одна кодовая база, набор переключателей, сборка варианта одной командой. Разница в масштабе: рецепт пакета собирает целую программу, а crate — модуль.

Для сборщиков приложений под Redox это способ управлять составом образа: не тянуть лишнее, когда часть зависимостей не требуется.

Оригинал

Коммит Implement support for optional package variants от 3 декабря 2025 года в репозитории redox-os/redox; сводка «This Month in Redox — December 2025», раздел «Optional Package Features»

Упоминаний: 1 · Просмотров: 2