>> У меня своя система сборки. На все правки, включая написание программ для
>> сборки и обработки config.cache ушло 3-4 часа.
> Поддержание своей системы сборки будет требовать гораздо больше времени.На самом деле - не факт. Все зависит от задач. Если вы постоянно (ежедневно) меняете набор приложений - то да, лучше использовать готовый дистрибутив. Если набор приложений относительно стабилен - то затраты по времени не большие.
Вы хорошо озвучили проблемы gentoo:
1. Глубокая модификация требует больших затрат по времени.
40-80 часов для задачи, которая в моем случае отняла 3-4 часа (да и то, если бы я сам не писал программы для этой задачи, то правки/тест сборочной системы отняли бы менее 30 минут).
У меня в год на систему уходит 40-80 часов, да и то, только если я провожу эксперименты вроде обсуждаемого.
2. Поддержка своих изменений. Чем их больше, тем сложнее поддерживать. В итоге от них приходится отказываться.
У меня есть похожая проблема, но на другом уровне: я часто модифицирую софт под свои нужды и большинство патчей не пойдут в апстрим. Их приходится поддерживать, что и отнимает основное время при возне с системой.
> Если мы попытаемся этот config.site впилить, например, в emerge и дополнить этим
> костылём с рестартом сборки, то встанет вопрос: как мы можем выяснить
> программно, что сборка обломалась из-за косяков с config.site? Или после каждого
> облома мы на всякий случай будем удалять config.site и делать рестарт
> -- а вдруг прокатит?
Как вариант. Можно еще научить систему составлять список таких случаев и сохранять логи неудачной и удачной сборки (или сразу делать с них diff) для быстрого разбора проблемы.
> Потому что есть pkg-config, который легко
> можно использовать непосредственно из makefile'а, проверяя наличие библиотек и их версии.
Совершенно верно!
> Если комментаторы опеннета в большинстве своём и выступают против замены autotools на
> что-то ещё, то это их "старпёрский bias" -- опеннетовское когнитивное искажение,
> вызванное тем, что каждому опеннетовцу хочется выглядеть старпёром, а лучший способ
> выглядеть старпёром -- всегда выступать в пользу музейного софта и всегда
> против всего нового.
Тут не соглашусь. autotools давно пора выкинуть, но:
1. Зачем писать новые системы сборки, когда для 95% проектов достаточно make + pkg-config? Зачем генерировать майкфайлы, неужели нельзя сделать их статичными, а все переменные собрать в одном файле?
2. Если уж хочется написать новую систему сборки, зачем делать хуже, чем было? Один синтаксис управления cmake чего стоит: -DCMAKE_INSTALL_PREFIX=/usr против --prefix=/usr.
3. Если проект большой - сделайте свою компактную систему сборки и встройте ее в проект, типа как в AOSP, а не заставляйте тянуть и собирать кучу зависимостей.