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

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


=== Зависимость от архитектуры ===
=== Зависимость от архитектуры ===
В силу того, что язык спеков — макроязык без костей (см. предыдущий параграф), очень легко сделать SRPM (не "бинарный" пакет, а ''исходный''), зависящий от архитектуры. Если, например, собрать такой пакет в репозиторий, то опубликован будет ''один'' из этих srpm, но продуктовые ("бинарные") пакеты будут собраны из srpm, раскрытых в окружении с определённым {{term|%arch}}.
В силу того, что язык спеков — макроязык без костей (см. предыдущий параграф), очень легко сделать SRPM (не "бинарный" пакет, а ''исходный''), зависящий от архитектуры: например, [https://lore.altlinux.org/devel/334b9a3d-2242-6ef7-a377-68817f639fb4@altlinux.org/t с разным списком патчей и сурсов] на разных архитектурах. Если, например, собрать такой пакет в репозиторий, то опубликован будет ''один'' из этих srpm, но продуктовые ("бинарные") пакеты будут собраны из srpm, раскрытых в окружении с определённым {{term|%arch}}.
Это стреляет в разных местах: например, на пересборочницу на всех архитектурах попадает общий srpm.

Текущая версия от 10:47, 26 ноября 2023

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


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

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

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

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

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

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