На этой странице

Образы Lycoris собираются внутри контейнера lycoris-build, поэтому сборочное окружение не зависит от дистрибутива на хосте.

Внутренняя сборка

Исходники профилей и сборочные скрипты дистрибутива не публикуются. Эта страница описывает процесс внутри проекта. Готовый тестовый offline-образ с KDE Plasma и LXQt доступен на странице загрузок.

Структура репозитория

Файловая структура репозитория Lycoris
  • 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

  1. Разработчик работает в каталоге исходников внутреннего репозитория. На хосте должен быть доступен Docker.

  2. Собрать нужную редакцию. Скрипт сам проверит Docker, при необходимости соберёт образ lycoris-build и запустит mkarchiso.

Plasma

./scripts/build-iso.sh plasma

LXQt

./scripts/build-iso.sh lxqt

Диагностическая base

./scripts/build-iso.sh
  1. Забрать образ из каталога out/.

Контейнер запускается с --privileged

Внутри mkarchiso работают pacstrap и arch-chroot, которые монтируют proc, sys и dev. Docker не разрешает это даже с расширенным набором возможностей, поэтому контейнер получает --privileged. Он одноразовый и видит только каталог проекта.

Куда попадают сборочные данные
  • out/: готовые ISO
  • work/mkarchiso/<edition>/: рабочее состояние mkarchiso, перед сборкой удаляется
  • work/profiles/<edition>/: скомпонованный профиль редакции
  • work/repo/: локальный репозиторий собственных пакетов
  • .cache/pacman: кэш пакетов, общий для всех редакций

Все эти каталоги перечислены в .gitignore. В Git попадают только исходники профилей и скриптов.

Проверка перед коммитом

./scripts/lint.sh
  1. bash -n проверяет синтаксис всех shell-скриптов.
  2. shellcheck ищет ошибки и непереносимые конструкции. Он берётся из PATH, а если его нет, запускается из сборочного образа.
  3. git diff --check ловит пробельные ошибки.
  4. Скрипт следит, чтобы в индекс не попали сгенерированные файлы.

Правила внутренних изменений описаны в разделе Участие в разработке.

Переход на CI

Планируется перенести сборку ISO в автоматизированный конвейер. Он будет готовить редакции из тех же профилей, выполнять проверки и выпускать образы. Конвейер сборки дистрибутива ещё не запущен; текущий Woodpecker в репозитории сайта собирает и публикует только этот сайт.