On Wed, Sep 16, 2009 at 07:03:15AM +0400, Денис Смирнов wrote: > AT> Поэтому сейчас сборка идёт на repo + RPMS.hasher overlay, а план A0->A1 > AT> вычисляется только в самом конце. Я когда-то решил что ничего лучше > AT> придумать нельзя. С наскоку по крайней мере. > AT> А как сюда вписать дупы в пределах самого задания? Сейчас работает > AT> логика "в промежуточное состояние мы в принципе не вклиниваемся", > AT> а дупы просто запрещены. Поменять её на логику "в промежуточное > AT> состояние мы в принципе вклиниваемся" это очень круто. > > После сборки каждого пакета удалять дупы в оверлее? Я же говорю, в промежуточное состояние мы в принципе не вклиниваемся. То есть по принципиальным соображениям, это философия такая. Если мы вклиниваемся в промежуточное состояние, то автоматически встает вопрос, какие требования мы предъявляем к промежуточному состоянию. Например, какие требования должны выполняться при замещениии пакетов. Эти требования появляются помимо нашего желания, сразу же как только мы подумали что можно было бы немного вклиниться в промежуточное состояние. > Алгоритм следующий: > а) удалить все дупы по srpm; > б) удалить все бинарные пакеты, для которых были убиты srpm; > в) если после этого остались дупы по бинарным пакетам -- удалить > соответствующие srpm и повторить цикл Если удалять таким образом дупы в оверлее (после сборки каждого пакета), то нужно таким же образом удалять дупы в основном репозитарии (после сборки каждого пакета). Это можно выразить так: hsh каждый раз должен выполняться на репозитарии строго без дупов. Теперь представь себе что был один исходный пакет и апстрим его попилил на два исходных пакета. Пусть например был исходный пакет xorg из которого собиралась кучка пакетов типа libX11 а теперь ты залил пакет libX11 который собирается сам из себя. Теперь по пункту "б" надо делать строгое замещение: выкинуть все иксы, а добавить только libX11. Если мы так сделаем (между сборкой первого и второго пакета), то с промежуточным репозитарием произойдёт что-то очень нехорошее: в промежуточном репозитарии появится слишком много анметов. Но про это лучше не думать! > AT> А новую модель с бутстрапом в общем виде можно описать так. > AT> Собрать n пакетов, выбрать из них m пакетов, m AT> только с учетом выбранных m пакетов. Тогда ясно что если переход A0->A1 > AT> выполнен только с учетом m пакетов, то часть информации потерялась. > AT> То есть начать собирать эти пакеты заново и получить A1 уже нельзя > AT> даже в принципе. > > Да, сохранение информации из task'ов является необходимым, и от этого > никуда не убежать.