[devel] Пересборка питона

Ivan Zakharyaschev imz на altlinux.org
Вт Мар 22 01:26:12 MSK 2016


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


Подробная информация о списке рассылки Devel