[PATCH 0/8] kconfig: cut down on duplication with merged defconfigs

Ahmad Fatoum a.fatoum at pengutronix.de
Fri May 17 06:26:48 PDT 2024


We currently use scripts/kconfig/merge_config.sh only in MAKEALL.
Linux has been using it inside Kbuild as well to derive new defconfigs
from the existing ones that differ only by a few options, e.g. to enable
virtualization or to switch endianness.

This is useful for us in barebox as well to cut down on the number of
configs and to avoid bitrot in the less used ones, e.g. a lot of AT91
configs can probably be replaced with two lines in mach-at91/Makefile
each this way and e.g. x86 defconfig could have a virtio.defconfig for
use with Qemu.

This series adds the infrastructure for this and some example defconfig
targets that are derived from existing defconfigs:
  - ARCH=mips    qemu-malta_defconfig -> qemu-malta(64)?(el)_defconfig
  - ARCH=sandbox sandbox_defconfig -> (headless|noshell|lockdown)_defconfig

Configs added with the new mechanism are automatically discoverable by
CI and so this should increase build coverage with minimal development
overhead.

Ahmad Fatoum (8):
  test: move common config fragments into common/boards/configs
  kconfig: merge_config.sh: sync with Linux v6.9
  kbuild: add support for merged defconfigs
  MIPS: make use of merged defconfigs
  sandbox: stdio: fix ctrlc link error when CONFIG_CONSOLE_NONE=y
  net: fix build with CONFIG_SHELL_NONE
  power: reset: reboot-mode: fix link error without globalvar
  sandbox: add headless_defconfig

 .github/workflows/build-defconfigs.yml        |  8 +-
 .github/workflows/test-labgrid-pytest.yml     |  6 +-
 Documentation/boards/mips/qemu-malta.rst      | 11 +++
 Makefile                                      |  6 +-
 arch/mips/Makefile                            |  8 ++
 arch/mips/configs/le.config                   |  1 +
 arch/mips/configs/mips64.config               |  2 +
 arch/mips/configs/qemu-malta64el_defconfig    | 97 -------------------
 arch/sandbox/Makefile                         |  8 ++
 .../boards/configs/base.config                |  0
 .../boards/configs/disable_size_check.config  |  0
 .../configs/disable_target_tools.config       |  0
 .../boards/configs/enable_self_test.config    |  0
 .../boards/configs/enable_werror.config       |  0
 .../boards/configs/full.config                |  0
 common/boards/configs/headless.config         |  3 +
 common/boards/configs/noshell.config          |  2 +
 .../boards/configs/virtio-pci.config          |  0
 drivers/power/reset/reboot-mode.c             |  5 +-
 include/command.h                             |  8 ++
 include/stdio.h                               |  2 -
 net/Kconfig                                   |  1 -
 scripts/Makefile.defconf                      | 37 +++++++
 scripts/container.sh                          |  2 +-
 scripts/kconfig/merge_config.sh               | 40 ++++++--
 scripts/list-defconfigs.sh                    | 20 ++--
 test/emulate.pl                               | 10 +-
 test/x86/virtio at efi_defconfig.yaml            |  2 +-
 28 files changed, 145 insertions(+), 134 deletions(-)
 create mode 100644 arch/mips/configs/le.config
 create mode 100644 arch/mips/configs/mips64.config
 delete mode 100644 arch/mips/configs/qemu-malta64el_defconfig
 rename test/kconfig/base.cfg => common/boards/configs/base.config (100%)
 rename test/kconfig/disable_size_check.kconf => common/boards/configs/disable_size_check.config (100%)
 rename test/kconfig/disable_target_tools.kconf => common/boards/configs/disable_target_tools.config (100%)
 rename test/kconfig/enable_self_test.kconf => common/boards/configs/enable_self_test.config (100%)
 rename test/kconfig/enable_werror.kconf => common/boards/configs/enable_werror.config (100%)
 rename test/kconfig/full.cfg => common/boards/configs/full.config (100%)
 create mode 100644 common/boards/configs/headless.config
 create mode 100644 common/boards/configs/noshell.config
 rename test/kconfig/virtio-pci.cfg => common/boards/configs/virtio-pci.config (100%)
 create mode 100644 scripts/Makefile.defconf

-- 
2.39.2




More information about the barebox mailing list