[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