Почитал тут про Portage систему Gentoo и задумался. Сразу скажу - всё это, наверно, полнейшая ересь.
Тем, кто в теме Portage не читать: {
В Portage пакеты распространяются в исходниках и каждый используя свои use-флаги собирает их по-своему. На этапе сборки пакета Portage смотрит на пользовательские use-флаги и в соответствии с Ebuild-файлом задаёт системе сборки/установки свои опции. В итоге пользователь получает пакет со своими фичами.
Как я понимаю, всё это возможно благодаря той или иной модульности распространяемых пакетов и возможностям систем сборки. В итоге пользователь при обновлении того или иного пакета может скачать не весь файл пакета, а только последовательность патчей к исходникам для их обновления и частичной пересборки.
}
Возникла следующая вопрос/идея:
При сборке одних и тех же пакетов разными пользователями часто(и я думаю, для некоторых пакетов очень часто) используется некоторое количество одинаковых опций и некоторое количество объектных файлов на одной архитектуре и с одинаковыми CFLAG'ами(ну и, видимо, с одной версией компилятора) может полностью совпадать.
Возможно ли создать такую систему сборки, где пользователи собирая пакет смогут выложить свои откомпилированные объектные файлы на сервер для последующего использования другими пользователями этой же системы сборки?
Например первый пользователь собирает пакет yet-another-text-editor с "--withonly a b" и выкладывает объектники на серв. Затем когда второй пользователь собирает этот же пакет с "--withonly b c", то наша система пакетосборки определяет, что на сервере есть уже откомпилированные файлы этого пакета и использует их (main.o, b.o). Тогда после загрузки дерева сборки пользователю остаётся только дособрать фичу «c» и слинковать программу.
Возможно ли такое в современных условиях?
Подойдёт ли для сего изврата что-либо из систем сборки(automake, CMake, etc)?
Спрашиваю просто из интереса ибо в info где-то в дебрях automake встречал примеры, где собиралась программа для двух компов с использованием одного дерева сборки. Сам врядли смог бы даже попробовать нечто подобное сотворить в масштабах дистра темболее.