From e04962507dee60ce593dd6bb60ed315340056b12 Mon Sep 17 00:00:00 2001 From: "Robin H. Johnson" Date: Mon, 2 Jan 2017 14:24:43 -0800 Subject: gen_configkernel: respect user-set kconfig. Blindly using kconfig_set_opt can override user-set configuration options. Fetch the option from the kconfig first, and override it if needed. Fixes: https://bugs.gentoo.org/show_bug.cgi?id=602768 X-Gentoo-Bug: 602768 Signed-off-by: Robin H. Johnson --- gen_configkernel.sh | 62 ++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 52 insertions(+), 10 deletions(-) diff --git a/gen_configkernel.sh b/gen_configkernel.sh index f746dba3..8d3534b9 100755 --- a/gen_configkernel.sh +++ b/gen_configkernel.sh @@ -113,26 +113,53 @@ config_kernel() { kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_EXT2_FS" "y" fi + # If the user has configured DM as built-in, we need to respect that. + cfg_CONFIG_BLK_DEV_DM=$(kconfig_get_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_BLK_DEV_DM") + case "$cfg_CONFIG_BLK_DEV_DM" in + y|m) ;; # Do nothing + *) cfg_CONFIG_BLK_DEV_DM='m' + esac + # Make sure lvm modules are on if --lvm if isTrue ${CMD_LVM} then - kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_BLK_DEV_DM" "m" - kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_DM_SNAPSHOT" "m" - kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_DM_MIRROR" "m" + cfg_CONFIG_DM_SNAPSHOT=$(kconfig_get_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_DM_SNAPSHOT") + case "$cfg_CONFIG_DM_SNAPSHOT" in + y|m) ;; # Do nothing + *) cfg_CONFIG_DM_SNAPSHOT='m' + esac + cfg_CONFIG_DM_MIRROR=$(kconfig_get_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_DM_MIRROR") + case "$cfg_CONFIG_DM_MIRROR" in + y|m) ;; # Do nothing + *) cfg_CONFIG_DM_MIRROR='m' + esac + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_BLK_DEV_DM" "${cfg_CONFIG_BLK_DEV_DM}" + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_DM_SNAPSHOT" "${cfg_CONFIG_DM_SNAPSHOT}" + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_DM_MIRROR" "${cfg_CONFIG_DM_MIRROR}" fi # Multipath if isTrue ${CMD_MULTIPATH} then - kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_BLK_DEV_DM" "m" - kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_DM_MULTIPATH" "m" - kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_DM_MULTIPATH_RDAC" "m" + cfg_CONFIG_DM_MULTIPATH=$(kconfig_get_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_DM_MULTIPATH") + case "$cfg_CONFIG_DM_MULTIPATH" in + y|m) ;; # Do nothing + *) cfg_CONFIG_DM_MULTIPATH='m' + esac + cfg_CONFIG_DM_MULTIPATH_RDAC=$(kconfig_get_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_DM_MULTIPATH_RDAC") + case "$cfg_CONFIG_DM_MULTIPATH_RDAC" in + y|m) ;; # Do nothing + *) cfg_CONFIG_DM_MULTIPATH_RDAC='m' + esac + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_BLK_DEV_DM" "${cfg_CONFIG_BLK_DEV_DM}" + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_DM_MULTIPATH" "${cfg_CONFIG_DM_MULTIPATH}" + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_DM_MULTIPATH_RDAC" "${cfg_CONFIG_DM_MULTIPATH_RDAC}" fi # Make sure dmraid modules are on if --dmraid if isTrue ${CMD_DMRAID} then - kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_BLK_DEV_DM" "m" + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_BLK_DEV_DM" "${cfg_CONFIG_BLK_DEV_DM}" fi # Make sure iSCSI modules are enabled in the kernel, if --iscsi @@ -140,8 +167,18 @@ config_kernel() { # CONFIG_ISCSI_TCP if isTrue ${CMD_ISCSI} then - kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_ISCSI_TCP" "m" - kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_SCSI_ISCSI_ATTRS" "m" + cfg_CONFIG_ISCSI_TCP=$(kconfig_get_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_ISCSI_TCP") + case "$cfg_CONFIG_ISCSI_TCP" in + y|m) ;; # Do nothing + *) cfg_CONFIG_ISCSI_TCP='m' + esac + cfg_CONFIG_SCSI_ISCSI_ATTRS=$(kconfig_get_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_SCSI_ISCSI_ATTRS") + case "$cfg_CONFIG_SCSI_ISCSI_ATTRS" in + y|m) ;; # Do nothing + *) cfg_CONFIG_SCSI_ISCSI_ATTRS='m' + esac + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_ISCSI_TCP" "${cfg_CONFIG_ISCSI_TCP}" + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_SCSI_ISCSI_ATTRS" "${cfg_CONFIG_SCSI_ISCSI_ATTRS}" fi if isTrue ${SPLASH} @@ -167,7 +204,12 @@ config_kernel() { CONFIG_SCSI_VIRTIO \ CONFIG_VHOST_NET \ ; do - kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "$k" "y" + cfg___virtio_opt=$(kconfig_get_opt "${KERNEL_OUTPUTDIR}/.config" "$k") + case "$cfg___virtio_opt" in + y|m) ;; # Do nothing + *) cfg___virtio_opt='y' + esac + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "$k" "${cfg___virtio_opt}" done fi } -- cgit v1.2.3-65-gdbad