kconfig: Add transitional symbol attribute for migration supportDuring kernel option migrations (e.g. CONFIG_CFI_CLANG to CONFIG_CFI),existing .config files need to maintain backward compatibility
kconfig: Add transitional symbol attribute for migration supportDuring kernel option migrations (e.g. CONFIG_CFI_CLANG to CONFIG_CFI),existing .config files need to maintain backward compatibility whilepreventing deprecated options from appearing in newly generatedconfigurations. This is challenging with existing Kconfig mechanismsbecause:1. Simply removing old options breaks existing .config files.2. Manually listing an option as "deprecated" leaves it needlessly visible and still writes them to new .config files.3. Using any method to remove visibility (.e.g no 'prompt', 'if n', etc) prevents the option from being processed at all.Add a "transitional" attribute that creates symbols which are:- Processed during configuration (can influence other symbols' defaults)- Hidden from user menus (no prompts appear)- Omitted from newly written .config files (gets migrated)- Restricted to only having help sections (no defaults, selects, etc) making it truly just a "prior value pass-through" option.The transitional syntax requires a type argument and prevents typeredefinition: config NEW_OPTION bool "New option" default OLD_OPTION config OLD_OPTION bool transitional help Transitional config for OLD_OPTION migration.This allows seamless migration: olddefconfig processes existingCONFIG_OLD_OPTION=y settings to enable CONFIG_NEW_OPTION=y, whileCONFIG_OLD_OPTION is omitted from newly generated .config files.Added positive and negative testing via "testconfig" make target.Co-developed-by: Vegard Nossum <vegard.nossum@oracle.com>Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>Reviewed-by: Nathan Chancellor <nathan@kernel.org>Tested-by: Nathan Chancellor <nathan@kernel.org>Link: https://lore.kernel.org/r/20250923213422.1105654-2-kees@kernel.orgSigned-off-by: Kees Cook <kees@kernel.org>
show more ...