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).