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

Sorcus

Sorcus. A New Beginning.
Регистрация
10 Июл 2011
Сообщения
513
Реакции
1.002
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!

Скрипт сделан на основе следующих скриптов:
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся

Лицензия:
GPLv3

Исходники на BitBucket - Для просмотра ссылки Войди или Зарегистрируйся
Приветствуются предложения, советы и критика.
 
Обновленная версия сборщика пакетов для Archlinux из AUR
Для просмотра ссылки Войди или Зарегистрируйся
Сборщик пакетов теперь выполнен в виде интерактивной консоли.
Список всех команд можно получить написав /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, инициализацию локального репозитория.
 
Последнее редактирование:
Упрощенная версия сборщика. Работает только с PKGBUILD-ами, находящимися в директории CFG[:рkgbuild_dir].
Для просмотра ссылки Войди или Зарегистрируйся
Работа с 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]

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