Перейти к основному содержимому

⚠️ Проблема сломанной зависимости select в Kсonfig

warning

Материал возможно устарел.

Проверяйте следующим образом

make KBUILD_KCONFIG=Documentation/kbuild/Kconfig.select-break menuconfig

Kconfig не выдаст ошибок и позволит использовать эту конфигурацию. В настоящий момент это является особенностью kconfig, поскольку функция select была разработана для жесткого регулирования. Сейчас kconfig не проверяет список символов, указанных в select; это сделано намеренно, чтобы помочь загрузить набор известных необходимых символов. По этой причине использование select должно производиться с осторожностью. Пример этой проблемы приведен ниже.

Параметры B и C явно противоречат опции A. Однако, когда A установлена, C также может быть установлена, потому что Kconfig не проверяет зависимости символа, указанного в select (в данном случае B). И поскольку Kconfig не проверяет зависимости, это нарушает зависимости B (!A).

mainmenu "Simple example to demo kconfig select broken dependency issue"

config A
bool "CONFIG A"

config B
bool "CONFIG B"
depends on !A

config C
bool "CONFIG C"
depends on A
select B