On Mon, 21 Mar 2016, Ivan Zakharyaschev wrote: > Вторая половина списка начинается с циклов и продолжается тем, что от > пакетов в циклах зависит для сборки. Если будут предложения как > собрать, разорвав циклы, тот или иной пакет из второй половины списка > (в виде тега, собирающегося в hasher-е с подключённым 159698), дайте > знать. Я тогда добавлю Ваш тег в задание и автоматически пачку > пакетов, которая становится собираемой. > > Если опираться на данные ufb (used for build) (с учётом замечания ldv@ > про возникшие несущественные зависимости к прошлому сообщению на эту > тему: здесь я сначала оставил только бинарные пакеты с unmet-ами, > потом отобразил их на исходные), то в петли и циклы длины 2 попадают > такие 10 пакетов: > > $ make nodes-of-cycles-src-ufb-python3_too_early > join -1 2 <(sort -k2 < src-ufb-python3_too_early) src-ufb-python3_too_early > -o 1.1,2.2 \ > | egrep -x '(.*) \1' | cut -d' ' --fields=1 \ > | sort -u > nodes-of-cycles-src-ufb-python3_too_early > $ cat nodes-of-cycles-src-ufb-python3_too_early > python-module-gevent > python-module-lxml > python-module-matplotlib > python-module-mistune > python-module-numpy > python-module-scikits.statsmodels > python-module-scipy > python-module-zmq > python-module-zope.container > python-module-zope.interface > $ > > Понял, что моё предположение, что препятствия для пересборки -- это > только петли и циклы длины 2 в ufb, неверно. (Конечно, если из нашего По совпадению оказалось, что в этом случае это достаточное приближение для решения задачи (м.б. неоптимальное). Посмотрел для начала (скриптиком, которым составляю список для сборки -- buildable-closure.sh), что если научиться собирать эти 10 пакетов, то все остальные собираются, т.е. даже если и есть ещё циклы (например, через pygobject или pygobject3), они будут этими 10-ью узлами разрезаны все. > списка пакет A для сборки требует B, B требует C, а C требует A, то > каждую пару мы упорядочить могли бы, если бы не было третьего пакета, > требующего пересборки.) Пошлю в продолжение этого письма дополнение. > (Файл остающихся ограничений по сборке приложен, можно сказать tsort > на него, но он петли пропустит.) Вот как устроены их зависимости между собой (по ufb). Необязательно резать в них, но хочется проиллюстрировать ситуацию недлинным списком. Бросается в глаза, что есть группа пакетов, которая в сборочной среде часто ходит всемером (см. первые 7 строчек и повторение их же в сборочной среде других пакетов). $ ./restrict-rel nodes-of-cycles-src-ufb-python3_too_early < src-ufb-python3_too_early python-module-gevent python-module-gevent python-module-gevent python-module-lxml python-module-gevent python-module-matplotlib python-module-gevent python-module-mistune python-module-gevent python-module-numpy python-module-gevent python-module-zmq python-module-gevent python-module-zope.interface python-module-lxml python-module-gevent python-module-lxml python-module-lxml python-module-lxml python-module-matplotlib python-module-lxml python-module-mistune python-module-lxml python-module-numpy python-module-lxml python-module-zmq python-module-lxml python-module-zope.interface python-module-matplotlib python-module-numpy python-module-matplotlib python-module-scipy python-module-mistune python-module-gevent python-module-mistune python-module-lxml python-module-mistune python-module-matplotlib python-module-mistune python-module-mistune python-module-mistune python-module-numpy python-module-mistune python-module-zmq python-module-mistune python-module-zope.interface python-module-numpy python-module-gevent python-module-numpy python-module-lxml python-module-numpy python-module-matplotlib python-module-numpy python-module-mistune python-module-numpy python-module-numpy python-module-numpy python-module-zmq python-module-numpy python-module-zope.interface python-module-scikits.statsmodels python-module-gevent python-module-scikits.statsmodels python-module-lxml python-module-scikits.statsmodels python-module-matplotlib python-module-scikits.statsmodels python-module-mistune python-module-scikits.statsmodels python-module-numpy python-module-scikits.statsmodels python-module-scikits.statsmodels python-module-scikits.statsmodels python-module-scipy python-module-scikits.statsmodels python-module-zmq python-module-scikits.statsmodels python-module-zope.interface python-module-scipy python-module-gevent python-module-scipy python-module-lxml python-module-scipy python-module-matplotlib python-module-scipy python-module-mistune python-module-scipy python-module-numpy python-module-scipy python-module-zmq python-module-scipy python-module-zope.interface python-module-zmq python-module-gevent python-module-zmq python-module-lxml python-module-zmq python-module-matplotlib python-module-zmq python-module-mistune python-module-zmq python-module-numpy python-module-zmq python-module-zmq python-module-zmq python-module-zope.interface python-module-zope.container python-module-lxml python-module-zope.container python-module-zope.container python-module-zope.container python-module-zope.interface python-module-zope.interface python-module-zope.interface $ -- Best regards, Ivan