[devel] Х. Вынос сборочницы в пространство пользователя.
Igor Vlasenko
vlasenko на imath.kiev.ua
Сб Мар 23 15:38:42 MSK 2019
Уважаемые господа!
Продолжаю цикл писем, посвященный предложениям по улучшению
нашей сборочницы.
Письма I - VIII можно посмотреть здесь:
https://www.altlinux.org/Girar/Parallel
Я решил пока часть 2 Письма IХ пропустить,
вкратце, там планировал сказать, что на erlangish
commit = проверки целостности andalso merge .
Письмо Х. Вынос сборочницы в пространство пользователя.
-------------------------------------------------
В прошлом письме был ответ на вопрос "Кто виноват?" -
ответ - виновата недостаточная параллелизация работы
сборочницы, и, в особенности,
логическая ошибка в дизайне commit.
Пора ответить на вопрос "Что делать".
Что надо сделать?
1) исправление ошибок.
2. Вынос сборочницы в пространство пользователя.
Сборочница у нас одна, на живой системе.
Никто ее там чинить, отлаживать, оптимизировать не даст.
Но ее часть можно вынести в "userspace":
Аккуратно вырезать и опакетить
скрипты, связанные со сборкой, и скрипты, связанные с
проверками целостности, в отдельные независимые пакеты,
которые пользователи могут установить у себя
и запустить свою локальную сборочницу.
К примеру:
Делаем
$ gb-mk-task -b sisyphus[=/path/to/sisyphus] /path/to/task1dir /path/to/srpm1 \
/path/to/gitdir2=commit del=name rebuild=name
получаем готовую task1dir, точно такую же, как если бы мы ее
создали через интерфейс gyle и скачали с team.alt.
$ gb-task-show /path/to/task1dir
id=task1dir locked=no shared=no fail_early=yes test_only=yes repo=sisyphus owner=viy state=NEW try=1 iter=1
100:srpm=srpm1.src.rpm
100:userid=viy
100:pkgname=srpm1
200:dir=/path/to/srpm1dir
200:tag_name=1.2-alt1
200:tag_id=f61de636d910096267d958a7189628e11651290a
200:tag_author=Igor Vlasenko (ALT Linux Sisyphus) <viy на altlinux.org>
200:fetched=2019-03-13T11:05:54
200:userid=viy
200:pkgname=dd
да, то что надо.
$ gb-build-check --arches="i586 x86_64" --hurry /path/to/task1dir
собирается так же, как и на сборочнице.
с другой консоли можно посмотреть статус
$ gb-task-ls /path/to/task1dir
#/path/to/task1dir BUILDING [locked] #1 sisyphus srpm=dd-1.2-alt1.src.rpm ...
можно даже сделать свой форк сизифа и тестировать на нем:
$ gb-commit -b sisyphus /path/to/task1dir
[--hardlink|--symlink|--copy] \
--inrepo=/path/to/sisyphus1 \
--outrepo=/path/to/sisyphus2
Что это даст?
Позволит отлаживать и улучшать код сборочницы,
не трогая саму сборочницу, что резко улучшит ее
тестируемость и поддерживаемость.
Позволит эксперименты.
Например, реализовать альтернативный алгоритм
или проверку, или опимизацию, прогнать через
бенчмарки, сравнить.
Даст удобный инструмент майнтайнерам.
Я тоже не собираюсь остаться в стороне.
On Wed, Mar 20, 2019, Aleksey Novodvorsky wrote:
Андрей, инициатива наказуема. :)
Представьте план-проспект работ, за которые Вы могли бы взяться, с
описанием светлого будущего по завершении.
У меня есть своя сборочница, но она сейчас встроена в
скрипты для автоматизации работы нод кластера
Automated Package Maintainance Cluster
[ https://watch.altlinux.org/pub/monitor/ ]
Я хочу ее выдрать оттуда, и сделать более универсальной,
чтобы она могла принимать на вход и tasks в формате girar,
как описанные выше гипотетические пока скрипты
gb-build-check
gb-commit
затем добавить туда node resource manager
и реализовать в них различные алгоритмы параллелизации
сборки тяжелых task'ов, о которых я писал.
https://www.altlinux.org/Girar/Parallel
Получится альтернативная реализация
gb-build-check, которую по желанию можно будет
запускать на сборочнице вместо стандартной.
--
I V
Подробная информация о списке рассылки Devel