Buildroot: разрешить пакету проверять наличие функции ядра.

Надеюсь, на этот вопрос будет просто ответить: я пытаюсь добавить пакет в buildroot, который требует включения функции системных вызовов ядра BPF.

Если функция включена, все работает нормально, в противном случае сборка завершается неудачно с незначительной бесполезной ошибкой. Что я хотел бы сделать, так это выполнить быструю проверку файла .mk, чтобы увидеть, присутствует ли эта функция, и распечатать немного более удобную для пользователя ошибку, если это не так.

Я пробовал добавить:

ifneq ($(CONFIG_BPF_SYSCALL),y)
$(error Kernel feature CONFIG_BPF_SYSCALL is required)
endif

Но это всегда кажется срабатывающим, поскольку я предполагаю, что CONFIG_BPF_SYSCALL не существует в области сборки пакета. Есть ли простой способ получить доступ к списку конфигурации ядра из env сборки пакета?

Большое спасибо


person countbadger    schedule 30.03.2020    source источник


Ответы (1)


Это работает наоборот: именно пакет "linux" в Buildroot гарантирует, что он включает правильные параметры, когда данный пакет включен, и требует некоторых специфических функций ядра. См. Linux / linux.mk, где есть такие вещи:

        $(if $(BR2_PACKAGE_KTAP),
                $(call KCONFIG_ENABLE_OPT,CONFIG_DEBUG_FS,$(@D)/.config)
                $(call KCONFIG_ENABLE_OPT,CONFIG_ENABLE_DEFAULT_TRACERS,$(@D)/.config)
                $(call KCONFIG_ENABLE_OPT,CONFIG_PERF_EVENTS,$(@D)/.config)
                $(call KCONFIG_ENABLE_OPT,CONFIG_FUNCTION_TRACER,$(@D)/.config))

Это гарантирует, что CONFIG_DEBUG_FS, CONFIG_ENABLE_DEFAULT_TRACERS, CONFIG_PERF_EVENTS и CONFIG_FUNCTION_TRACER включены в конфигурации ядра при включении ktap Buildroot.

Обратите внимание, что этот механизм может быть изменен в ближайшем будущем в Buildroot, см. Серию исправлений по адресу http://patchwork.ozlabs.org/project/buildroot/list/?series=168565.

person Thomas Petazzoni    schedule 10.04.2020