[devel] пересборка

Mikhail Novosyolov mikhailnov на altlinux.org
Пн Ноя 30 19:54:47 MSK 2020


20.11.2020 22:51, Dmitry V. Levin пишет:
> On Fri, Nov 20, 2020 at 09:40:58PM +0300, Mikhail Novosyolov wrote:
>> 20.11.2020 20:52, Anton Farygin пишет:
>>> On 20.11.2020 20:47, Dmitry V. Levin wrote:
>>>> On Fri, Nov 20, 2020 at 07:24:59PM +0300, Mikhail Novosyolov wrote:
> [...]
>>>>> Отсутствие полной пересборки после бранчевания - это просто экономия времени и машинных ресурсов (вряд ли), или чем-то еще обусловлено?
>>>> Полная пересборка после бранчевания - это концептуально неправильно,
>>>> по-хорошему, пересобирать нужно всегда, когда результат пересборки
>>>> меняется, не дожидаясь бранчевания.
>>>>
>>> согласен.  не очень сложно выяснить, нужно ли пересобирать пакет.
>> Недавно в devel@ обсуждался хороший пример, почему это не совсем так: многие пакеты используют лишь заголовки из boost, не линкуясь с ним, все методы определения необходимости пересборки покажут, что пересборка не нужна, но ведь она нужна для уверенности в поддержании пакета в пересобираемом состоянии как минимум. Также могут меняться структуры данных и пр., оставляя внешние символы теми же самыми, такое тоже не отловится существующим инструментарием, гораздо надежнее пересобрать.
> Лучше всего, когда уверенность основывается на знании.
>
> Если все методы определения необходимости пересборки покажут, что
> пересборка не нужна, значит, либо методы неправильные, либо пересборка
> действительно не нужна.
>
> Например, если NT_GNU_BUILD_ID у файла после пересборки с другим boost
> не поменялся, значит, его пересобирать не надо.
>
> Грубо говоря, алгоритм может быть такой:
> 1. определяем все пакеты, у которых поменялась сборочная среда;

Думаете, будет много пакетов, у которых N, E, V, R, DistTag, Buildtime всех пакетов из сборочного окружения не изменились? Ведь даже rpm-build должен быть строго одинаковым, а если в одном бранче он начинает отличаться от другого, то всё. Или обсуждаемый в соседней ветке altlinux-release.

Мне на глаз (пальцем в небо) кажется, что таких пакетов будет очень мало.

Можно проверять одинаковость раскрытия спека (rpmspec --parse), в т.ч. формируемых макросами скриптлетов.

> 2. пересобираем все эти пакеты;
> 3. те из них, которые в результате пересборки поменялись, коммитим в репозиторий.
>
>


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