[devel] Re: I: Sisyphus-20050816 unmets: +7 (102/46)
Alexey Tourbin
=?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Вт Авг 16 03:17:52 MSD 2005
On Mon, Aug 15, 2005 at 04:36:32PM -0400, sergey ivanov wrote:
> Мне казалось, что incoming автоматически выбирал более ранние файлы
> чтобы их собрать раньше, и если другой затем попадался зависящий от
> него, то нужная часть вытаскивалась не из Сизифа а из результатов
> предыдущей сборки.
incominger (робот) переупорядочивает пакеты в очереди на пересборку,
это описано в incominger-0.0.7.3/docs/README (ищите гуглом). При этом
если робот дает сбой, то последствия могут быть гораздо хуже, чем если
бы оставалось старое правило для упорядочивания по BUILDTIME или st_mtime.
Нужно бы ввести правило, чтобы, вопреки какому-то там закону
термодинамики, количество unmet'ов в главном репозитарии не
увеличивалось. Если же транзакция увеличивает количество unmet'ов,
то пакеты, которые порождают unmet'ы, исключаются из транзакции и
помещаются в отстойник, до следующей обработки/транзакции.
Только вот как определить пакеты, которые порождают unmet'ы? Допустим,
в транзакции 100 пакетов, при этом от новой сборки xorg-x11 появляется
unmet у старой сборки ImageMagick. Можно исключать из транзакции по
одному пакету и смотреть, не уменьшилось ли количество unmet'ов. Так
в среднем за 50 итераций можно найти xorg-x11. С другой стороны, в
транзакции могут быть пакеты, который зависят от новой сборки xorg-x11,
так что при исключении из транзакции одного только xorg-x11 количество
unmet'ов не уменьшится.
В общем случае, получается, сначала нужно пробовать исключать по одному
пакету (C(100,1)=100 итераций), потом по два пакета (C(100,2)=4950
итераций), потом по три пакета (C(100,3) итераций) и т.д. Кажется, это
называется бином Ньютона. В целом потребуется 2^{100}-1 итераций, т.е.
$ perl -le 'print 2**100-1'
1.26765060022823e+30
$
Мда, астрономично. Нужен какой-нибудь более хитроумный dependency
solver. smartpm надо бы поковырять, но там питон. :)
> Ну это лирика, а конкретный вопрос: что делать? Просто touch я в
> incoming/Sisyphus сделал, этого достаточно?
Нет, задним числом пакеты в репозитарии заменять нельзя.
Наверное, робот сможет добавить .1 к релизу.
Кстати, я написал/дописал утилиту для *упрощенного* поиска unmet'ов.
Казалось бы, куда уж проще, но всё же...
$ ./unmets -s m24-sources.list
ant#1.6.2-alt2 j2se-devel (>= 1.2)
bigloo#2.6d-alt1 j2se1.4-blackdown-devel
emacs-xslt-process#2.2-alt9 j2se1.4-blackdown
kernel-modules-slmdm-std-smp#1:2.7.10-alt19.12 kernel-modules-slmdm-data
kernel-modules-slmdm-std-up#1:2.7.10-alt19.12 kernel-modules-slmdm-data
kernel-modules-slmdm-vs-smp#1:2.7.10-alt19.12.1 kernel-modules-slmdm-data
nvclock#0.6.2-alt2 NVIDIA_GLX
trang#0.1.20030619-alt1 j2se1.4-blackdown
uqm-big#0.3-alt3 uqm-voice (= 0.3)
uqm-bin#0.3-alt1 uqm-content (= 0.3)
uqm-maxi#0.3-alt3 uqm-remix-pack1
uqm-maxi#0.3-alt3 uqm-remix-pack2
uqm-maxi#0.3-alt3 uqm-remix-pack3
uqm-maxi#0.3-alt3 uqm-voice (= 0.3)
xml-commons-resolver#1.1-alt2 j2se (>= 1.4.2)
$
Будет в qa-robot-0.2 (для тех, кто в танке, -- в /raid/at/qa/qa-robot).
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?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/20050816/e0b7a4e0/attachment-0001.bin>
Подробная информация о списке рассылки Devel