[devel] noarch и %ifarch, или о primary += aarch64
Michael Shigorin
mike на altlinux.org
Вт Май 22 09:29:09 MSK 2018
Здравствуйте.
Вчера пришлось вспоминать экспериментально на примере
startup-rescue один неочевидный момент, который голосом
(как минимум) уже озвучивался, но не помню, был ли хоть
где-то зафиксирован письменно (ключевая фраза была вроде
"у нас по факту не noarch, а any-x86" в исполнении ldv@).
Он касается использования BuildArch: noarch совместно с %ifarch
в спеке и собирается кусаться при вводе aarch64 как третьей
синхронной архитектуры.
Вкратце:
между x86 и не-x86 можно менять зависимости, но не состав пакета
и:
стоит ли принуждать к noarch, если в спеке есть %ifarch?
Происходит так потому, что сравнение происходит по составу
собравшегося для текущих синхронных архитектур i586 и x86_64 --
т.е. если состав пакета, заявленного как noarch, между ними
отличается, сборка останавливается по той простой причине, что
в итоговый noarch repo идёт только один из них и если пакеты
различаются по существу, этот выбор будет заведомо ошибочным
для одной из итоговых суммарных конфигураций ($arch+noarch).
Заинтересованные могут посмотреть girar.git, скажем, у glebfm@:
gb/gb-task-check-noarch-i по строчке
error (#$i): the whole $srcN source package should be made noarch
Конкретно мне надо было исключить из startup-rescue зависимости,
которые водятся только на x86, насколько знаю -- dmidecode
и ddcprobe.
Первая попытка: http://webery.altlinux.org/task/206752
(в районе беты стартеркитов задание должно протухнуть)
-BuildArch: noarch
(поскольку смутно припоминал такую грабельку)
-Requires: dmidecode ddcprobe altquire
+%ifarch %ix86 x86_64
+Requires: dmidecode ddcprobe
+%endif
+Requires: altquire
+Requires: agetty
Результат:
warning (#100): startup-rescue-0.29-alt1.i586.rpm should be .noarch.rpm
error (#100): the whole startup-rescue source package should be made noarch
Вторая попытка: http://webery.altlinux.org/task/206754
(отличается на оставленный BuildArch: noarch)
-Requires: dmidecode ddcprobe altquire
+%ifarch %ix86 x86_64
+Requires: dmidecode ddcprobe
+%endif
+Requires: altquire
+Requires: agetty
Результат сборки странный и не имеет отношения к поднятой проблеме
(опишу в конце сообщения), поэтому вот для архива ссылка на
эквивалентную второй в плане архитектур третью попытку и коммит:
http://git.altlinux.org/tasks/archive/done/_201/206755/logs/events.1.1.log
http://git.altlinux.org/tasks/index/sisyphus/done/206755/gears/100/git?p=git;a=commitdiff;h=cb4fae5628e5ca28e7a24df0cf3eea4149c2bca2
Также во всех этих заданиях фигурировал следующий фрагмент,
который и должен будет взорваться, когда aarch64 станет тоже
первичной/синхронной архитектурой:
+%ifarch %ix86 x86_64
install -pm755 fixmbr find-fstab %buildroot/sbin/
+%endif
В общем, предлагаю при наличии в спеке ^(%ifarch|%ifnarch)
смягчать эту ошибку до предупреждения (видимо, включив в него
отсылку к наблюдаемому %ifarch, чтоб не забывать о нём порой).
-------------------------------------------------------------
Сбой сборки задания #206754 выглядит так:
The following packages have unmet dependencies:
startup-rescue: Depends: /sbin/find-fstab
Что и где сломалось с учётом того, что /sbin/find-fstab лежит
в этом же пакете -- пока не понял.
--
---- WBR, Michael Shigorin / http://altlinux.org
------ http://opennet.ru / http://anna-news.info
Подробная информация о списке рассылки Devel