Сборочная система и профили
Устройство внутренней сборки Lycoris: Docker, проверки, композиция профилей archiso и план перехода на CI.
На этой странице
Образы Lycoris собираются внутри контейнера lycoris-build, поэтому сборочное
окружение не зависит от дистрибутива на хосте.
Внутренняя сборка
Исходники профилей и сборочные скрипты дистрибутива не публикуются. Эта страница описывает процесс внутри проекта. Готовый тестовый offline-образ с KDE Plasma и LXQt доступен на странице загрузок.
Структура репозитория
lycoris
profiles
base
- packages.x86_64Базовые пакеты Arch
- profiledef.shПараметры mkarchiso
- airootfs/Общая файловая система
editions
plasma
- packages.x86_64Пакеты Plasma и Wayland
- remove.listСписок исключений
- airootfs/Оверлей настроек KDE
lxqt
- packages.x86_64Пакеты LXQt и X11
- airootfs/Оверлей настроек LXQt
packages
- PKGBUILDСобственные пакеты Lycoris
scripts
- build-iso.shСборка ISO
- compose-profile.shКомпозиция профилей
- lint.shПроверка синтаксиса и shellcheck
docker
- DockerfileСборочный образ lycoris-build
Сборка ISO
-
Разработчик работает в каталоге исходников внутреннего репозитория. На хосте должен быть доступен Docker.
-
Собрать нужную редакцию. Скрипт сам проверит Docker, при необходимости соберёт образ
lycoris-buildи запустит mkarchiso.
Plasma
./scripts/build-iso.sh plasma
LXQt
./scripts/build-iso.sh lxqt
Диагностическая base
./scripts/build-iso.sh
- Забрать образ из каталога
out/.
Контейнер запускается с --privileged
Внутри mkarchiso работают pacstrap и arch-chroot, которые монтируют proc, sys и
dev. Docker не разрешает это даже с расширенным набором возможностей, поэтому
контейнер получает --privileged. Он одноразовый и видит только каталог
проекта.
Куда попадают сборочные данные
out/: готовые ISOwork/mkarchiso/<edition>/: рабочее состояние mkarchiso, перед сборкой удаляетсяwork/profiles/<edition>/: скомпонованный профиль редакцииwork/repo/: локальный репозиторий собственных пакетов.cache/pacman: кэш пакетов, общий для всех редакций
Все эти каталоги перечислены в .gitignore. В Git попадают только исходники
профилей и скриптов.
Проверка перед коммитом
./scripts/lint.shbash -nпроверяет синтаксис всех shell-скриптов.shellcheckищет ошибки и непереносимые конструкции. Он берётся из PATH, а если его нет, запускается из сборочного образа.git diff --checkловит пробельные ошибки.- Скрипт следит, чтобы в индекс не попали сгенерированные файлы.
Правила внутренних изменений описаны в разделе Участие в разработке.
Переход на CI
Планируется перенести сборку ISO в автоматизированный конвейер. Он будет готовить редакции из тех же профилей, выполнять проверки и выпускать образы. Конвейер сборки дистрибутива ещё не запущен; текущий Woodpecker в репозитории сайта собирает и публикует только этот сайт.