diff options
author | Robin H. Johnson <robbat2@gentoo.org> | 2017-01-02 14:24:43 -0800 |
---|---|---|
committer | Robin H. Johnson <robbat2@gentoo.org> | 2017-01-02 14:26:19 -0800 |
commit | e04962507dee60ce593dd6bb60ed315340056b12 (patch) | |
tree | 1b64c9c37d75a07e93a6b77bd52f47e8e07d9a32 | |
parent | gen_compile: cleaner config changing. (diff) | |
download | genkernel-e0496250.tar.gz genkernel-e0496250.tar.bz2 genkernel-e0496250.zip |
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 <robbat2@gentoo.org>
-rwxr-xr-x | gen_configkernel.sh | 62 |
1 files changed, 52 insertions, 10 deletions
diff --git a/gen_configkernel.sh b/gen_configkernel.sh index f746dba..8d3534b 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 } |