CoreSystem/SpecCriticism: различия между версиями

Материал из ALT Linux Wiki
(Новая страница: «{{Stub}} == Что не так с rpm и спеками == === Затруднена рефлексия === Теги и секции в спеке начинают анализироваться после раскрытия макросов. Это означает, что о спеке ничего нельзя сказать, не раскрыв рекурсивно все макросы. Более того, конструкция `%()` раскрыва...»)
(нет различий)

Версия от 10:21, 26 ноября 2023

Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.


Что не так с rpm и спеками

Затруднена рефлексия

Теги и секции в спеке начинают анализироваться после раскрытия макросов. Это означает, что о спеке ничего нельзя сказать, не раскрыв рекурсивно все макросы. Более того, конструкция `%()` раскрывается в результат исполнения произвольного кода на шелле. Соответственно, из спека в общем случае невозможно что-либо достать, не раскрыв все макросы и не исполнив все встроенные шелльные вставки — включая информацию о версии, релизе и лицензии. Это затрудняет анализ спеков без необходимости сборки спека, в том числе массовый.

Стандартные инструменты авторов пакетов ALT Linux Team прибегают к эвристикам для получения этой информации в надежде, что в 95% случаев этого достаточно.

Зависимость от архитектуры

В силу того, что язык спеков — макроязык без костей (см. предыдущий параграф), очень легко сделать SRPM (не "бинарный" пакет, а исходный), зависящий от архитектуры. Если, например, собрать такой пакет в репозиторий, то опубликован будет один из этих srpm, но продуктовые ("бинарные") пакеты будут собраны из srpm, раскрытых в окружении с определённым %arch.