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