aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin H. Johnson <robbat2@gentoo.org>2017-01-02 14:24:43 -0800
committerRobin H. Johnson <robbat2@gentoo.org>2017-01-02 14:26:19 -0800
commite04962507dee60ce593dd6bb60ed315340056b12 (patch)
tree1b64c9c37d75a07e93a6b77bd52f47e8e07d9a32
parentgen_compile: cleaner config changing. (diff)
downloadgenkernel-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-xgen_configkernel.sh62
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
}