Removed all references to an initrd and renamed most initr{d,amfs} stuff to simply...
[genkernel.git] / gen_package.sh
1 #!/bin/bash
2
3 gen_minkernpackage() {
4         print_info 1 'Creating minimal kernel package'
5         rm -rf "${TEMP}/minkernpackage" > /dev/null 2>&1
6         mkdir "${TEMP}/minkernpackage" || gen_die 'Could not make a directory for the kernel package!'
7         if [ "${KERNCACHE}" != "" ]
8         then
9                 /bin/tar -xj -C ${TEMP}/minkernpackage -f ${KERNCACHE} kernel-${ARCH}-${KV}
10                 /bin/tar -xj -C ${TEMP}/minkernpackage -f ${KERNCACHE} config-${ARCH}-${KV}
11                 if isTrue "${GENZIMAGE}"
12                 then
13                         /bin/tar -xj -C ${TEMP}/minkernpackage -f ${KERNCACHE} kernelz-${ARCH}-${KV}
14                 fi
15         else
16                 cd "${KERNEL_DIR}"
17                 cp "${KERNEL_BINARY}" "${TEMP}/minkernpackage/kernel-${KV}" || gen_die 'Could not the copy kernel for the min kernel package!'
18                 cp ".config" "${TEMP}/minkernpackage/config-${ARCH}-${KV}" || gen_die 'Could not the copy kernel config for the min kernel package!'
19                 if isTrue "${GENZIMAGE}"
20                 then
21                         cp "${KERNEL_BINARY_2}" "${TEMP}/minkernpackage/kernelz-${KV}" || gen_die "Could not copy the kernelz for the min kernel package"
22                 fi
23         fi
24         
25         if ! isTrue "${INTEGRATED_INITRAMFS}"
26         then
27                 [ "${BUILD_RAMDISK}" -ne 0 ] && { cp "${TMPDIR}/initramfs-${KV}" "${TEMP}/minkernpackage/initramfs-${ARCH}-${KV}" || gen_die 'Could not copy the initramfs for the kernel package!'; }
28         fi
29
30         if [ "${KERNCACHE}" != "" ]
31         then
32                 /bin/tar -xj -C ${TEMP}/minkernpackage -f ${KERNCACHE} System.map-${ARCH}-${KV}
33         else
34                 cp "${KERNEL_DIR}/System.map" "${TEMP}/minkernpackage/System.map-${ARCH}-${KV}" || gen_die 'Could not copy System.map for the kernel package!';
35         fi
36         
37         cd "${TEMP}/minkernpackage" 
38         /bin/tar -jcpf ${MINKERNPACKAGE} * || gen_die 'Could not compress the kernel package!'
39         cd "${TEMP}" && rm -rf "${TEMP}/minkernpackage" > /dev/null 2>&1
40 }
41
42 gen_modulespackage() {
43         print_info 1 'Creating modules package'
44         rm -rf "${TEMP}/modulespackage" > /dev/null 2>&1
45         mkdir "${TEMP}/modulespackage" || gen_die 'Could not make a directory for the kernel package!'
46
47         if [ -d ${INSTALL_MOD_PATH}/lib/modules/${KV} ]
48         then
49             mkdir -p ${TEMP}/modulespackage/lib/modules
50             cp -r "${INSTALL_MOD_PATH}/lib/modules/${KV}" "${TEMP}/modulespackage/lib/modules"
51             cd "${TEMP}/modulespackage" 
52             /bin/tar -jcpf ${MODULESPACKAGE} * || gen_die 'Could not compress the modules package!'
53         else
54             print_info 1 "Could not create a modules package ${INSTALL_MOD_PATH}/lib/modules/${KV} was not found"
55         fi
56         cd "${TEMP}" && rm -rf "${TEMP}/modulespackage" > /dev/null 2>&1
57 }
58 gen_kerncache()
59 {
60         print_info 1 'Creating kernel cache'
61         rm -rf "${TEMP}/kerncache" > /dev/null 2>&1
62         mkdir "${TEMP}/kerncache" || gen_die 'Could not make a directory for the kernel cache!'
63         cd "${KERNEL_DIR}"
64         cp "${KERNEL_BINARY}" "${TEMP}/kerncache/kernel-${ARCH}-${KV}" || gen_die 'Could not the copy kernel for the kernel package!'
65         cp "${KERNEL_DIR}/.config" "${TEMP}/kerncache/config-${ARCH}-${KV}"
66         cp "${KERNEL_CONFIG}" "${TEMP}/kerncache/config-${ARCH}-${KV}.orig"
67         cp "${KERNEL_DIR}/System.map" "${TEMP}/kerncache/System.map-${ARCH}-${KV}"
68         if isTrue "${GENZIMAGE}"
69         then
70                 cp "${KERNEL_BINARY_2}" "${TEMP}/kerncache/kernelz-${ARCH}-${KV}" || gen_die "Could not copy the kernelz for the kernel package"
71         fi
72         
73         echo "VERSION = ${VER}" > "${TEMP}/kerncache/kerncache.config"
74         echo "PATCHLEVEL = ${PAT}" >> "${TEMP}/kerncache/kerncache.config"
75         echo "SUBLEVEL = ${SUB}" >> "${TEMP}/kerncache/kerncache.config"
76         echo "EXTRAVERSION = ${EXV}" >> "${TEMP}/kerncache/kerncache.config"
77         
78         mkdir -p "${TEMP}/kerncache/lib/modules/"
79         
80         if [ -d ${INSTALL_MOD_PATH}/lib/modules/${KV} ]
81         then
82             cp -r "${INSTALL_MOD_PATH}/lib/modules/${KV}" "${TEMP}/kerncache/lib/modules"
83         fi
84         
85         cd "${TEMP}/kerncache" 
86         /bin/tar -jcpf ${KERNCACHE} * || gen_die 'Could not compress the kernel package!'
87         cd "${TEMP}" && rm -rf "${TEMP}/kerncache" > /dev/null 2>&1
88 }
89
90 gen_kerncache_extract_kernel()
91 {
92         /bin/tar -f ${KERNCACHE} -C ${TEMP} -xj 
93         copy_image_with_preserve "kernel" \
94                 "${TEMP}/kernel-${ARCH}-${KV}" \
95                 "kernel-${KNAME}-${ARCH}-${KV}"
96
97         if isTrue "${GENZIMAGE}"
98         then
99                 copy_image_with_preserve "kernelz" \
100                         "${TEMP}/kernelz-${ARCH}-${KV}" \
101                         "kernelz-${KNAME}-${ARCH}-${KV}"
102         fi
103     
104         copy_image_with_preserve "System.map" \
105                 "${TEMP}/System.map-${ARCH}-${KV}" \
106                 "System.map-${KNAME}-${ARCH}-${KV}"
107 }
108
109 gen_kerncache_extract_modules()
110 {
111         if [ -e "${KERNCACHE}" ] 
112         then
113                 print_info 1 'Extracting kerncache kernel modules'
114                 if [ "${INSTALL_MOD_PATH}" != '' ]
115                 then
116                         /bin/tar -xjf ${KERNCACHE} -C ${INSTALL_MOD_PATH} lib
117                 else
118                         /bin/tar -xjf ${KERNCACHE} -C / lib
119                 fi
120         fi
121 }
122
123 gen_kerncache_extract_config()
124 {
125         if [ -e "${KERNCACHE}" ] 
126         then
127                 print_info 1 'Extracting kerncache config to /etc/kernels'
128                 mkdir -p /etc/kernels
129                 /bin/tar -xjf ${KERNCACHE} -C /etc/kernels config-${ARCH}-${KV}
130                 mv /etc/kernels/config-${ARCH}-${KV} /etc/kernels/kernel-config-${ARCH}-${KV}
131         fi
132 }
133
134 gen_kerncache_is_valid()
135 {
136         KERNCACHE_IS_VALID=0
137         if [ "${NO_KERNEL_SOURCES}" = '1' ]
138         then
139
140                 BUILD_KERNEL=0
141                 # Can make this more secure ....
142
143                 /bin/tar -xj -f ${KERNCACHE} -C ${TEMP}
144                 if [ -e ${TEMP}/config-${ARCH}-${KV} -a -e ${TEMP}/kernel-${ARCH}-${KV} ] 
145                 then 
146                         print_info 1 'Valid kernel cache found; no sources will be used'
147                         KERNCACHE_IS_VALID=1
148                 fi
149         else
150                 if [ -e "${KERNCACHE}" ] 
151                 then
152                         KERNEL_CONFIG="/${KERNEL_DIR}/.config"
153                         if [ "${CMD_KERNEL_CONFIG}" != '' ]
154                         then
155                                 KERNEL_CONFIG="${CMD_KERNEL_CONFIG}"
156                         fi
157
158                         /bin/tar -xj -f ${KERNCACHE} -C ${TEMP}
159                         if [ -e ${TEMP}/config-${ARCH}-${KV} -a -e ${KERNEL_CONFIG} ]
160                         then
161
162                                 if [ -e ${TEMP}/config-${ARCH}-${KV}.orig ]
163                                 then
164                                         test1=$(grep -v "^#" ${TEMP}/config-${ARCH}-${KV}.orig | md5sum | cut -d " " -f 1)
165                                 else
166                                         test1=$(grep -v "^#" ${TEMP}/config-${ARCH}-${KV} | md5sum | cut -d " " -f 1)
167                                 fi
168                                 test2=$(grep -v "^#" ${KERNEL_CONFIG} | md5sum | cut -d " " -f 1)
169                                 if [ "${test1}" == "${test2}" ]
170                                 then
171         
172                                         echo
173                                         print_info 1 "No kernel configuration change, skipping kernel build..."
174                                         echo
175                                         KERNCACHE_IS_VALID=1
176                                 fi
177                         fi
178                 fi
179         fi
180         export KERNCACHE_IS_VALID       
181         return 1
182 }