08.0 (Конспект) PackageMaintaining
Дистрибутив является сборником программных продуктов обмазанного каким-то инсталлятором. Результатом этой установки будет работающая операционная система компьютера (Если это дистрибутив операционной системы). Дистрибутив формируется на базе хранилища, которое в нашем случае называется репозиторием.
Идея состоит в том чтобы взять какой-нибудь программный продукт которого нет в репозитории, превратить его в пакет и поместить в хранилище.
Для нормальной работы необходимо собрать изолированное сборочное окружение. В Линкусе существуют интересные механизмы изоляции. Благодаря такому механизму отсутствует влияние происходящего внутри сборочницы на ход системы. По результату работы сформируется мейк файл, в котором будут прописаны правильные настройки, которые нужно указать. Нельзя допустить, чтобы сторонние мейк файлы писали что-то в систему.
Существует следующее правило: Если ваш программный продукт собирается с помощью текущего configure (если мерк файл делается с помощью текущего configure), то так и оставьте.
Поскольку мейк строит дерево зависимостей между отдельными частями программы, пройдясь поэтому ориентированному графу можно четко выделить независимые друг от друга задачи. И эти независимые задачи можно запустить параллельно. Мейк имеет в себе инструмент запуска в параллель указанного числа заданий. В идеале это ускорит сборку исходных кодов примерно в 8 раз.
Чтобы собрать пакет нам нужно соорудить спек файл. Спек файл это описатель того как из исходников делается не просто бинарник, а пакет (архив с раскладыванием файлов итп.) Необязательно носить с собой всю отладочную информацию, ее можно упаковать в отдельный пакет. А потом оттуда ее ставить, если мы хотим что-то отлаживать.
Есть на 95% универсальный инструмент buildreq, который запускает сборку пакета и отслеживает какие инструменты были запущены в процессе сборки, какие файлы прочтены и каким в реальности пакетам принадлежат эти инструменты и эти файлы. И весь этот список всего того, что понадобилось для выполнения, за исключением очевидных вещей вроде базовой системы, автоматически приезжает к нам в спек файл.
Чтобы поместить пакет в хранилище нужно убедиться, что он собирается, а потом отдать исходный код этого пакета в специальную сборочницу.
Есть два способа засунуть пакет в сборочницу, это засунуть туда полную инструкцию по сборке пакета или сказать сборнике собрать все самой из гита.
Сборочница имеет доступ ко всему репозитория и проверяет насколько сборка данного пакета не ломает другие все пакеты репозитория.