Add --unionfs commandline option to enable building of unionfs-fuse
[genkernel.git] / gen_determineargs.sh
1 #!/bin/bash
2
3 get_KV() {
4         if [ "${NO_KERNEL_SOURCES}" = '1' -a -e "${KERNCACHE}" ]
5         then
6                 /bin/tar -xj -C ${TEMP} -f ${KERNCACHE} kerncache.config 
7                 if [ -e ${TEMP}/kerncache.config ]
8                 then
9                         VER=`grep ^VERSION\ \= ${TEMP}/kerncache.config | awk '{ print $3 };'`
10                         PAT=`grep ^PATCHLEVEL\ \= ${TEMP}/kerncache.config | awk '{ print $3 };'`
11                         SUB=`grep ^SUBLEVEL\ \= ${TEMP}/kerncache.config | awk '{ print $3 };'`
12                         EXV=`grep ^EXTRAVERSION\ \= ${TEMP}/kerncache.config | sed -e "s/EXTRAVERSION =//" -e "s/ //g"`
13                         LOV=`grep ^CONFIG_LOCALVERSION\= ${TEMP}/kerncache.config | sed -e "s/CONFIG_LOCALVERSION=\"\(.*\)\"/\1/"`
14                         KV=${VER}.${PAT}.${SUB}${EXV}${LOV}
15                 else
16                         gen_die "Could not find kerncache.config in the kernel cache! Exiting."
17                 fi
18         else
19                 # Configure the kernel
20                 # If BUILD_KERNEL=0 then assume --no-clean, menuconfig is cleared
21
22                 VER=`grep ^VERSION\ \= ${KERNEL_DIR}/Makefile | awk '{ print $3 };'`
23                 PAT=`grep ^PATCHLEVEL\ \= ${KERNEL_DIR}/Makefile | awk '{ print $3 };'`
24                 SUB=`grep ^SUBLEVEL\ \= ${KERNEL_DIR}/Makefile | awk '{ print $3 };'`
25                 EXV=`grep ^EXTRAVERSION\ \= ${KERNEL_DIR}/Makefile | sed -e "s/EXTRAVERSION =//" -e "s/ //g" -e 's/\$([a-z]*)//gi'`
26                 cd ${KERNEL_DIR}
27                 #compile_generic prepare kernel > /dev/null 2>&1
28                 cd - > /dev/null 2>&1
29                 [ -f "${KERNEL_DIR}/include/linux/version.h" ] && \
30                         VERSION_SOURCE="${KERNEL_DIR}/include/linux/version.h"
31                 [ -f "${KERNEL_DIR}/include/linux/utsrelease.h" ] && \
32                         VERSION_SOURCE="${KERNEL_DIR}/include/linux/utsrelease.h"
33                 # Handle new-style releases where version.h doesn't have UTS_RELEASE
34                 if [ -f ${KERNEL_DIR}/include/config/kernel.release ]
35                 then
36                         UTS_RELEASE=`cat ${KERNEL_DIR}/include/config/kernel.release`
37                         LOV=`echo ${UTS_RELEASE}|sed -e "s/${VER}.${PAT}.${SUB}${EXV}//"`
38                         KV=${VER}.${PAT}.${SUB}${EXV}${LOV}
39                 elif [ -n "${VERSION_SOURCE}" ]
40                 then
41                         UTS_RELEASE=`grep UTS_RELEASE ${VERSION_SOURCE} | sed -e 's/#define UTS_RELEASE "\(.*\)"/\1/'`
42                         LOV=`echo ${UTS_RELEASE}|sed -e "s/${VER}.${PAT}.${SUB}${EXV}//"`
43                         KV=${VER}.${PAT}.${SUB}${EXV}${LOV}
44                 else
45                         LCV=`grep ^CONFIG_LOCALVERSION= ${KERNEL_DIR}/.config | sed -r -e "s/.*=\"(.*)\"/\1/"`
46                         KV=${VER}.${PAT}.${SUB}${EXV}${LCV}
47                 fi
48         fi
49 }
50
51 determine_real_args() {
52         print_info 4 "Resolving config file, command line, and arch default settings."
53
54         #                          Config File          Command Line             Arch Default
55         #                          -----------          ------------             ------------
56         set_config_with_override 2 DEBUGFILE            CMD_DEBUGFILE
57         set_config_with_override 2 KERNEL_DIR           CMD_KERNEL_DIR           "${DEFAULT_KERNEL_SOURCE}"
58         set_config_with_override 1 NO_KERNEL_SOURCES    CMD_NO_KERNEL_SOURCES
59         set_config_with_override 2 KNAME                CMD_KERNNAME             "genkernel"
60
61         set_config_with_override 2 MAKEOPTS             CMD_MAKEOPTS             "$DEFAULT_MAKEOPTS"
62         set_config_with_override 2 KERNEL_MAKE          CMD_KERNEL_MAKE          "$DEFAULT_KERNEL_MAKE"
63         set_config_with_override 2 UTILS_MAKE           CMD_UTILS_MAKE           "$DEFAULT_UTILS_MAKE"
64         set_config_with_override 2 KERNEL_CC            CMD_KERNEL_CC            "$DEFAULT_KERNEL_CC"
65         set_config_with_override 2 KERNEL_LD            CMD_KERNEL_LD            "$DEFAULT_KERNEL_LD"
66         set_config_with_override 2 KERNEL_AS            CMD_KERNEL_AS            "$DEFAULT_KERNEL_AS"
67         set_config_with_override 2 UTILS_CC             CMD_UTILS_CC             "$DEFAULT_UTILS_CC"
68         set_config_with_override 2 UTILS_LD             CMD_UTILS_LD             "$DEFAULT_UTILS_LD"
69         set_config_with_override 2 UTILS_AS             CMD_UTILS_AS             "$DEFAULT_UTILS_AS"
70
71         set_config_with_override 2 KERNEL_CROSS_COMPILE CMD_KERNEL_CROSS_COMPILE
72         set_config_with_override 2 UTILS_CROSS_COMPILE  CMD_UTILS_CROSS_COMPILE
73         set_config_with_override 2 BOOTDIR              CMD_BOOTDIR              "/boot"
74
75         set_config_with_override 1 SPLASH               CMD_SPLASH
76         set_config_with_override 1 POSTCLEAR            CMD_POSTCLEAR
77         set_config_with_override 1 MRPROPER             CMD_MRPROPER
78         set_config_with_override 1 MENUCONFIG           CMD_MENUCONFIG
79         set_config_with_override 1 CLEAN                CMD_CLEAN
80
81         set_config_with_override 2 MINKERNPACKAGE       CMD_MINKERNPACKAGE
82         set_config_with_override 2 MODULESPACKAGE       CMD_MODULESPACKAGE
83         set_config_with_override 2 KERNCACHE            CMD_KERNCACHE
84         set_config_with_override 1 NORAMDISKMODULES     CMD_NORAMDISKMODULES
85         set_config_with_override 1 ALLRAMDISKMODULES    CMD_ALLRAMDISKMODULES
86         set_config_with_override 2 INITRAMFS_OVERLAY    CMD_INITRAMFS_OVERLAY
87         set_config_with_override 1 MOUNTBOOT            CMD_MOUNTBOOT
88         set_config_with_override 1 BUILD_STATIC         CMD_STATIC
89         set_config_with_override 1 SAVE_CONFIG          CMD_SAVE_CONFIG
90         set_config_with_override 1 SYMLINK              CMD_SYMLINK
91         set_config_with_override 2 INSTALL_MOD_PATH     CMD_INSTALL_MOD_PATH
92         set_config_with_override 1 OLDCONFIG            CMD_OLDCONFIG
93         set_config_with_override 1 LVM                  CMD_LVM
94         set_config_with_override 1 EVMS                 CMD_EVMS
95         set_config_with_override 1 DMRAID               CMD_DMRAID
96         set_config_with_override 1 BUSYBOX              CMD_BUSYBOX              "yes"
97         set_config_with_override 1 UNIONFS                              CMD_UNIONFS
98         set_config_with_override 1 DISKLABEL            CMD_DISKLABEL
99         set_config_with_override 1 LUKS                 CMD_LUKS
100         set_config_with_override 1 MDADM                CMD_MDADM
101         set_config_with_override 1 FIRMWARE             CMD_FIRMWARE
102         set_config_with_override 2 FIRMWARE_DIR         CMD_FIRMWARE_DIR         "/lib/firmware"
103         set_config_with_override 2 FIRMWARE_FILES       CMD_FIRMWARE_FILES
104         set_config_with_override 1 INTEGRATED_INITRAMFS CMD_INTEGRATED_INITRAMFS
105         set_config_with_override 1 GENZIMAGE            CMD_GENZIMAGE
106         set_config_with_override 1 KEYMAP               CMD_KEYMAP               "yes"
107         set_config_with_override 1 DOKEYMAPAUTO         CMD_DOKEYMAPAUTO
108
109         BOOTDIR=`arch_replace "${BOOTDIR}"`
110         BOOTDIR=${BOOTDIR%/}    # Remove any trailing slash
111
112         CACHE_DIR=`arch_replace "${CACHE_DIR}"`
113         BUSYBOX_BINCACHE=`cache_replace "${BUSYBOX_BINCACHE}"`
114         DEVICE_MAPPER_BINCACHE=`cache_replace "${DEVICE_MAPPER_BINCACHE}"`
115         LVM_BINCACHE=`cache_replace "${LVM_BINCACHE}"`
116         DMRAID_BINCACHE=`cache_replace "${DMRAID_BINCACHE}"`
117         BLKID_BINCACHE=`cache_replace "${BLKID_BINCACHE}"`
118         FUSE_BINCACHE=`cache_replace "${FUSE_BINCACHE}"`
119         UNIONFS_FUSE_BINCACHE=`cache_replace "${UNIONFS_FUSE_BINCACHE}"`
120   
121         DEFAULT_KERNEL_CONFIG=`arch_replace "${DEFAULT_KERNEL_CONFIG}"`
122         BUSYBOX_CONFIG=`arch_replace "${BUSYBOX_CONFIG}"`
123         BUSYBOX_BINCACHE=`arch_replace "${BUSYBOX_BINCACHE}"`
124         DEVICE_MAPPER_BINCACHE=`arch_replace "${DEVICE_MAPPER_BINCACHE}"`
125         LVM_BINCACHE=`arch_replace "${LVM_BINCACHE}"`
126         DMRAID_BINCACHE=`arch_replace "${DMRAID_BINCACHE}"`
127         BLKID_BINCACHE=`arch_replace "${BLKID_BINCACHE}"`
128         FUSE_BINCACHE=`arch_replace "${FUSE_BINCACHE}"`
129         UNIONFS_FUSE_BINCACHE=`arch_replace "${UNIONFS_FUSE_BINCACHE}"`
130         
131         if [ "${NO_KERNEL_SOURCES}" != "1" ]
132         then
133                 if [ ! -d ${KERNEL_DIR} ]
134                 then
135                         gen_die "kernel source directory \"${KERNEL_DIR}\" was not found!"
136                 fi
137         fi
138
139         if [ -z "${KERNCACHE}" ]
140         then
141                 if [ "${KERNEL_DIR}" = '' -a "${NO_KERNEL_SOURCES}" != "1" ]
142                 then
143                         gen_die 'No kernel source directory!'
144                 fi
145                 if [ ! -e "${KERNEL_DIR}" -a "${NO_KERNEL_SOURCES}" != "1" ]
146                 then
147                         gen_die 'No kernel source directory!'
148                 fi
149         else
150                 if [ "${KERNEL_DIR}" = '' ]
151                 then
152                         gen_die 'Kernel Cache specified but no kernel tree to verify against!'
153                 fi
154         fi
155
156         # Special case:  If --no-clean is specified on the command line, 
157         # imply --no-mrproper.
158         if [ "${CMD_CLEAN}" != '' ]
159         then
160                 if ! isTrue ${CLEAN}
161                 then
162                         MRPROPER=0
163                 fi
164         fi
165         
166         if [ -n "${MINKERNPACKAGE}" ]
167         then
168                 mkdir -p `dirname ${MINKERNPACKAGE}`
169         fi
170         
171         if [ -n "${MODULESPACKAGE}" ]
172         then
173                 mkdir -p `dirname ${MODULESPACKAGE}`
174         fi
175
176         if [ -n "${KERNCACHE}" ]
177         then
178                 mkdir -p `dirname ${KERNCACHE}`
179         fi
180
181         if ! isTrue "${BUILD_RAMDISK}"
182         then
183                 INTEGRATED_INITRAMFS=0
184         fi
185         
186         get_KV
187 }