[devel] Изменения в сборочнице

Alexey Tourbin alexey.tourbin на gmail.com
Пн Сен 3 11:48:04 MSK 2018


2018-09-03 10:00 GMT+03:00 Vladimir D. Seleznev <vseleznv на altlinux.org>:
> On Mon, Sep 03, 2018 at 04:38:22AM +0300, Alexey Tourbin wrote:
>> 2018-08-30 23:42 GMT+03:00 Vladimir D. Seleznev <vseleznv на altlinux.org>:
>> > Доброго времени суток!
>> >
>> > Не раньше завтрашнего вечера в сборочнице произойдут следующие
>> > изменения:
>> >
>> > * будет запрещено копирование пакетов в бранчи;
>> > * будет разрешена пересборка пакетов для Sisyphus без повышения релиза
>> > пакета с помощью команды rebuild.
>>
>> А почему будет запрещено копировать пакеты в бранчи?  Потому что были
>> случаи, что скопированные пакеты не работают?  Но ведь целый класс
>> пакетов, таких как 0ad-data.noarch, иммьюн к особенностям бранчей.
>
> Это правда, но мне видится корректным решением собирать пакеты в родном
> окружении, нежели копировать из чужого бранча. А если такой иммьюнный
> пакет не соберётся, то это явный признак, что что-то идёт не так.

Ну значит некоторые пакеты все же копировать можно, но поскольку мы
наверняка не знаем, какие именно можно, а какие нельзя, то проще
запретить. Этот принцип действия называется "как бы чего не вышло", и
он мне не нравится тем, что отметает все рациональные построения по
части зависимостей как недостаточные. Кстати, и термин "родное
окружение" - он ведь не чисто технический, а с элементом метафоры.
Неохота досконально разбираться, что там происходит в каждом отдельном
случае, какие бывают классы случаев и т.п. Проще окрестить это
неродной средой и вздохнуть с облегчением.

И все же как стратегия минимизации риска запрет копирования имеет
некоторый смысл. Но это крайняя мера, которая проистекает из крайнего
незнания и крайнего риска. Животное когда слышит, что в кустах что-то
шуршит, то оно не знает, притаился ли там лев, или же это просто
ветерок дует.  Но с точки зрения выживания ему гораздо выгоднее
убежать, даже если это всего лишь ветерок (по-научному это называется
risk aversion as an evolutionary adaptation и т.п.).  То есть еще и
цена ошибки сюда примешивается, в духе Pascal's wager. Но более
осмысленное управление рисками появляется только по мере прогресса
знания. А из одного только незнания ничего более умного, кроме как
бежать и запрещать, извлечь нельзя.

>> Ну и знаете, бывали случаи, что и собранные в родной бранч пакеты не
>> работают. (Помню,  во время сборки кончилось место на диске, и у
>> Виталика Кузнецова собралась Самба с утранкейтеным бинариком. В самом
>> конце его зарезал bad_elf_symbols. Но пасаран!)
>>
>> Другими словами, плохие линии аргументации опираются на anecdotal
>> evidence.  Типа, а знаете что бывает?  Один мужик ночью вышел на
>> улицу, а там НЛО прилетело и его забрало.  Поэтому не надо по ночам
>> шастать по улице.
>
> А ещё бывают формально собранные корректно, без внешних вредящих
> факторов, но не работающие по самым разным причинам, которые наши
> проверка не отлавливают, и отловить которые в общем случае невозможно.
> Но эти всё не относится к копированию и не говорят в пользу того, что
> копирование пакетов — хорошая практика.

Надо было систематизировать все случаи неработоспособности пакетов
после копирования. Без этого получается решение, основанное на
незнании.

>> А также мне не нравится идея, чтобы в пакет прибивать гвоздями
>> информацию, для какого бранча он собран.
>
> Чем?

Ох... Ну я ставлю под сомнение "стабильный бранч" как первичное
понятие. Это понятие вторичное, маркетинговое и подражательное Ред
Хату.  А первичное понятие - это пакет coreutils, в нем лежит
программа /bin/cat, которая слинкована с libc.so.6 и т.д.
Спрашивается, к какому бранчу по классификации Линнея этот пакет
относится, к ALT SP 7 или к GOMIX 8?  Куда он направлялся своим
сборщиком, и где его жизненное предназначение?  Телеология на марше.

Представьте на секунду, что есть дистрибутив, который состоит из
"голых" пакетов %name-tar.gz, и устанавливаются они командой (cd / &&
tar xf).  Замнем также некоторые несущественные детали.  В таком
дистрибутиве действительно единственной стратегией является жесткая
сегрегация подходящих и не подходящих под этот дистрибутив пакетов,
поскольку понятия информации о пакете нету, и восстановить
метаинформацию никак нельзя. Надо брать пакеты из правильной папки, в
которой они лежат! А иначе all bets are off.

К понятию "стабильный бранч" есть много других претензий, и я даже не
знаю, стоит ли начинать и ввязываться в этот разговор.  Например, Ред
Хат в мошенническим образом (по нашим понятиям) поставляет в свои
старые дистрибутивы новый тулчейн (он называется devtoolset-7, и
насколько я понял, он даже не собирается из исходников, а откуда-то
готовые бинарики копируются).  Потому что дистрибутив со старым
тулчейном быстро девальвируется по объективным рыночным к нему
ожиданиям. Андрей Черепанов в телеграме кажется жаловался, что новый
софт часто не удается собрать в старые бранчи из-за старого
компилятора, прямо хоть новый gcc.tar.gz в firefox.src.rpm
заворачивай. Так. А тогда собственно возникает вопрос о ценности
бранча. В чем вообще ценность этого вашего стабильного дистрибутива
состоит, если в нем gcc.tar.gz нужно всегда иметь под рукой? Вопрос
этот я боюсь в конечном счете не технический.

>> Надо было протоколировать все неочевидные случаи нарушения
>> работоспособности после копирования и докапываться до причины, что там
>> произошло, и дальше думать, как вынести релевантную информацию в
>> зависимость у пакета.  Надо делать зависимости более достаточными в
>> плане описания работоспособности, а не искусственно сегрегировать
>> пакеты по предначертанному признаку.
>
> Если бы это было возможно в общем случае. Вы способны формализовать, что
> такое работоспособный пакет?

Ну вот есть какая идея. При сборке пакета же выполняется "make test".
Надо научиться так перепаковывать этот "make test", чтобы он мог
выполняться в любой момент супротив установленного пакета в
хост-системе, а не токмо в дереве сборки. Тогда работоспособность
"make test" - это хороший признак работоспособности пакета в новом
окружении.

Но конечно это нельзя всё поставить на поток к завтрашнему дню.
Наследие sourсe-based дистрибутивов тянет нас назад, и еще очень долго
будет тянуть.


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