1 |
commit: e04962507dee60ce593dd6bb60ed315340056b12 |
2 |
Author: Robin H. Johnson <robbat2 <AT> gentoo <DOT> org> |
3 |
AuthorDate: Mon Jan 2 22:24:43 2017 +0000 |
4 |
Commit: Robin H. Johnson <robbat2 <AT> gentoo <DOT> org> |
5 |
CommitDate: Mon Jan 2 22:26:19 2017 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=e0496250 |
7 |
|
8 |
gen_configkernel: respect user-set kconfig. |
9 |
|
10 |
Blindly using kconfig_set_opt can override user-set configuration |
11 |
options. |
12 |
|
13 |
Fetch the option from the kconfig first, and override it if needed. |
14 |
|
15 |
Fixes: https://bugs.gentoo.org/show_bug.cgi?id=602768 |
16 |
X-Gentoo-Bug: 602768 |
17 |
Signed-off-by: Robin H. Johnson <robbat2 <AT> gentoo.org> |
18 |
|
19 |
gen_configkernel.sh | 62 ++++++++++++++++++++++++++++++++++++++++++++--------- |
20 |
1 file changed, 52 insertions(+), 10 deletions(-) |
21 |
|
22 |
diff --git a/gen_configkernel.sh b/gen_configkernel.sh |
23 |
index f746dba..8d3534b 100755 |
24 |
--- a/gen_configkernel.sh |
25 |
+++ b/gen_configkernel.sh |
26 |
@@ -113,26 +113,53 @@ config_kernel() { |
27 |
kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_EXT2_FS" "y" |
28 |
fi |
29 |
|
30 |
+ # If the user has configured DM as built-in, we need to respect that. |
31 |
+ cfg_CONFIG_BLK_DEV_DM=$(kconfig_get_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_BLK_DEV_DM") |
32 |
+ case "$cfg_CONFIG_BLK_DEV_DM" in |
33 |
+ y|m) ;; # Do nothing |
34 |
+ *) cfg_CONFIG_BLK_DEV_DM='m' |
35 |
+ esac |
36 |
+ |
37 |
# Make sure lvm modules are on if --lvm |
38 |
if isTrue ${CMD_LVM} |
39 |
then |
40 |
- kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_BLK_DEV_DM" "m" |
41 |
- kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_DM_SNAPSHOT" "m" |
42 |
- kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_DM_MIRROR" "m" |
43 |
+ cfg_CONFIG_DM_SNAPSHOT=$(kconfig_get_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_DM_SNAPSHOT") |
44 |
+ case "$cfg_CONFIG_DM_SNAPSHOT" in |
45 |
+ y|m) ;; # Do nothing |
46 |
+ *) cfg_CONFIG_DM_SNAPSHOT='m' |
47 |
+ esac |
48 |
+ cfg_CONFIG_DM_MIRROR=$(kconfig_get_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_DM_MIRROR") |
49 |
+ case "$cfg_CONFIG_DM_MIRROR" in |
50 |
+ y|m) ;; # Do nothing |
51 |
+ *) cfg_CONFIG_DM_MIRROR='m' |
52 |
+ esac |
53 |
+ kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_BLK_DEV_DM" "${cfg_CONFIG_BLK_DEV_DM}" |
54 |
+ kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_DM_SNAPSHOT" "${cfg_CONFIG_DM_SNAPSHOT}" |
55 |
+ kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_DM_MIRROR" "${cfg_CONFIG_DM_MIRROR}" |
56 |
fi |
57 |
|
58 |
# Multipath |
59 |
if isTrue ${CMD_MULTIPATH} |
60 |
then |
61 |
- kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_BLK_DEV_DM" "m" |
62 |
- kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_DM_MULTIPATH" "m" |
63 |
- kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_DM_MULTIPATH_RDAC" "m" |
64 |
+ cfg_CONFIG_DM_MULTIPATH=$(kconfig_get_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_DM_MULTIPATH") |
65 |
+ case "$cfg_CONFIG_DM_MULTIPATH" in |
66 |
+ y|m) ;; # Do nothing |
67 |
+ *) cfg_CONFIG_DM_MULTIPATH='m' |
68 |
+ esac |
69 |
+ cfg_CONFIG_DM_MULTIPATH_RDAC=$(kconfig_get_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_DM_MULTIPATH_RDAC") |
70 |
+ case "$cfg_CONFIG_DM_MULTIPATH_RDAC" in |
71 |
+ y|m) ;; # Do nothing |
72 |
+ *) cfg_CONFIG_DM_MULTIPATH_RDAC='m' |
73 |
+ esac |
74 |
+ kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_BLK_DEV_DM" "${cfg_CONFIG_BLK_DEV_DM}" |
75 |
+ kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_DM_MULTIPATH" "${cfg_CONFIG_DM_MULTIPATH}" |
76 |
+ kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_DM_MULTIPATH_RDAC" "${cfg_CONFIG_DM_MULTIPATH_RDAC}" |
77 |
fi |
78 |
|
79 |
# Make sure dmraid modules are on if --dmraid |
80 |
if isTrue ${CMD_DMRAID} |
81 |
then |
82 |
- kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_BLK_DEV_DM" "m" |
83 |
+ kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_BLK_DEV_DM" "${cfg_CONFIG_BLK_DEV_DM}" |
84 |
fi |
85 |
|
86 |
# Make sure iSCSI modules are enabled in the kernel, if --iscsi |
87 |
@@ -140,8 +167,18 @@ config_kernel() { |
88 |
# CONFIG_ISCSI_TCP |
89 |
if isTrue ${CMD_ISCSI} |
90 |
then |
91 |
- kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_ISCSI_TCP" "m" |
92 |
- kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_SCSI_ISCSI_ATTRS" "m" |
93 |
+ cfg_CONFIG_ISCSI_TCP=$(kconfig_get_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_ISCSI_TCP") |
94 |
+ case "$cfg_CONFIG_ISCSI_TCP" in |
95 |
+ y|m) ;; # Do nothing |
96 |
+ *) cfg_CONFIG_ISCSI_TCP='m' |
97 |
+ esac |
98 |
+ cfg_CONFIG_SCSI_ISCSI_ATTRS=$(kconfig_get_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_SCSI_ISCSI_ATTRS") |
99 |
+ case "$cfg_CONFIG_SCSI_ISCSI_ATTRS" in |
100 |
+ y|m) ;; # Do nothing |
101 |
+ *) cfg_CONFIG_SCSI_ISCSI_ATTRS='m' |
102 |
+ esac |
103 |
+ kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_ISCSI_TCP" "${cfg_CONFIG_ISCSI_TCP}" |
104 |
+ kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_SCSI_ISCSI_ATTRS" "${cfg_CONFIG_SCSI_ISCSI_ATTRS}" |
105 |
fi |
106 |
|
107 |
if isTrue ${SPLASH} |
108 |
@@ -167,7 +204,12 @@ config_kernel() { |
109 |
CONFIG_SCSI_VIRTIO \ |
110 |
CONFIG_VHOST_NET \ |
111 |
; do |
112 |
- kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "$k" "y" |
113 |
+ cfg___virtio_opt=$(kconfig_get_opt "${KERNEL_OUTPUTDIR}/.config" "$k") |
114 |
+ case "$cfg___virtio_opt" in |
115 |
+ y|m) ;; # Do nothing |
116 |
+ *) cfg___virtio_opt='y' |
117 |
+ esac |
118 |
+ kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "$k" "${cfg___virtio_opt}" |
119 |
done |
120 |
fi |
121 |
} |