[devel] giter-factory: pkg_build_status
Alexey Tourbin
=?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Чт Авг 30 15:06:41 MSD 2007
Хорошо. Будем исходить из отказа от src.rpm и большой неопределенности
на стадии запроса собрать пакет из gear. КТО-ТО попросил собрать
КАКОЙ-ТО gear-репозитарий. Применять ACL на данном этапе глупо,
gear-репозитарий может называться как угодно, и мы НЕ ЗНАЕМ, что
же из него в конечном счёт может собраться. Единственный способ
это выяснить -- собрать gear-репозитарий.
Общий процесс выглядит так:
gear-request =
gear-repo
commit-id
packager = invoker
/-> build_arch i586 -> build_arch_status -\
gear-request --> build_arch x86_64 -> build_arch_status --> check_build_status -> pkg_build_status | reject
\-> build_arch ... -> build_arch_status -/
Наличие pkg_build_status означает что пакет более-менее собрался,
и теперь МЫ ЗНАЕМ что именно у нас собралось. А также мы знаем,
что именно нужно будет перекладывать в сизиф, если все последующие
проверки пойдут успешно (или если потом поступит подтверждение вручную).
Альнернативно, gear-request может получить reject. Это означает, что
пакет либо не собрался, либо собрался "совсем плохо".
Теперь детализирую эти идеи на псведокоде. Знак "=" касается
структур данных, знак "::" означает функцию, стрелка "->"
означает тип (сигнатуру) функции.
build_arch :: gear-request -> build_arch_status
can_build_srpm = gear hsh --build-args=-bs
srpm_NSVR = rpm -qp srpm
BuildRequires = rpm -qpR srpm
buildroot_base = hsh --initroot, hsh-shell rpm -qa
buildroot_BR = hsh-install BuildRequires, hsh-shell rpm -qa
buildroot_BR = buildroot_BR \setminus buildroot_base
hasher_exit_status = gear hsh
build_arch_status =
gear-request
can_build_srpm
srpm_NSVR
BuildRequires
buildroot_base
buildroot_BR
hasher_exit_status
RPMS.hasher/*.rpm
check_build_status :: build_arch_status+ -> pkg_build_status | reject
all primary arches must build (hasher_exit_status = 0 for primary_arches)
all srpm_NSVR must be the same (map this.srpm_NSVR build_arch_status+ |sort -u |wc -l => 1)
if at least one RPMS.hasher/*.rpm is noarch; then
# noarch packages must build essentially the same on all arches
# otherwise we DO NOT KNOW how to move them to sisyphus
RPMS.hasher/*.rpm set must be the same for all arches
rpm -qpl set must be the same for each RPMS.hasher/*.rpm for all arches
rpm -qp --requires set must be the same for each RPMS.hasher/*.rpm for all arches
rpm -qp --provides set must be the same for each RPMS.hasher/*.rpm for all arches, etc.
fi
pkg_build_status =
pkg = srpm_NSVR
build_arch_status+
Здесь есть такая идея, что нужно выделить primary архитектуры,
на которых ДОЛЖНО собраться, и выделить второстепенные архитектуры,
типа arm, для которых не нужно давать reject если он на ней не собрался.
Ну и вот. Когда есть pkg_build_status, то уже можно проверять ACL
и дальше уже пускать тесты.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20070830/d602be22/attachment-0001.bin>
Подробная информация о списке рассылки Devel