== Архитектурно-зависимые фрагменты == === Makefile === Достаточно воспользоваться ifeq/ifneq, сравнивая $(ARCH) с нужным: ifeq (x86_64,$(ARCH)) EFI_LISTS := $(call tags,base efi) endif При необходимости сравнить со списком ("любой x86") можно сделать так: ifeq (,$(filter-out i586 x86_64,$(ARCH))) use/x11/xorg: use/x11 use/x11/intel use/firmware else use/x11/xorg: use/x11 endif В рецептах (shell-часть Makefile) используйте $(ARCH) или $$ARCH. === скрипты === В скриптовых хуках ({image-,}scripts.d/*) проверяйте $GLOBAL_ARCH. === списки пакетов, профили групп === Бывает так, что в списке пакетов есть смысл упоминать какой-либо из них только для определённой архитектуры (например, wine или steam); в таких случаях можно воспользоваться механизмом подстановки, который пословно обрабатывает списки и в случае наличия суффикса @ARCH оставляет только слова, в которых этот суффикс соответствует заданной архитектуре сборки. Например, для Simply Linux в mkimage-profiles-desktop есть строчки: @I586_ONLY@haspd @X86_64_ONLY@i586-haspd В случае mkimage-profiles они должны выглядеть так: haspd@i586 i586-haspd@x86_64 или упрощённо (с версии 1.2.12): haspd@IA32 С версии 1.3.15 поддерживается макрос E2K ("любое поколение e2k*") и ARM (armh или aarch64), а также выборка "для любой архитектуры, кроме" (например, @!E2K, или "@!ARM). Для преобразования можно воспользоваться следующей командой: sed -r -e 's/@I586_ONLY@([^\t ]+)/\1@i586/g' \ -e 's/@X86_64_ONLY@([^\t ]+)/\1@x86_64/g' При необходимости добавить пакет только на x86-архитектурах (неважно, i586 или x86_64) можно воспользоваться макросом X86 (с версии 1.2.12): xorg-drv-intel@X86 Аналогичная функциональность реализована для профилей установки. === загрузчики === Как правило, сперва понадобится доработка mkimage -- см. скрипты tools/mki-pack-*boot -- и лишь затем профиля; см. тж. lib/boot.mk и фичу pack.