ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] giter-factory: pkg_build_status
@ 2007-08-30 11:06 Alexey Tourbin
  2007-08-30 12:07 ` Alexey Tourbin
  2007-08-30 16:01 ` Dmitry V. Levin
  0 siblings, 2 replies; 22+ messages in thread
From: Alexey Tourbin @ 2007-08-30 11:06 UTC (permalink / raw)
  To: devel

[-- 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 --]

^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2007-08-30 20:38 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-08-30 11:06 [devel] giter-factory: pkg_build_status Alexey Tourbin
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

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