archdep.txt 3.04 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
== Архитектурно-зависимые фрагменты ==

=== 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.

25
=== списки пакетов, профили групп ===
26 27 28 29 30 31 32 33 34

Бывает так, что в списке пакетов есть смысл упоминать какой-либо из них
только для определённой архитектуры (например, wine или steam); в таких
случаях можно воспользоваться механизмом подстановки, который пословно
обрабатывает списки и в случае наличия суффикса @ARCH оставляет только
слова, в которых этот суффикс соответствует заданной архитектуре сборки.

Например, для Simply Linux в mkimage-profiles-desktop есть строчки:

35 36
  @I586_ONLY@haspd
  @X86_64_ONLY@i586-haspd
37 38 39

В случае mkimage-profiles они должны выглядеть так:

40 41
  haspd@i586
  i586-haspd@x86_64
42

43 44 45 46
или упрощённо (с версии 1.2.12):

  haspd@IA32

47 48 49
С версии 1.3.15 поддерживается макрос E2K ("любое поколение e2k*") и
ARM (armh или aarch64), а также выборка "для любой архитектуры, кроме"
(например, @!E2K, или "@!ARM).
50

51
С версии 1.4.21 поддерживается перечисление архитектур через запятую
52
после "@" или "@!":
53 54

  LibreOffice-still@X86,aarch64,ppc64le,mipsel
55
  java-11-openjdk@!E2K,mipsel
56

57 58
Для преобразования можно воспользоваться следующей командой:

59 60
  sed -r -e 's/@I586_ONLY@([^\t ]+)/\1@i586/g' \
         -e 's/@X86_64_ONLY@([^\t ]+)/\1@x86_64/g'
61 62 63 64 65

При необходимости добавить пакет только на x86-архитектурах (неважно,
i586 или x86_64) можно воспользоваться макросом X86 (с версии 1.2.12):

  xorg-drv-intel@X86
66 67

Аналогичная функциональность реализована для профилей установки.
68 69 70 71 72 73

=== загрузчики ===

Как правило, сперва понадобится доработка mkimage -- см. скрипты
tools/mki-pack-*boot -- и лишь затем профиля; см. тж. lib/boot.mk
и фичу pack.