giter-factory
Мысль следующая: я подумал о том как бы можно было реализовать сборку и параллелизм пересборки зависимых пакетов. Мне подумалось, что в этой задаче можно задействовать make.
Что для этого потребуется: нужно сгенерировать правила для make по всем _бинарным_ пакетам в сизифе. Получится достаточно много целей, но одновременно они задействованы не будут. Плюс к тому, на make возлагается функция только обхода дерева.
Алгоритм примерно такой:
- поступающий srpm пакет собирается.
- из получившегося RPMS.hasher генерируем правила для make (и другую метоинформацию). Эта метаинформация будет добавлена в правила репозитория если пакет будет опубликован.
- запускаем пересборку всего зависящего от пакетов RPMS.hasher согласно правилам make.
- при успешной пересборки можно пробовать добавить этот пакет в репозиторий.
Камни которые тут будут:
- Разные зависимости для разных платформ. Это решается двумя путями. Первый, мы берём надмножество т.е. все пакеты в buildrequires. Второй, для каждой архитектуры можно сделать разные правила.
- Файловые зависимости. Их придётся преобразовывать в имена пакетов, когда будут генерироваться правила.
- Виртуальные зависимости. ???
- Циклы. Можно использовать tsort или другой инструмент, который будет рвать циклы при генерации правил.