Added patch from Daniel Drake <dsd@gentoo.org> in bug #156611 to clean up the initram...
[genkernel.git] / gen_determineargs.sh
1 #!/bin/bash
2
3 get_KV() {
4         if [ "${CMD_NO_KERNEL_SOURCES}" = '1' -a -e "${CMD_KERNCACHE}" ]
5         then
6                 /bin/tar -xj -C ${TEMP} -f ${CMD_KERNCACHE} kerncache.config 
7                 if [ -e ${TEMP}/kerncache.config ]
8                 then
9                         KERN_24=0
10                         VER=`grep ^VERSION\ \= ${TEMP}/kerncache.config | awk '{ print $3 };'`
11                         PAT=`grep ^PATCHLEVEL\ \= ${TEMP}/kerncache.config | awk '{ print $3 };'`
12                         SUB=`grep ^SUBLEVEL\ \= ${TEMP}/kerncache.config | awk '{ print $3 };'`
13                         EXV=`grep ^EXTRAVERSION\ \= ${TEMP}/kerncache.config | sed -e "s/EXTRAVERSION =//" -e "s/ //g"`
14                         if [ "${PAT}" -gt '4' -a "${VER}" -ge '2' ]
15                         then
16                                 LOV=`grep ^CONFIG_LOCALVERSION\= ${TEMP}/kerncache.config | sed -e "s/CONFIG_LOCALVERSION=\"\(.*\)\"/\1/"`
17                                 KV=${VER}.${PAT}.${SUB}${EXV}${LOV}
18                         else
19                                 KERN_24=1
20                                 KV=${VER}.${PAT}.${SUB}${EXV}
21                         fi
22
23                 else
24                         gen_die "Could not find kerncache.config in the kernel cache! Exiting."
25                 fi
26
27         else
28                 # Configure the kernel
29                 # If BUILD_KERNEL=0 then assume --no-clean, menuconfig is cleared
30
31                 VER=`grep ^VERSION\ \= ${KERNEL_DIR}/Makefile | awk '{ print $3 };'`
32                 PAT=`grep ^PATCHLEVEL\ \= ${KERNEL_DIR}/Makefile | awk '{ print $3 };'`
33                 SUB=`grep ^SUBLEVEL\ \= ${KERNEL_DIR}/Makefile | awk '{ print $3 };'`
34                 EXV=`grep ^EXTRAVERSION\ \= ${KERNEL_DIR}/Makefile | sed -e "s/EXTRAVERSION =//" -e "s/ //g" -e 's/\$([a-z]*)//gi'`
35                 if [ "${PAT}" -gt '4' -a "${VER}" -ge '2' -a -e ${KERNEL_DIR}/.config ]
36                 then
37                         KERN_24=0
38                         cd ${KERNEL_DIR}
39                         #compile_generic prepare kernel > /dev/null 2>&1
40                         cd - > /dev/null 2>&1
41                         [ -f "${KERNEL_DIR}/include/linux/version.h" ] && \
42                                 VERSION_SOURCE="${KERNEL_DIR}/include/linux/version.h"
43                         [ -f "${KERNEL_DIR}/include/linux/utsrelease.h" ] && \
44                                 VERSION_SOURCE="${KERNEL_DIR}/include/linux/utsrelease.h"
45                         # Handle new-style releases where version.h doesn't have UTS_RELEASE
46                         if [ -f ${KERNEL_DIR}/include/config/kernel.release ]
47                         then
48                                 UTS_RELEASE=`cat ${KERNEL_DIR}/include/config/kernel.release`
49                                 LOV=`echo ${UTS_RELEASE}|sed -e "s/${VER}.${PAT}.${SUB}${EXV}//"`
50                                 KV=${VER}.${PAT}.${SUB}${EXV}${LOV}
51                         elif [ -n "${VERSION_SOURCE}" ]
52                         then
53                                 UTS_RELEASE=`grep UTS_RELEASE ${VERSION_SOURCE} | sed -e 's/#define UTS_RELEASE "\(.*\)"/\1/'`
54                                 LOV=`echo ${UTS_RELEASE}|sed -e "s/${VER}.${PAT}.${SUB}${EXV}//"`
55                                 KV=${VER}.${PAT}.${SUB}${EXV}${LOV}
56                         else
57                                 LCV=`grep ^CONFIG_LOCALVERSION= ${KERNEL_DIR}/.config | sed -r -e "s/.*=\"(.*)\"/\1/"`
58                                 KV=${VER}.${PAT}.${SUB}${EXV}${LCV}
59                         fi
60                 else
61                         KERN_24=1
62                         KV=${VER}.${PAT}.${SUB}${EXV}
63                 fi
64
65         fi
66
67         if isTrue "${CMD_DISKLABEL}"
68         then
69                 DISKLABEL=1
70         else
71                 DISKLABEL=0
72         fi
73
74         if isTrue "${CMD_LUKS}"
75         then
76                 LUKS=1
77         fi
78 }
79
80 determine_real_args() {
81         if [ "${CMD_DEBUGFILE}" != '' ]
82         then
83                 DEBUGFILE="${CMD_DEBUGFILE}"
84         fi
85
86         if [ "${CMD_MAKEOPTS}" != '' ]
87         then
88                 MAKEOPTS="${CMD_MAKEOPTS}"
89         fi
90
91         if [ "${CMD_KERNELDIR}" != '' ]
92         then
93                 KERNEL_DIR=${CMD_KERNELDIR}
94         else
95                 KERNEL_DIR=${DEFAULT_KERNEL_SOURCE}
96         fi
97         
98         if [ "${CMD_NO_KERNEL_SOURCES}" != "1" ]
99         then
100                 if [ ! -d ${KERNEL_DIR} ]
101                 then
102                         gen_die "kernel source directory \"${KERNEL_DIR}\" was not found!"
103                 fi
104         fi
105
106         if [ "${CMD_KERNCACHE}" != "" ]
107         then    
108                 if [ "${KERNEL_DIR}" = '' -a "${CMD_NO_KERNEL_SOURCES}" != "1" ]
109                 then
110                         gen_die 'No kernel source directory!'
111                 fi
112                 if [ ! -e "${KERNEL_DIR}" -a "${CMD_NO_KERNEL_SOURCES}" != "1" ]
113                 then
114                         gen_die 'No kernel source directory!'
115                 fi
116         else    
117                 if [ "${KERNEL_DIR}" = '' ]
118                 then
119                         gen_die 'Kernel Cache specified but no kernel tree to verify against!'
120                 fi
121         fi
122         
123         if [ "${CMD_KERNNAME}" != "" ]
124         then
125                 KNAME=${CMD_KERNNAME}
126         else
127                 KNAME="genkernel"
128         fi
129         
130         if [ "${CMD_KERNEL_MAKE}" != '' ]
131         then
132                 KERNEL_MAKE="${CMD_KERNEL_MAKE}"
133         fi
134
135         if [ "${KERNEL_MAKE}" = '' ]
136         then
137                 KERNEL_MAKE='make'
138         fi
139
140         if [ "${CMD_UTILS_MAKE}" != '' ]
141         then
142                 UTILS_MAKE="${CMD_UTILS_MAKE}"
143         fi
144
145         if [ "${UTILS_MAKE}" = '' ]
146         then
147                 UTILS_MAKE='make'
148         fi
149
150         if [ "${CMD_KERNEL_CC}" != '' ]
151         then
152                 KERNEL_CC="${CMD_KERNEL_CC}"
153         fi
154
155         if [ "${CMD_KERNEL_LD}" != '' ]
156         then
157                 KERNEL_LD="${CMD_KERNEL_LD}"
158         fi
159
160         if [ "${CMD_KERNEL_AS}" != '' ]
161         then
162                 KERNEL_AS="${CMD_KERNEL_AS}"
163         fi
164         
165         if [ "${CMD_KERNEL_CROSS_COMPILE}" != '' ]
166         then
167                 KERNEL_CROSS_COMPILE="${CMD_KERNEL_CROSS_COMPILE}"
168         fi
169
170         if [ "${CMD_UTILS_CC}" != '' ]
171         then
172                 UTILS_CC="${CMD_UTILS_CC}"
173         fi
174
175         if [ "${CMD_UTILS_LD}" != '' ]
176         then
177                 UTILS_LD="${CMD_UTILS_LD}"
178         fi
179
180         if [ "${CMD_UTILS_AS}" != '' ]
181         then
182                 UTILS_AS="${CMD_UTILS_AS}"
183         fi
184         
185         if [ "${CMD_UTILS_CROSS_COMPILE}" != '' ]
186         then
187                 UTILS_CROSS_COMPILE="${CMD_UTILS_CROSS_COMPILE}"
188         fi
189
190         if [ "${BOOTDIR}" != '' ]
191         then
192                 BOOTDIR=`arch_replace "${BOOTDIR}"`
193                 BOOTDIR=${BOOTDIR%/}    # Remove any trailing slash
194         else
195                 BOOTDIR="/boot"
196         fi
197
198         CACHE_DIR=`arch_replace "${CACHE_DIR}"`
199         BUSYBOX_BINCACHE=`cache_replace "${BUSYBOX_BINCACHE}"`
200         MODULE_INIT_TOOLS_BINCACHE=`cache_replace "${MODULE_INIT_TOOLS_BINCACHE}"`
201         MODUTILS_BINCACHE=`cache_replace "${MODUTILS_BINCACHE}"`
202         DIETLIBC_BINCACHE=`cache_replace "${DIETLIBC_BINCACHE}"`
203         DIETLIBC_BINCACHE_TEMP=`cache_replace "${DIETLIBC_BINCACHE_TEMP}"`
204         DEVFSD_BINCACHE=`cache_replace "${DEVFSD_BINCACHE}"`
205         DEVFSD_CONF_BINCACHE=`cache_replace "${DEVFSD_CONF_BINCACHE}"`
206         UDEV_BINCACHE=`cache_replace "${UDEV_BINCACHE}"`
207         KLIBC_BINCACHE=`cache_replace "${KLIBC_BINCACHE}"`
208         DEVICE_MAPPER_BINCACHE=`cache_replace "${DEVICE_MAPPER_BINCACHE}"`
209         LVM2_BINCACHE=`cache_replace "${LVM2_BINCACHE}"`
210         DMRAID_BINCACHE=`cache_replace "${DMRAID_BINCACHE}"`
211         UNIONFS_BINCACHE=`cache_replace "${UNIONFS_BINCACHE}"`
212         UNIONFS_MODULES_BINCACHE=`cache_replace "${UNIONFS_MODULES_BINCACHE}"`
213         BLKID_BINCACHE=`cache_replace "${BLKID_BINCACHE}"`
214         SUSPEND_BINCACHE=`cache_replace "${SUSPEND_BINCACHE}"`
215   
216         DEFAULT_KERNEL_CONFIG=`arch_replace "${DEFAULT_KERNEL_CONFIG}"`
217         BUSYBOX_CONFIG=`arch_replace "${BUSYBOX_CONFIG}"`
218         BUSYBOX_BINCACHE=`arch_replace "${BUSYBOX_BINCACHE}"`
219         MODULE_INIT_TOOLS_BINCACHE=`arch_replace "${MODULE_INIT_TOOLS_BINCACHE}"`
220         MODUTILS_BINCACHE=`arch_replace "${MODUTILS_BINCACHE}"`
221         DIETLIBC_BINCACHE=`arch_replace "${DIETLIBC_BINCACHE}"`
222         DIETLIBC_BINCACHE_TEMP=`arch_replace "${DIETLIBC_BINCACHE_TEMP}"`
223         DEVFSD_BINCACHE=`arch_replace "${DEVFSD_BINCACHE}"`
224         DEVFSD_CONF_BINCACHE=`arch_replace "${DEVFSD_CONF_BINCACHE}"`
225         UDEV_BINCACHE=`arch_replace "${UDEV_BINCACHE}"`
226         KLIBC_BINCACHE=`arch_replace "${KLIBC_BINCACHE}"`
227         DEVICE_MAPPER_BINCACHE=`arch_replace "${DEVICE_MAPPER_BINCACHE}"`
228         LVM2_BINCACHE=`arch_replace "${LVM2_BINCACHE}"`
229         DMRAID_BINCACHE=`arch_replace "${DMRAID_BINCACHE}"`
230         UNIONFS_BINCACHE=`arch_replace "${UNIONFS_BINCACHE}"`
231         UNIONFS_MODULES_BINCACHE=`arch_replace "${UNIONFS_MODULES_BINCACHE}"`
232         BLKID_BINCACHE=`arch_replace "${BLKID_BINCACHE}"`
233         SUSPEND_BINCACHE=`arch_replace "${SUSPEND_BINCACHE}"`
234         
235         if [ "${CMD_BOOTSPLASH}" != '' ]
236         then
237                 BOOTSPLASH=${CMD_BOOTSPLASH}
238         fi
239
240         if isTrue ${BOOTSPLASH}
241         then
242                 BOOTSPLASH=1
243         else
244                 BOOTSPLASH=0
245         fi
246
247         if [ "${CMD_GENSPLASH}" != '' ]
248         then
249                 GENSPLASH=${CMD_GENSPLASH}
250         fi
251
252         if isTrue ${GENSPLASH}
253         then
254                 GENSPLASH=1
255         else
256                 GENSPLASH=0
257         fi
258
259         if isTrue ${COMPRESS_INITRD}
260         then
261                 COMPRESS_INITRD=1
262         else
263                 COMPRESS_INITRD=0
264         fi
265
266         if isTrue ${CMD_POSTCLEAR}
267         then
268                 POSTCLEAR=1
269         else
270                 POSTCLEAR=0
271         fi
272         
273         if [ "${CMD_MRPROPER}" != '' ]
274         then
275                 MRPROPER="${CMD_MRPROPER}"
276         fi
277         if [ "${CMD_MENUCONFIG}" != '' ]
278         then
279                 MENUCONFIG="${CMD_MENUCONFIG}"
280         fi
281         if [ "${CMD_CLEAN}" != '' ]
282         then
283                 CLEAN="${CMD_CLEAN}"
284                 if ! isTrue ${CLEAN}
285                 then
286                         MRPROPER=0
287                 fi
288         fi
289
290         if [ "${CMD_MINKERNPACKAGE}" != '' ]
291         then
292                 MINKERNPACKAGE="${CMD_MINKERNPACKAGE}"
293                 mkdir -p `dirname ${MINKERNPACKAGE}`
294         fi
295         
296         if [ "${CMD_MODULESPACKAGE}" != '' ]
297         then
298                 MODULESPACKAGE="${CMD_MODULESPACKAGE}"
299                 mkdir -p `dirname ${MODULESPACKAGE}`
300         fi
301
302         if [ "${CMD_KERNCACHE}" != '' ]
303         then
304                 KERNCACHE="${CMD_KERNCACHE}"
305                 mkdir -p `dirname ${KERNCACHE}`
306         fi
307         
308         if [ "${CMD_NOINITRDMODULES}" != '' ]
309         then
310                 NOINITRDMODULES="${CMD_NOINITRDMODULES}"
311         fi
312         
313         if [ "${CMD_INITRAMFS_OVERLAY}" != '' ]
314         then
315                 INITRAMFS_OVERLAY="${CMD_INITRAMFS_OVERLAY}"
316         fi
317
318         if [ "${CMD_MOUNTBOOT}" != '' ]
319         then
320                 MOUNTBOOT="${CMD_MOUNTBOOT}"
321         fi
322
323         if isTrue ${MOUNTBOOT}
324         then
325                 MOUNTBOOT=1
326         else
327                 MOUNTBOOT=0
328         fi
329
330         if [ "${CMD_STATIC}" != '' ]
331         then
332                 BUILD_STATIC=${CMD_STATIC}
333         fi
334
335         if isTrue ${BUILD_STATIC}
336         then
337                 BUILD_STATIC=1
338         else
339                 BUILD_STATIC=0
340         fi
341
342         if [ "${CMD_INITRAMFS}" != '' ]
343         then
344                 BUILD_INITRAMFS=${CMD_INITRAMFS}
345         fi
346
347         if isTrue ${BUILD_INITRAMFS}
348         then
349                 BUILD_INITRAMFS=1
350         else
351                 BUILD_INITRAMFS=0
352         fi
353
354         if [ "${CMD_SAVE_CONFIG}" != '' ]
355         then
356                 SAVE_CONFIG="${CMD_SAVE_CONFIG}"
357         fi
358
359         if isTrue "${SAVE_CONFIG}"
360         then
361                 SAVE_CONFIG=1
362         else
363                 SAVE_CONFIG=0
364         fi
365   
366         if isTrue "${CMD_SYMLINK}"
367         then
368                 SYMLINK=1
369         else
370                 SYMLINK=0
371         fi
372         
373         if [ "${CMD_INSTALL_MOD_PATH}" != '' ]
374         then
375                 INSTALL_MOD_PATH="${CMD_INSTALL_MOD_PATH}"
376         fi
377
378         if [ "${CMD_BOOTLOADER}" != '' ]
379         then
380                 BOOTLOADER="${CMD_BOOTLOADER}"
381                 
382                 if [ "${CMD_BOOTLOADER}" != "${CMD_BOOTLOADER/:/}" ]
383                 then
384                         BOOTFS=`echo "${CMD_BOOTLOADER}" | cut -f2- -d:`
385                         BOOTLOADER=`echo "${CMD_BOOTLOADER}" | cut -f1 -d:`
386                 fi
387         fi
388
389         if isTrue "${CMD_OLDCONFIG}"
390         then
391                 OLDCONFIG=1
392         else
393                 OLDCONFIG=0
394         fi
395
396         if isTrue "${CMD_NO_UDEV}"
397         then
398                 UDEV=0
399                 if isTrue "${CMD_NO_DEVFS}"
400                 then
401                     DEVFS=0
402                 else
403                     DEVFS=1
404                 fi
405         else
406                 UDEV=1
407                 DEVFS=0
408         fi
409         
410         if isTrue "${CMD_NO_DEVFS}"
411         then
412                 DEVFS=0
413         fi
414         
415         if isTrue "${CMD_DEVFS}"
416         then
417                 DEVFS=1
418                 UDEV=0
419         fi
420
421         if isTrue "${CMD_LVM2}"
422         then
423                 LVM2=1
424         else
425                 LVM2=0
426         fi
427
428         if isTrue "${CMD_SUSPEND}"
429         then
430                 SUSPEND=1
431         else
432                 SUSPEND=0
433         fi
434         
435         if isTrue "${CMD_EVMS2}"
436         then
437                 EVMS2=1
438         else
439                 EVMS2=0
440         fi
441         
442         if isTrue "${CMD_UNIONFS}"
443         then
444                 UNIONFS=1
445         else
446                 UNIONFS=0
447         fi
448         
449         if isTrue "${CMD_NO_BUSYBOX}"
450         then
451                 BUSYBOX=0
452         else
453                 BUSYBOX=1
454         fi
455
456         if isTrue "${CMD_DMRAID}"
457         then
458                 DMRAID=1
459         else
460                 DMRAID=0
461         fi
462         
463         get_KV
464         UNIONFS_MODULES_BINCACHE=`kv_replace "${UNIONFS_MODULES_BINCACHE}"`
465 }