Merge branch 'master' into experimental
[genkernel.git] / gen_configkernel.sh
1 #!/bin/bash
2 # $Id$
3
4 # Fills variable KERNEL_CONFIG
5 determine_config_file() {
6         if [ "${CMD_KERNEL_CONFIG}" != "" ]
7         then
8                 KERNEL_CONFIG="${CMD_KERNEL_CONFIG}"
9         elif [ -f "/etc/kernels/kernel-config-${ARCH}-${KV}" ]
10         then
11                 KERNEL_CONFIG="/etc/kernels/kernel-config-${ARCH}-${KV}"
12         elif [ -f "${GK_SHARE}/arch/${ARCH}/kernel-config-${KV}" ]
13         then
14                 KERNEL_CONFIG="${GK_SHARE}/arch/${ARCH}/kernel-config-${KV}"
15         elif [ "${DEFAULT_KERNEL_CONFIG}" != "" -a -f "${DEFAULT_KERNEL_CONFIG}" ]
16         then
17                 KERNEL_CONFIG="${DEFAULT_KERNEL_CONFIG}"
18         elif [ -f "${GK_SHARE}/arch/${ARCH}/kernel-config-${VER}.${PAT}" ]
19         then
20                 KERNEL_CONFIG="${GK_SHARE}/arch/${ARCH}/kernel-config-${VER}.${PAT}"
21         elif [ -f "${GK_SHARE}/arch/${ARCH}/kernel-config" ]
22         then
23                 KERNEL_CONFIG="${GK_SHARE}/arch/${ARCH}/kernel-config"
24         else
25                 gen_die 'Error: No kernel .config specified, or file not found!'
26         fi
27 }
28
29 config_kernel() {
30         determine_config_file
31         cd "${KERNEL_DIR}" || gen_die 'Could not switch to the kernel directory!'
32
33         # Backup current kernel .config
34         if isTrue "${MRPROPER}" || [ ! -f "${KERNEL_DIR}/.config" ]
35         then
36                 print_info 1 "kernel: Using config from ${KERNEL_CONFIG}"
37                 if [ -f "${KERNEL_DIR}/.config" ]
38                 then
39                         NOW=`date +--%Y-%m-%d--%H-%M-%S`
40                         cp "${KERNEL_DIR}/.config" "${KERNEL_DIR}/.config${NOW}.bak" \
41                                         || gen_die "Could not backup kernel config (${KERNEL_DIR}/.config)"
42                         print_info 1 "        Previous config backed up to .config${NOW}.bak"
43                 fi
44         fi
45
46         if isTrue ${MRPROPER}
47         then
48                 print_info 1 'kernel: >> Running mrproper...'
49                 compile_generic mrproper kernel
50         else
51                 print_info 1 "kernel: --mrproper is disabled; not running 'make mrproper'."
52         fi
53
54         # If we're not cleaning a la mrproper, then we don't want to try to overwrite the configs
55         # or we might remove configurations someone is trying to test.
56         if isTrue "${MRPROPER}" || [ ! -f "${KERNEL_DIR}/.config" ]
57         then
58                 cp "${KERNEL_CONFIG}" "${KERNEL_DIR}/.config" || gen_die 'Could not copy configuration file!'
59         fi
60
61         if isTrue "${OLDCONFIG}"
62         then
63                 print_info 1 '        >> Running oldconfig...'
64                 yes '' 2>/dev/null | compile_generic oldconfig kernel 2>/dev/null
65         else
66                 print_info 1 "kernel: --oldconfig is disabled; not running 'make oldconfig'."
67         fi
68         if isTrue "${CLEAN}"
69         then
70                 print_info 1 'kernel: >> Cleaning...'
71                 compile_generic clean kernel
72         else
73                 print_info 1 "kernel: --clean is disabled; not running 'make clean'."
74         fi
75         
76         if isTrue ${MENUCONFIG}
77         then
78                 print_info 1 'kernel: >> Invoking menuconfig...'
79                 compile_generic menuconfig runtask
80                 [ "$?" ] || gen_die 'Error: menuconfig failed!'
81         elif isTrue ${CMD_GCONFIG}
82         then
83                 print_info 1 'kernel: >> Invoking gconfig...'
84                 compile_generic gconfig kernel
85                 [ "$?" ] || gen_die 'Error: gconfig failed!'
86
87                 CMD_XCONFIG=0
88         fi
89
90         if isTrue ${CMD_XCONFIG}
91         then
92                 print_info 1 'kernel: >> Invoking xconfig...'
93                 compile_generic xconfig kernel
94                 [ "$?" ] || gen_die 'Error: xconfig failed!'
95         fi
96
97         # Force this on if we are using --genzimage
98         if isTrue ${CMD_GENZIMAGE}
99         then
100                 # Make sure Ext2 support is on...
101                 sed -e 's/#\? \?CONFIG_EXT2_FS[ =].*/CONFIG_EXT2_FS=y/g' \
102                         -i ${KERNEL_DIR}/.config 
103         fi
104
105         # Make sure lvm modules are on if --lvm
106         if isTrue ${CMD_LVM}
107         then
108                 sed -i ${KERNEL_DIR}/.config -e 's/#\? \?CONFIG_BLK_DEV_DM is.*/CONFIG_BLK_DEV_DM=m/g'
109                 sed -i ${KERNEL_DIR}/.config -e 's/#\? \?CONFIG_DM_SNAPSHOT is.*/CONFIG_DM_SNAPSHOT=m/g'
110                 sed -i ${KERNEL_DIR}/.config -e 's/#\? \?CONFIG_DM_MIRROR is.*/CONFIG_DM_MIRROR=m/g'
111         fi
112
113         # Make sure dmraid modules are on if --dmraid
114         if isTrue ${CMD_DMRAID}
115         then
116                 sed -i ${KERNEL_DIR}/.config -e 's/#\? \?CONFIG_BLK_DEV_DM is.*/CONFIG_BLK_DEV_DM=m/g'
117         fi
118
119         # Make sure iSCSI modules are enabled in the kernel, if --iscsi
120         # CONFIG_SCSI_ISCSI_ATTRS
121         # CONFIG_ISCSI_TCP
122         if isTrue ${CMD_ISCSI}
123         then
124                 sed -i ${KERNEL_DIR}/.config -e 's/\# CONFIG_ISCSI_TCP is not set/CONFIG_ISCSI_TCP=m/g'
125                 sed -i ${KERNEL_DIR}/.config -e 's/\# CONFIG_SCSI_ISCSI_ATTRS is not set/CONFIG_SCSI_ISCSI_ATTRS=m/g'
126
127                 sed -i ${KERNEL_DIR}/.config -e 's/CONFIG_ISCSI_TCP=y/CONFIG_ISCSI_TCP=m/g'
128                 sed -i ${KERNEL_DIR}/.config -e 's/CONFIG_SCSI_ISCSI_ATTRS=y/CONFIG_SCSI_ISCSI_ATTRS=m/g'
129         fi
130
131         if isTrue ${SPLASH}
132         then
133                 sed -i ${KERNEL_DIR}/.config -e 's/#\? \?CONFIG_FB_SPLASH is.*/CONFIG_FB_SPLASH=y/g'
134         fi
135 }