aboutsummaryrefslogtreecommitdiff
blob: 37c184765098dd3186c201f7aee7cb17cb824fa5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
#!/bin/bash
# $Id$

get_KV() {
	if [ "${NO_KERNEL_SOURCES}" = '1' -a -e "${KERNCACHE}" ]
	then
		/bin/tar -xj -C ${TEMP} -f ${KERNCACHE} kerncache.config 
		if [ -e ${TEMP}/kerncache.config ]
		then
			VER=`grep ^VERSION\ \= ${TEMP}/kerncache.config | awk '{ print $3 };'`
			PAT=`grep ^PATCHLEVEL\ \= ${TEMP}/kerncache.config | awk '{ print $3 };'`
			SUB=`grep ^SUBLEVEL\ \= ${TEMP}/kerncache.config | awk '{ print $3 };'`
			EXV=`grep ^EXTRAVERSION\ \= ${TEMP}/kerncache.config | sed -e "s/EXTRAVERSION =//" -e "s/ //g"`
			LOV=`grep ^CONFIG_LOCALVERSION\= ${TEMP}/kerncache.config | sed -e "s/CONFIG_LOCALVERSION=\"\(.*\)\"/\1/"`
			KV=${VER}.${PAT}.${SUB}${EXV}${LOV}
		else
			gen_die "Could not find kerncache.config in the kernel cache! Exiting."
		fi
	else
		# Configure the kernel
		# If BUILD_KERNEL=0 then assume --no-clean, menuconfig is cleared

		if [ ! -f "${KERNEL_DIR}"/Makefile ]
		then
			gen_die "Kernel Makefile (${KERNEL_DIR}/Makefile) missing.  Maybe re-install the kernel sources."
		fi

		VER=`grep ^VERSION\ \= ${KERNEL_DIR}/Makefile | awk '{ print $3 };'`
		PAT=`grep ^PATCHLEVEL\ \= ${KERNEL_DIR}/Makefile | awk '{ print $3 };'`
		SUB=`grep ^SUBLEVEL\ \= ${KERNEL_DIR}/Makefile | awk '{ print $3 };'`
		EXV=`grep ^EXTRAVERSION\ \= ${KERNEL_DIR}/Makefile | sed -e "s/EXTRAVERSION =//" -e "s/ //g" -e 's/\$([a-z]*)//gi'`

		if [ -z "${SUB}" ]; 
		then
			# Handle O= build directories
			KERNEL_SOURCE_DIR=`grep ^MAKEARGS\ \:\=  ${KERNEL_DIR}/Makefile | awk '{ print $4 };'`
			[ -z "${KERNEL_SOURCE_DIR}" ] && gen_die "Deriving \${KERNEL_SOURCE_DIR} failed"
			SUB=`grep ^SUBLEVEL\ \= ${KERNEL_SOURCE_DIR}/Makefile | awk '{ print $3 };'`
			EXV=`grep ^EXTRAVERSION\ \= ${KERNEL_SOURCE_DIR}/Makefile | sed -e "s/EXTRAVERSION =//" -e "s/ //g" -e 's/\$([a-z]*)//gi'`
		fi

		cd ${KERNEL_DIR}
		#compile_generic prepare kernel > /dev/null 2>&1
		cd - > /dev/null 2>&1
		[ -f "${KERNEL_DIR}/include/linux/version.h" ] && \
			VERSION_SOURCE="${KERNEL_DIR}/include/linux/version.h"
		[ -f "${KERNEL_DIR}/include/linux/utsrelease.h" ] && \
			VERSION_SOURCE="${KERNEL_DIR}/include/linux/utsrelease.h"
		# Handle new-style releases where version.h doesn't have UTS_RELEASE
		if [ -f ${KERNEL_DIR}/include/config/kernel.release ]
		then
			UTS_RELEASE=`cat ${KERNEL_DIR}/include/config/kernel.release`
			LOV=`echo ${UTS_RELEASE}|sed -e "s/${VER}.${PAT}.${SUB}${EXV}//"`
			KV=${VER}.${PAT}.${SUB}${EXV}${LOV}
		elif [ -n "${VERSION_SOURCE}" ]
		then
			UTS_RELEASE=`grep UTS_RELEASE ${VERSION_SOURCE} | sed -e 's/#define UTS_RELEASE "\(.*\)"/\1/'`
			LOV=`echo ${UTS_RELEASE}|sed -e "s/${VER}.${PAT}.${SUB}${EXV}//"`
			KV=${VER}.${PAT}.${SUB}${EXV}${LOV}
		else
			determine_config_file
			LCV=`grep ^CONFIG_LOCALVERSION= "${KERNEL_CONFIG}" | sed -r -e "s/.*=\"(.*)\"/\1/"`
			KV=${VER}.${PAT}.${SUB}${EXV}${LCV}
		fi
	fi
}

determine_real_args() {
	print_info 4 "Resolving config file, command line, and arch default settings."

	set_config_alias MDADM MDRAID
	set_config_alias LUKS CRYPT
	set_config_alias GPG CRYPT_GPG
	set_config_alias SPLASH GENSPLASH
	set_config_alias FBSPLASH GENSPLASH

	#                               Dest / Config File   Command Line             Arch Default
	#                               ------------------   ------------             ------------
	set_config_with_override STRING LOGFILE              CMD_LOGFILE
	set_config_with_override STRING KERNEL_DIR           CMD_KERNEL_DIR           "${DEFAULT_KERNEL_SOURCE}"
	set_config_with_override BOOL   NO_KERNEL_SOURCES    CMD_NO_KERNEL_SOURCES
	set_config_with_override STRING KNAME                CMD_KERNNAME             "genkernel"

	set_config_with_override STRING MAKEOPTS             CMD_MAKEOPTS             "$DEFAULT_MAKEOPTS"
	set_config_with_override STRING KERNEL_MAKE          CMD_KERNEL_MAKE          "$DEFAULT_KERNEL_MAKE"
	set_config_with_override STRING KERNEL_CC            CMD_KERNEL_CC            "$DEFAULT_KERNEL_CC"
	set_config_with_override STRING KERNEL_LD            CMD_KERNEL_LD            "$DEFAULT_KERNEL_LD"
	set_config_with_override STRING KERNEL_AS            CMD_KERNEL_AS            "$DEFAULT_KERNEL_AS"

	set_config_with_override STRING KERNEL_CROSS_COMPILE CMD_KERNEL_CROSS_COMPILE
	set_config_with_override STRING BOOTDIR              CMD_BOOTDIR              "/boot"

	set_config_with_override BOOL   POSTCLEAR            CMD_POSTCLEAR
	set_config_with_override BOOL   MRPROPER             CMD_MRPROPER
	set_config_with_override BOOL   MENUCONFIG           CMD_MENUCONFIG
	set_config_with_override BOOL   CLEAN                CMD_CLEAN

	set_config_with_override STRING MINKERNPACKAGE       CMD_MINKERNPACKAGE
	set_config_with_override STRING MODULESPACKAGE       CMD_MODULESPACKAGE
	set_config_with_override STRING KERNCACHE            CMD_KERNCACHE
	set_config_with_override BOOL   NORAMDISKMODULES     CMD_NORAMDISKMODULES
	set_config_with_override STRING INITRAMFS_OVERLAY    CMD_INITRAMFS_OVERLAY
	set_config_with_override BOOL   MOUNTBOOT            CMD_MOUNTBOOT
	set_config_with_override BOOL   BUILD_STATIC         CMD_STATIC
	set_config_with_override BOOL   SAVE_CONFIG          CMD_SAVE_CONFIG
	set_config_with_override BOOL   SYMLINK              CMD_SYMLINK
	set_config_with_override STRING INSTALL_MOD_PATH     CMD_INSTALL_MOD_PATH
	set_config_with_override BOOL   OLDCONFIG            CMD_OLDCONFIG
	set_config_with_override BOOL   LVM                  CMD_LVM
	set_config_with_override BOOL   DMRAID               CMD_DMRAID
	set_config_with_override BOOL   ISCSI                CMD_ISCSI
	set_config_with_override BOOL   UNIONFS              CMD_UNIONFS
	set_config_with_override BOOL   MULTIPATH            CMD_MULTIPATH
	set_config_with_override BOOL   FIRMWARE             CMD_FIRMWARE
	set_config_with_override STRING FIRMWARE_DIR         CMD_FIRMWARE_DIR         "/lib/firmware"
	set_config_with_override STRING FIRMWARE_FILES       CMD_FIRMWARE_FILES
	set_config_with_override BOOL   INTEGRATED_INITRAMFS CMD_INTEGRATED_INITRAMFS
	set_config_with_override BOOL   GENZIMAGE            CMD_GENZIMAGE

	set_config_with_override BOOL   AUTO                 CMD_AUTO
	set_config_with_override BOOL   GENERIC              CMD_GENERIC
	set_config_with_override STRING DRACUT_DIR           CMD_DRACUT_DIR
	set_config_with_override BOOL   MDRAID               CMD_MDRAID
	set_config_with_override BOOL   CRYPT                CMD_CRYPT
	set_config_with_override BOOL   CRYPT_GPG            CMD_CRYPT_GPG
	set_config_with_override BOOL   PLYMOUTH             CMD_PLYMOUTH
	set_config_with_override BOOL   GENSPLASH            CMD_GENSPLASH
	set_config_with_override STRING ADD_MODULES          CMD_ADD_MODULES
	set_config_with_override STRING EXTRA_OPTIONS        CMD_EXTRA_OPTIONS

	BOOTDIR=`arch_replace "${BOOTDIR}"`
	BOOTDIR=${BOOTDIR%/}    # Remove any trailing slash

	CACHE_DIR=`arch_replace "${CACHE_DIR}"`

	DEFAULT_KERNEL_CONFIG=`arch_replace "${DEFAULT_KERNEL_CONFIG}"`

	if [ -n "${CMD_BOOTLOADER}" ]
	then
		BOOTLOADER="${CMD_BOOTLOADER}"
		if [ "${CMD_BOOTLOADER}" != "${CMD_BOOTLOADER/:/}" ]
		then
			BOOTFS=`echo "${CMD_BOOTLOADER}" | cut -f2- -d:`
			BOOTLOADER=`echo "${CMD_BOOTLOADER}" | cut -f1 -d:`
		fi
	fi
	
	if [ "${NO_KERNEL_SOURCES}" != "1" ]
	then
		if [ ! -d ${KERNEL_DIR} ]
		then
			gen_die "kernel source directory \"${KERNEL_DIR}\" was not found!"
		fi
	fi

	if [ -z "${KERNCACHE}" ]
	then
		if [ "${KERNEL_DIR}" = '' -a "${NO_KERNEL_SOURCES}" != "1" ]
		then
			gen_die 'No kernel source directory!'
		fi
		if [ ! -e "${KERNEL_DIR}" -a "${NO_KERNEL_SOURCES}" != "1" ]
		then
			gen_die 'No kernel source directory!'
		fi
	else
		if [ "${KERNEL_DIR}" = '' ]
		then
			gen_die 'Kernel Cache specified but no kernel tree to verify against!'
		fi
	fi

	# Special case:  If --no-clean is specified on the command line, 
	# imply --no-mrproper.
	if [ "${CMD_CLEAN}" != '' ]
	then
		if ! isTrue ${CLEAN}
		then
			MRPROPER=0
		fi
	fi
	
	if [ -n "${MINKERNPACKAGE}" ]
	then
		mkdir -p `dirname ${MINKERNPACKAGE}`
	fi
	
	if [ -n "${MODULESPACKAGE}" ]
	then
		mkdir -p `dirname ${MODULESPACKAGE}`
	fi

	if [ -n "${KERNCACHE}" ]
	then
		mkdir -p `dirname ${KERNCACHE}`
	fi

	if ! isTrue "${BUILD_RAMDISK}"
	then
		INTEGRATED_INITRAMFS=0
	fi
	
	get_KV
}