Knobs: различия между версиями
(нач) |
м (→архитектуры: _target_cpu) |
||
Строка 38: | Строка 38: | ||
# ... | # ... | ||
%ifarch %qt5_qtwebengine_arches | %ifarch %qt5_qtwebengine_arches | ||
В некоторой мере повлиять на эту данность (в случае совместимости сверху вниз -- i586 может выполнять код для i486) можно явным заданием версии архитектуры, например: | |||
$ rpm -bb --define '_target_cpu e2kv4' *.spec | |||
= Ссылки = | = Ссылки = |
Версия от 09:52, 29 февраля 2024
Ручки при сборке
Бывает, что в зависимости от условий пакет требуется собирать по-разному -- в bootstrap-режиме или полноценно, с той библиотекой или с этой; для этого в RPM существуют "ручки", симметричные configure-овым --disable/--enable и --with/--without.
когда какие
Как правило, --disable/--enable применяются ко внутренней функциональности проекта (включить или выключить сборку/применение какой-либо части его кода), а --with/--without -- ко внешней (собираться ли с такой-то отдельной библиотекой).
как
Поведение по умолчанию задаётся макросами %def_*:
%def_with python3 %def_without bootstrap %def_enable guile %def_disable snapshot
Условные части spec-файла обрамляются так:
%if_with python3 BuildRequires(pre): rpm-build-python3 %endif
либо так (однострочная форма более кратка и менее читабельна):
%{?_with_python3:BuildPreReq: rpm-build-python3}
Условия могут быть вложенными, в этом случае следует внимательно следить за их своевременным закрытием.
архитектуры
Данностью является целевая архитектура сборки -- для неё существует особая форма %ifarch/%ifnarch, принимающая список архитектур:
%ifarch %e2k ppc64le %def_enable webkit %else %def_disable webkit %endif
Для некоторых ходовых компонентов, состояние поддержки которых по архитектурам может меняться со временем (причём в любую сторону), сделаны макропакеты rpm-macros-*; например:
BuildRequires(pre): rpm-macros-qt5-webengine # ... %ifarch %qt5_qtwebengine_arches
В некоторой мере повлиять на эту данность (в случае совместимости сверху вниз -- i586 может выполнять код для i486) можно явным заданием версии архитектуры, например:
$ rpm -bb --define '_target_cpu e2kv4' *.spec