[PATCH 145/149] kbuild: Remove checking for adhoc CONFIG symbols

Tom Rini
2022-12-04T15:34:39Z

At this point all listed adhoc CONFIG symbols have been migrated to
Kconfig or removed from the tree or renamed to CFG (or similar). We also
now have CI tests that will error on any new introductions, and
checkpatch.pl also looks. We can now remove these hooks and related
scripts.

Signed-off-by: Tom Rini <trini@konsulko.com>
---
Makefile | 8 --
scripts/build-whitelist.sh | 45 ------
scripts/check-config.sh | 63 ---------
scripts/config_whitelist.txt | 261 -----------------------------------
tools/moveconfig.py | 32 +----
5 files changed, 2 insertions(+), 407 deletions(-)
delete mode 100755 scripts/build-whitelist.sh
delete mode 100755 scripts/check-config.sh

diff --git a/Makefile b/Makefile
index eba39194e331..da2fd0faa050 100644
--- a/Makefile
+++ b/Makefile
@@ -1073,10 +1073,6 @@ cmd_lzma = lzma -c -z -k -9 $< > $@

cfg: u-boot.cfg

-quiet_cmd_cfgcheck = CFGCHK $2
-cmd_cfgcheck = $(srctree)/scripts/check-config.sh $2 \
- $(srctree)/scripts/config_whitelist.txt $(srctree)
-
quiet_cmd_ofcheck = OFCHK $2
cmd_ofcheck = $(srctree)/scripts/check-of.sh $2 \
$(srctree)/scripts/of_allowlist.txt
@@ -1144,10 +1140,6 @@ endif
$(call deprecated,CONFIG_TIMER,Timer drivers,v2023.01,$(if $(strip $(CFG_SYS_TIMER_RATE)$(CFG_SYS_TIMER_COUNTER)),x))
$(call deprecated,CONFIG_DM_SERIAL,Serial drivers,v2023.04,$(CONFIG_SERIAL))
$(call deprecated,CONFIG_DM_SCSI,SCSI drivers,v2023.04,$(CONFIG_SCSI))
- @# Check that this build does not use CONFIG options that we do not
- @# know about unless they are in Kconfig. All the existing CONFIG
- @# options are whitelisted, so new ones should not be added.
- $(call cmd,cfgcheck,u-boot.cfg)
@# Check that this build does not override OF_HAS_PRIOR_STAGE by
@# disabling OF_BOARD.
$(call cmd,ofcheck,$(KCONFIG_CONFIG))
diff --git a/scripts/build-whitelist.sh b/scripts/build-whitelist.sh
deleted file mode 100755
index 37630c0271cd..000000000000
--- a/scripts/build-whitelist.sh
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/bin/sh
-# Copyright (c) 2016 Google, Inc
-# Written by Simon Glass <sjg@chromium.org>
-#
-
-# This script creates the configuration whitelist file. This file contains
-# all the config options which are allowed to be used outside Kconfig.
-# Please do not add things to the whitelist. Instead, add your new option
-# to Kconfig.
-#
-export LC_ALL=C LC_COLLATE=C
-
-# Looks for the rest of the CONFIG options, but exclude those in Kconfig and
-# defconfig files.
-#
-git grep CONFIG_ | \
- egrep -vi "(Kconfig:|defconfig:|README|\.py|\.pl:)" \
- | tr ' \t' '\n\n' \
- | sed -n 's/^\(CONFIG_[A-Za-z0-9_]*\).*/\1/p' \
- |sort |uniq >scripts/config_whitelist.txt.tmp1;
-
-# Finally, we need a list of the valid Kconfig options to exclude these from
-# the whitelist.
-cat `find . -name "Kconfig*"` |sed -n \
- -e 's/^\s*config *\([A-Za-z0-9_]*\).*$/CONFIG_\1/p' \
- -e 's/^\s*menuconfig *\([A-Za-z0-9_]*\).*$/CONFIG_\1/p' \
- |sort |uniq >scripts/config_whitelist.txt.tmp2
-
-# Use only the options that are present in the first file but not the second.
-comm -23 scripts/config_whitelist.txt.tmp1 scripts/config_whitelist.txt.tmp2 \
- |sort |uniq >scripts/config_whitelist.txt.tmp3
-
-# If scripts/config_whitelist.txt already exists, take the intersection of the
-# current list and the new one. We do not want to increase whitelist options.
-if [ -r scripts/config_whitelist.txt ]; then
- comm -12 scripts/config_whitelist.txt.tmp3 scripts/config_whitelist.txt \
- > scripts/config_whitelist.txt.tmp4
- mv scripts/config_whitelist.txt.tmp4 scripts/config_whitelist.txt
-else
- mv scripts/config_whitelist.txt.tmp3 scripts/config_whitelist.txt
-fi
-
-rm scripts/config_whitelist.txt.tmp*
-
-unset LC_ALL LC_COLLATE
diff --git a/scripts/check-config.sh b/scripts/check-config.sh
deleted file mode 100755
index cc1c9a54d951..000000000000
--- a/scripts/check-config.sh
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/bin/sh
-# Copyright (c) 2016 Google, Inc
-# Written by Simon Glass <sjg@chromium.org>
-#
-# Check that the u-boot.cfg file provided does not introduce any new
-# ad-hoc CONFIG options
-#
-# Use scripts/build-whitelist.sh to generate the list of current ad-hoc
-# CONFIG options (those which are not in Kconfig).
-
-# Usage
-# check-config.sh <path to u-boot.cfg> <path to whitelist file>
-#
-# For example:
-# scripts/check-config.sh b/chromebook_link/u-boot.cfg kconfig_whitelist.txt .
-
-set -e
-set -u
-
-PROG_NAME="${0##*/}"
-
-usage() {
- echo "$PROG_NAME <path to u-boot.cfg> <path to whitelist file> "
- exit 1
-}
-
-[ $# -ge 3 ] || usage
-
-path="$1"
-whitelist="$2"
-srctree="$3"
-
-# Temporary files
-configs="${path}.configs"
-suspects="${path}.suspects"
-ok="${path}.ok"
-new_adhoc="${path}.adhoc"
-
-export LC_ALL=C
-export LC_COLLATE=C
-
-cat ${path} |sed -nr 's/^#define (CONFIG_[A-Za-z0-9_]*).*/\1/p' |sort |uniq \
- >${configs}
-
-comm -23 ${configs} ${whitelist} > ${suspects}
-
-cat `find ${srctree} -name "Kconfig*"` |sed -nr \
- -e 's/^[[:blank:]]*config *([A-Za-z0-9_]*).*$/CONFIG_\1/p' \
- -e 's/^[[:blank:]]*menuconfig ([A-Za-z0-9_]*).*$/CONFIG_\1/p' \
- |sort |uniq > ${ok}
-comm -23 ${suspects} ${ok} >${new_adhoc}
-if [ -s ${new_adhoc} ]; then
- echo >&2 "Error: You must add new CONFIG options using Kconfig"
- echo >&2 "The following new ad-hoc CONFIG options were detected:"
- cat >&2 ${new_adhoc}
- echo >&2
- echo >&2 "Please add these via Kconfig instead. Find a suitable Kconfig"
- echo >&2 "file and add a 'config' or 'menuconfig' option."
- # Don't delete the temporary files in case they are useful
- exit 1
-else
- rm ${suspects} ${ok} ${new_adhoc}
-fi
diff --git a/scripts/config_whitelist.txt b/scripts/config_whitelist.txt
index 36fd8688d5c5..e69de29bb2d1 100644
--- a/scripts/config_whitelist.txt
+++ b/scripts/config_whitelist.txt
@@ -1,261 +0,0 @@
-CONFIG_ARM_GIC_BASE_ADDRESS
-CONFIG_BOARDDIR
-CONFIG_DFU_ALT
-CONFIG_DFU_ALT_BOOT_EMMC
-CONFIG_DFU_ALT_BOOT_SD
-CONFIG_DFU_ALT_SYSTEM
-CONFIG_DFU_ENV_SETTINGS
-CONFIG_DM9000_BASE
-CONFIG_DM9000_BYTE_SWAPPED
-CONFIG_DM9000_NO_SROM
-CONFIG_DM9000_USE_16BIT
-CONFIG_DW_WDT_CLOCK_KHZ
-CONFIG_ENV_FLAGS_LIST_STATIC
-CONFIG_ENV_IS_EMBEDDED
-CONFIG_ENV_SETTINGS_BUTTONS_AND_LEDS
-CONFIG_ENV_SETTINGS_NAND_V1
-CONFIG_ENV_SETTINGS_NAND_V2
-CONFIG_ENV_SETTINGS_V1
-CONFIG_ENV_SETTINGS_V2
-CONFIG_ENV_SROM_BANK
-CONFIG_ENV_TOTAL_SIZE
-CONFIG_ET1100_BASE
-CONFIG_ETHBASE
-CONFIG_EXTRA_ENV_SETTINGS
-CONFIG_FB_ADDR
-CONFIG_FDTADDR
-CONFIG_FDTFILE
-CONFIG_FEC_ENET_DEV
-CONFIG_FEC_FIXED_SPEED
-CONFIG_FEC_MXC_PHYADDR
-CONFIG_FLASH_BR_PRELIM
-CONFIG_FLASH_OR_PRELIM
-CONFIG_FLASH_SECTOR_SIZE
-CONFIG_FLASH_SHOW_PROGRESS
-CONFIG_FLASH_SPANSION_S29WS_N
-CONFIG_FLASH_VERIFY
-CONFIG_FM_PLAT_CLK_DIV
-CONFIG_FSL_CPLD
-CONFIG_FSL_ESDHC_PIN_MUX
-CONFIG_FSL_FM_10GEC_REGULAR_NOTATION
-CONFIG_FSL_ISBC_KEY_EXT
-CONFIG_FSL_PMIC_BITLEN
-CONFIG_FSL_PMIC_BUS
-CONFIG_FSL_PMIC_CLK
-CONFIG_FSL_PMIC_CS
-CONFIG_FSL_PMIC_MODE
-CONFIG_FSL_SDHC_V2_3
-CONFIG_FSL_SERDES1
-CONFIG_FSL_SERDES2
-CONFIG_FTRTC010_EXTCLK
-CONFIG_FTRTC010_PCLK
-CONFIG_GATEWAYIP
-CONFIG_GMII
-CONFIG_G_DNL_THOR_PRODUCT_NUM
-CONFIG_G_DNL_THOR_VENDOR_NUM
-CONFIG_G_DNL_UMS_PRODUCT_NUM
-CONFIG_G_DNL_UMS_VENDOR_NUM
-CONFIG_HDMI_ENCODER_I2C_ADDR
-CONFIG_HOSTNAME
-CONFIG_HSMMC2_8BIT
-CONFIG_HW_ENV_SETTINGS
-CONFIG_I2C_ENV_EEPROM_BUS
-CONFIG_I2C_MULTI_BUS
-CONFIG_I2C_MVTWSI
-CONFIG_I2C_MVTWSI_BASE0
-CONFIG_I2C_MVTWSI_BASE1
-CONFIG_I2C_RTC_ADDR
-CONFIG_ICS307_REFCLK_HZ
-CONFIG_IMX6_PWM_PER_CLK
-CONFIG_IPADDR
-CONFIG_IRAM_BASE
-CONFIG_IRAM_END
-CONFIG_IRAM_SIZE
-CONFIG_IRAM_TOP
-CONFIG_KM_DEF_ARCH
-CONFIG_KM_DEF_BOOT_ARGS_CPU
-CONFIG_KM_DEF_ENV
-CONFIG_KM_DEF_ENV_BOOTARGS
-CONFIG_KM_DEF_ENV_BOOTPARAMS
-CONFIG_KM_DEF_ENV_BOOTTARGETS
-CONFIG_KM_DEF_ENV_CONSTANTS
-CONFIG_KM_DEF_ENV_CPU
-CONFIG_KM_DEF_ENV_FLASH_BOOT
-CONFIG_KM_DEV_ENV_FLASH_BOOT_UBI
-CONFIG_KM_ECC_MODE
-CONFIG_KM_NEW_ENV
-CONFIG_KM_UBI_LINUX_MTD
-CONFIG_KM_UBI_PARTITION_NAME_APP
-CONFIG_KM_UBI_PARTITION_NAME_BOOT
-CONFIG_KM_UBI_PART_BOOT_OPTS
-CONFIG_KM_UIMAGE_NAME
-CONFIG_KSNET_CPSW_NUM_PORTS
-CONFIG_KSNET_MAC_ID_BASE
-CONFIG_KSNET_MDIO_PHY_CONFIG_ENABLE
-CONFIG_KSNET_NETCP_BASE
-CONFIG_KSNET_NETCP_V1_0
-CONFIG_KSNET_NETCP_V1_5
-CONFIG_KSNET_SERDES_LANES_PER_SGMII
-CONFIG_KSNET_SERDES_SGMII2_BASE
-CONFIG_KSNET_SERDES_SGMII_BASE
-CONFIG_L1_INIT_RAM
-CONFIG_L2_CACHE
-CONFIG_LEGACY_BOOTCMD_ENV
-CONFIG_LOWPOWER_ADDR
-CONFIG_LOWPOWER_FLAG
-CONFIG_LPC32XX_NAND_MLC_BUSY_DELAY
-CONFIG_LPC32XX_NAND_MLC_NAND_TA
-CONFIG_LPC32XX_NAND_MLC_RD_HIGH
-CONFIG_LPC32XX_NAND_MLC_RD_LOW
-CONFIG_LPC32XX_NAND_MLC_TCEA_DELAY
-CONFIG_LPC32XX_NAND_MLC_WR_HIGH
-CONFIG_LPC32XX_NAND_MLC_WR_LOW
-CONFIG_LPC32XX_NAND_SLC_RDR_CLKS
-CONFIG_LPC32XX_NAND_SLC_RHOLD
-CONFIG_LPC32XX_NAND_SLC_RSETUP
-CONFIG_LPC32XX_NAND_SLC_RWIDTH
-CONFIG_LPC32XX_NAND_SLC_WDR_CLKS
-CONFIG_LPC32XX_NAND_SLC_WHOLD
-CONFIG_LPC32XX_NAND_SLC_WSETUP
-CONFIG_LPC32XX_NAND_SLC_WWIDTH
-CONFIG_MACB_SEARCH_PHY
-CONFIG_MALLOC_F_ADDR
-CONFIG_MALTA
-CONFIG_MAX_DSP_CPUS
-CONFIG_MAX_MEM_MAPPED
-CONFIG_MAX_RAM_BANK_SIZE
-CONFIG_MEMSIZE_IN_BYTES
-CONFIG_MEM_INIT_VALUE
-CONFIG_MFG_ENV_SETTINGS
-CONFIG_MII_DEFAULT_TSEC
-CONFIG_MIU_2BIT_21_7_INTERLEAVED
-CONFIG_MIU_2BIT_INTERLEAVED
-CONFIG_MMC_DEFAULT_DEV
-CONFIG_MMC_SUNXI_SLOT
-CONFIG_MONITOR_IS_IN_RAM
-CONFIG_MTD_NAND_VERIFY_WRITE
-CONFIG_MVGBE_PORTS
-CONFIG_MXC_GPT_HCLK
-CONFIG_MXC_NAND_HWECC
-CONFIG_MXC_NAND_IP_REGS_BASE
-CONFIG_MXC_NAND_REGS_BASE
-CONFIG_MXC_UART_BASE
-CONFIG_MXC_USB_FLAGS
-CONFIG_MXC_USB_PORT
-CONFIG_MXC_USB_PORTSC
-CONFIG_NAND_6BYTES_OOB_FREE_10BYTES_ECC
-CONFIG_NAND_CS_INIT
-CONFIG_NETDEV
-CONFIG_NETMASK
-CONFIG_NORBOOT
-CONFIG_NUM_DSP_CPUS
-CONFIG_ODROID_REV_AIN
-CONFIG_OTHBOOTARGS
-CONFIG_OVERWRITE_ETHADDR_ONCE
-CONFIG_PCIE_IMX_PERST_GPIO
-CONFIG_PCIE_IMX_POWER_GPIO
-CONFIG_PEN_ADDR_BIG_ENDIAN
-CONFIG_PHY_BASE_ADR
-CONFIG_PHY_ET1011C_TX_CLK_FIX
-CONFIG_PHY_ID
-CONFIG_PHY_INTERFACE_MODE
-CONFIG_PHY_IRAM_BASE
-CONFIG_PL011_CLOCK
-CONFIG_PL01x_PORTS
-CONFIG_PME_PLAT_CLK_DIV
-CONFIG_POSTBOOTMENU
-CONFIG_POWER_LTC3676_I2C_ADDR
-CONFIG_POWER_PFUZE100_I2C_ADDR
-CONFIG_POWER_PFUZE3000_I2C_ADDR
-CONFIG_PPC_SPINTABLE_COMPATIBLE
-CONFIG_PRAM
-CONFIG_PSRAM_SCFG
-CONFIG_QBMAN_CLK_DIV
-CONFIG_RAMBOOT_SPIFLASH
-CONFIG_RAMBOOT_TEXT_BASE
-CONFIG_RAMDISK_ADDR
-CONFIG_RD_LVL
-CONFIG_RESET_VECTOR_ADDRESS
-CONFIG_ROCKCHIP_SDHCI_MAX_FREQ
-CONFIG_ROOTPATH
-CONFIG_SANDBOX_ARCH
-CONFIG_SANDBOX_SPI_MAX_BUS
-CONFIG_SANDBOX_SPI_MAX_CS
-CONFIG_SAR2_REG
-CONFIG_SAR_REG
-CONFIG_SCIF_A
-CONFIG_SCSI_DEV_LIST
-CONFIG_SC_TIMER_CLK
-CONFIG_SERIAL_BOOT
-CONFIG_SERVERIP
-CONFIG_SETUP_INITRD_TAG
-CONFIG_SET_DFU_ALT_BUF_LEN
-CONFIG_SH_ETHER_ALIGNE_SIZE
-CONFIG_SH_ETHER_CACHE_INVALIDATE
-CONFIG_SH_ETHER_CACHE_WRITEBACK
-CONFIG_SH_ETHER_PHY_ADDR
-CONFIG_SH_ETHER_PHY_MODE
-CONFIG_SH_ETHER_USE_PORT
-CONFIG_SH_QSPI_BASE
-CONFIG_SLIC
-CONFIG_SMDK5420
-CONFIG_SMP_PEN_ADDR
-CONFIG_SOCRATES
-CONFIG_SPI_ADDR
-CONFIG_SPI_BOOTING
-CONFIG_SPI_FLASH_QUAD
-CONFIG_SPI_FLASH_SIZE
-CONFIG_SPI_HALF_DUPLEX
-CONFIG_SPI_N25Q256A_RESET
-CONFIG_STACKBASE
-CONFIG_STANDALONE_LOAD_ADDR
-CONFIG_STD_DEVICES_SETTINGS
-CONFIG_SYS_BAUDRATE_TABLE
-CONFIG_TEGRA_BOARD_STRING
-CONFIG_TEGRA_ENABLE_UARTA
-CONFIG_TEGRA_ENABLE_UARTD
-CONFIG_TEGRA_SLINK_CTRLS
-CONFIG_TEGRA_SPI
-CONFIG_TEGRA_UARTA_GPU
-CONFIG_TEGRA_UARTA_SDIO1
-CONFIG_TEGRA_VDD_CORE_TPS62361B_SET3
-CONFIG_TEGRA_VDD_CORE_TPS62366A_SET1
-CONFIG_TESTPIN_MASK
-CONFIG_TESTPIN_REG
-CONFIG_THOR_RESET_OFF
-CONFIG_TPM_TIS_BASE_ADDRESS
-CONFIG_TSEC1
-CONFIG_TSEC1_NAME
-CONFIG_TSEC2
-CONFIG_TSEC2_NAME
-CONFIG_TSEC3
-CONFIG_TSEC3_NAME
-CONFIG_TSEC4
-CONFIG_TSEC4_NAME
-CONFIG_TSECV2
-CONFIG_TSECV2_1
-CONFIG_TSEC_TBICR_SETTINGS
-CONFIG_UBIFS_VOLUME
-CONFIG_UBI_PART
-CONFIG_UBOOTPATH
-CONFIG_UBOOT_SECTOR_COUNT
-CONFIG_UBOOT_SECTOR_START
-CONFIG_UEC_ETH
-CONFIG_USART_BASE
-CONFIG_USART_ID
-CONFIG_USBD_HS
-CONFIG_USB_BOOTING
-CONFIG_USB_EXT2_BOOT
-CONFIG_USB_FAT_BOOT
-CONFIG_USB_ISP1301_I2C_ADDR
-CONFIG_U_BOOT_HDR_SIZE
-CONFIG_VAR_SIZE_SPL
-CONFIG_VERY_BIG_RAM
-CONFIG_VSC7385_IMAGE
-CONFIG_VSC7385_IMAGE_SIZE
-CONFIG_WATCHDOG_PRESC
-CONFIG_WATCHDOG_RC
-CONFIG_X86EMU_RAW_IO
-CONFIG_X86_MRC_ADDR
-CONFIG_X86_REFCODE_ADDR
-CONFIG_X86_REFCODE_RUN_ADDR
diff --git a/tools/moveconfig.py b/tools/moveconfig.py
index 09617a07f91b..8f084a6070ac 100755
--- a/tools/moveconfig.py
+++ b/tools/moveconfig.py
@@ -443,22 +443,6 @@ def cleanup_headers(configs, args):
cleanup_one_header(header_path, patterns, args)
cleanup_empty_blocks(header_path, args)

-def cleanup_whitelist(configs, args):
- """Delete config whitelist entries
-
- Args:
- configs: A list of CONFIGs to remove.
- args (Namespace): program arguments
- """
- if not confirm(args, 'Clean up whitelist entries?'):
- return
-
- lines = read_file(os.path.join('scripts', 'config_whitelist.txt'))
-
- lines = [x for x in lines if x.strip() not in configs]
-
- write_file(os.path.join('scripts', 'config_whitelist.txt'), lines)
-
def find_matching(patterns, line):
for pat in patterns:
if pat.search(line):
@@ -1558,14 +1542,10 @@ def do_find_config(config_list):
"""
all_configs, all_defconfigs, config_db, defconfig_db = read_database()

- # Get the whitelist
- adhoc_configs = set(read_file('scripts/config_whitelist.txt'))
-
# Start with all defconfigs
out = all_defconfigs

# Work through each config in turn
- adhoc = []
for item in config_list:
# Get the real config name and whether we want this config or not
cfg = item
@@ -1574,10 +1554,6 @@ def do_find_config(config_list):
want = False
cfg = cfg[1:]

- if cfg in adhoc_configs:
- adhoc.append(cfg)
- continue
-
# Search everything that is still in the running. If it has a config
# that we want, or doesn't have one that we don't, add it into the
# running for the next stage
@@ -1588,11 +1564,8 @@ def do_find_config(config_list):
has_cfg = defconfig_matches(config_db[defc], re_match)
if has_cfg == want:
out.add(defc)
- if adhoc:
- print(f"Error: Not in Kconfig: %s" % ' '.join(adhoc))
- else:
- print(f'{len(out)} matches')
- print(' '.join(item.split('_defconfig')[0] for item in out))
+ print(f'{len(out)} matches')
+ print(' '.join(item.split('_defconfig')[0] for item in out))

def prefix_config(cfg):
@@ -1739,7 +1712,6 @@ doc/develop/moveconfig.rst for documentation.'''

if configs:
cleanup_headers(configs, args)
- cleanup_whitelist(configs, args)
cleanup_readme(configs, args)

if args.commit:
--
2.25.1