Build root: разрешить пакету проверять наличие ядра - PullRequest
0 голосов
/ 30 марта 2020

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

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

Я попытался добавить:

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

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

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

1 Ответ

0 голосов
/ 10 апреля 2020

Работает наоборот: это пакет "linux" в сборке root, который обеспечивает включение правильных опций, когда данный пакет включен, и требует определенных функций c ядра. См. 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 включены в конфигурации ядра * 101, когда * k4p Build * включена.

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

...