Один файл SPEC для поддержки нескольких архитектур - PullRequest
1 голос
/ 08 апреля 2019

Я изменяю файл SPEC RPM для сборки для архитектуры x86_64. Существующий SPEC включает в себя пакет, применимый только к 32-разрядной версии, т. Е. Requires: package-x-y-z. Как убрать требование package-x-y-z просто для архитектуры x86_64, при этом требуя, чтобы другие ОС использовали его?

Я пытался использовать %ifnarch x86_64 до строки Requires: package x-y-z, но безуспешно.

Я мог бы создать отдельные файлы SPEC, но в идеале этот один файл SPEC будет поддерживать обе архитектуры для лучшей управляемости.

1 Ответ

1 голос
/ 09 апреля 2019

Возможно, вы используете BuildArch также в вашем spec-файле?

Я только что проверил это на x86_64 сборочной машине со файлом spec, где

BuildArch: noarch

и действительно

%ifnarch x86_64
Requires: package-x-y-z
%endif

создал пакет, для которого требовался package-xyz ...

Поскольку мой файл спецификаций создает пакет noarch, я попытался изменить логику;и

%ifnarch noarch
Requires: package-x-y-z
%endif

создал пакет, который не зависит от package-xyz.

Заключение

Если вы используете BuildArch чем макросы ifarch и ifnarch будут соответствовать этой архитектуре, а не архитектуре вашей реальной машины сборки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...