From: Alexey Tourbin <at@altlinux.ru>
To: devel@lists.altlinux.org
Subject: [devel] giter-factory: pkg_build_status
Date: Thu, 30 Aug 2007 15:06:41 +0400
Message-ID: <20070830110641.GB1332@solemn.turbinal> (raw)
[-- Attachment #1: Type: text/plain, Size: 2886 bytes --]
Хорошо. Будем исходить из отказа от 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
и дальше уже пускать тесты.
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
next reply other threads:[~2007-08-30 11:06 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-30 11:06 Alexey Tourbin [this message]
2007-08-30 12:07 ` Alexey Tourbin
2007-08-30 12:33 ` Kirill A. Shutemov
2007-08-30 12:44 ` Alexey Tourbin
2007-08-30 13:11 ` Kirill A. Shutemov
2007-08-30 13:15 ` Kirill A. Shutemov
2007-08-30 15:12 ` Dmitry V. Levin
2007-08-30 15:24 ` Alexey Tourbin
2007-08-30 15:54 ` Dmitry V. Levin
2007-08-30 16:04 ` Kirill A. Shutemov
2007-08-30 16:11 ` Dmitry V. Levin
2007-08-30 16:14 ` Alexey Tourbin
2007-08-30 20:38 ` Alexey Tourbin
2007-08-30 15:43 ` Alexey Tourbin
2007-08-30 16:00 ` Dmitry V. Levin
2007-08-30 17:27 ` Alexey Tourbin
2007-08-30 17:40 ` Dmitry V. Levin
2007-08-30 17:50 ` Alexey Tourbin
2007-08-30 18:00 ` Dmitry V. Levin
2007-08-30 20:26 ` Kirill Shutemov
2007-08-30 16:01 ` Dmitry V. Levin
2007-08-30 16:50 ` Alexey Tourbin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20070830110641.GB1332@solemn.turbinal \
--to=at@altlinux.ru \
--cc=devel@lists.altlinux.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
ALT Linux Team development discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
public-inbox-index devel
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.devel
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git