[Скрипт] APBS - система автоматической сборки пакетов

Тема в разделе "Десктопный Linux", создана пользователем Sorcus, 13 май 2015.

Модераторы: Цукер
  1. Sorcus

    Sorcus Sorcus. A New Beginning.

    Moderator
    Регистр.:
    10 июл 2011
    Сообщения:
    261
    Симпатии:
    549
    APBS - скрипт для автоматической сборки пакетов для ArchLinux. Сборка происходит в chroot для архитектур x86_64 и i686.

    Конфигурационный файл:
    CHROOTDIR="/home/username/apbs/chroot" - расположение chroot директории.
    REPODIR="/home/username/apbs/repo" - расположение директории репозитория.
    LOGDIR="/home/username/apbs/logs" - расположение директории для log-файлов.
    LOCKDIR="/home/username/apbs" - расположение lock-файла.
    REPONAME="custom" - название репозитория.
    USRNAME="username" - имя пользователя.
    SIGN="yes" - подписывание пакетов с помощью gpg. ("yes" или "no")
    PKGARCH="x86_64" - под какую архитектуру собирать. ("x86_64", "i686" или "x86_64 i686")
    CHROOTCONF="no" - использование кастомных файлов конфигурации для chroot. ("yes" или "no")
    CHROOTFLGS="-C pacman.conf -M makepkg.conf" - конфигурационные файлы для chroot. Располагаются в config директории.
    PKGLIST="packages.list" - файл со списком собираемых пакетов. Одна строка - одно название, # - комментирование, в конце файла должна быть пустая строка. Располагается рядом с apbs.sh.

    PKGBUILD-ы складывать в директорию репозитория.
    Например:
    /REPODIR/REPONAME/build/pacman/PKGBUILD, т.е. - /home/username/apbs/repo/custom/build/pacman/PKGBUILD

    Флаги используемые в скрипте:
    -h - показать описание флагов в скрипте.
    -l - вывести список пакетов в packages.list без компиляции.
    -r - обновить базу репозитория.
    -s - подписать пакеты.
    -g - обновить версию PKGBUILD файлов, собирающих пакеты из git|cvs|svn.
    -p - обесцветить выхлоп скрипта в консоли.

    Сборка пакетов:
    1. Закидываем в build директорию PKGBUILD-ы
    2. Создаем файл packages.list и вписываем название директорий, содержащих PKGBUILD-ы.
    3. Запускаем apbs.sh
    4. ...
    5. PROFIT!

    Скрипт сделан на основе следующих скриптов:
    https://github.com/BrainwreckedTech/aurpb
    http://archlinux.org.ru/forum/topic/5038/
    https://github.com/arcan1s/repo-scripts

    Лицензия:
    GPLv3

    Исходники на BitBucket - https://bitbucket.org/Sorcus/apbs/
    Приветствуются предложения, советы и критика.
     
    Цукер, dmx, inturned и ещё 1-му нравится это.
  2. Sorcus

    Sorcus Sorcus. A New Beginning.

    Moderator
    Регистр.:
    10 июл 2011
    Сообщения:
    261
    Симпатии:
    549
    Обновленная версия сборщика пакетов для Archlinux из AUR
    http://rgho.st/private/6spNhJhvJ/a9b71ac937726fe1fbc2ac04977c10f1
    Сборщик пакетов теперь выполнен в виде интерактивной консоли.
    Список всех команд можно получить написав /help и нажав Enter.
    All commands
    /init aur /init local /init chroot
    /get package /flush chroot /exit
    /compile package /search package

    Alias
    /exit => /quit /compile => /build
    Команды:
    /init aur - выполняет инициализацию AUR репозитория в Redis.
    Количество пакетов в AUR около 40к, поэтому инициализация может занять значительное время.
    Если нужно скомпилировать единичный пакет, можно воспользоваться командой /get package.
    /init local - выполняет инициализацию локальных пакетов в Redis.
    Пакет представляет собой директорию, в которой находится PKGBUILD.
    Данная директория должна находиться по пути, указанному в
    CFG[:рkg_local_dir]
    /init chroot - выполняет инициализацию chroot для сборки пакетов.
    /get package - получает информацию о пакете и зависимостях из AUR.

    На данный момент сборщик пакетов при использовании /get package не получает информацию для зависимостей,
    если их нет в официальном репозитории. Будет добавлено позже.
    /flush chroot - удаление chroot.
    /compile package - компиляция пакета. Автоматически компилирует пакет и его зависимости.

    Все скомпилированные пакеты помещаются в CFG[:рkg_dir]
    /search package - поиск пакетов в AUR репозитории.
    /exit - выход из интерактивной консоли.

    Зависимости сборщика:
    Archlinux пакеты:

    redis, devtools, ruby
    Ruby Gems:
    redis-rb, colorize, hiredis

    Перед запуском обязательно измените параметры CFG в файле ./library/main.rb, а так же настройки $redis.
    P.S. Обязательно установите пароль на Redis!
    laptop% ruby -w aur_builder.rb
    Welcome to interactive console. Get /help for more info
    > /help
    All commands
    /init aur /init local /init chroot
    /get package /flush chroot /exit
    /compile package /search package
    Alias
    /exit => /quit /compile => /build
    > /search wlc
    imewlconverter orbment-vfs-git orbment-git
    wlc-git
    > /search sway
    imewlconverter orbment-vfs-git orbment-git
    wlc-git sway-git
    > /get wlc-git
    Package wlc-git has been added
    > /get sway-git
    Package sway-git has been added
    > /compile sway-git
    [sudo] password for sorcus:
    Installing wlc-git in chroot...Failed! Compile wlc-git
    Compiling wlc-git...Complete!
    Compiling sway-git...Complete!

    > /exit
    laptop%
    Вопросы, советы, найденные баги и т.д. приветствуются. Удачной компиляции :glob:

    P.S. В планах добавить редактирование PKGBUILD-ов перед сборкой, добавление зависимостей в Redis при использовании /get package, инициализацию локального репозитория.
     
    Последнее редактирование: 8 ноя 2016
    Цукер нравится это.
  3. Sorcus

    Sorcus Sorcus. A New Beginning.

    Moderator
    Регистр.:
    10 июл 2011
    Сообщения:
    261
    Симпатии:
    549
    Упрощенная версия сборщика. Работает только с PKGBUILD-ами, находящимися в директории CFG[:рkgbuild_dir].
    http://rgho.st/private/7pqbstJ8n/3a54b1290e068f4021f1b9601d388afc
    Работа с AUR удалена по причине не совсем корректных PKGBUILD-ов. А так же из-за того, что сборка некоторых пакетов может происходить с опциями,
    отличными от опций в исходном PKGBUILD-е.
    Зависимости:
    Package: redis
    Gems: redis-rb, hiredis​
    Настройка:
    1. Указать пути в ./library/config.rb
    2. Добавить директорию с PKGBUILD в директорию CFG[kgbuild_dir]
    Заметка: Если пакет зависит от других пакетов, которых нет в официальном репозитории, их PKGBUILD-ы так же должны быть добавлены.​
    3. Указать название пакета в @cron.packages в файле builder.rb
    Например: @cron.packages = ['example', 'example2']
    Т.к. зависимости пакетов определяются автоматически, можно указывать только родительский пакет.
    Например для компиляции пакета ktextwidgets-git из состава plasma-framework, можно вписать название ktextwidgets-git.
    Зависимости будут автоматически отсортированы в требуемом порядке и скомпилированы.​
    4. Запускаем builder.rb и ждем завершения компиляции. Так же можно добавить builder.rb в cron.​
    Примечание:
    Первую сборку лучше запустить в ручную, чтобы убедиться, что все пакеты будут собраны без ошибок.
    Сборщик прекращает работу, если в процессе компиляции возникла какая-то ошибка. Логи ошибок можно найти в директории CFG[:log_dir]

    Хотя сборщик никто наверное не будет юзать, вопросы, советы и т.д. все-равно принимаются.