On Wed, Aug 22, 2007 at 01:43:21AM +0400, Alexey Tourbin wrote: > "Полную пересборку сизифа" следует трактовать не буквально, а вот как: > пересобрать все пакеты, у которых при сборке в билдрут ставится один из > новых пакетов. Это означает, что, с учетом поступивших пакетов, для > каждого src.rpm пакета формируется список пакетов для билдрута. Если в > списке пакетов для билдрута оказывается новый пакет, то этот src.rpm > пакет подлежит пересборке. [...] > Техническая проблема на подступах к определению списка пакетов, подлежащих > пересборке, было в том, что нужно научиться очень быстро строить список > пакетов в билдруте при сборке каждого src.rpm пакета. Стандартный > способ (который используется в hasher, через --print-uris) занимает > порядка одной секунды на src.rpm пакет. Это связано с тем, что apt всё > время перечитывает свой кеш. В сизифе около 6000 src.rpm пакетов, значит, > определять, какие из них нужно пересобрать, можно около 2 часов. Это > даже больше, чем может занять последующая пересборка обнаруженным таким > образом src.rpm пакетов. У меня сейчас зреет решение, как немного > захачить апт и написать к нему скрипт на lua, чтобы построение списка > пакетов для пересборки по времени сводилось к чтению хедеров src.rpm > пакетов. Я придумал решение (захачил апт, чтобы он не перечитывал кеш, написал скрипт на lua и кое-что ещё), при котором скорость --print-uris на моей машине сейчас около 5 src.rpm пакетов в секунду. Получается всё равно достаточно много -- выяснять, какие из 6000 src.rpm пакетов нужно пересобирать, придётся минут 20. Боюсь, что намного быстрее уже не получится. Опубликую и напишу в ближайшее время.