Added a patch by John R. Graham <john_r_graham@mindspring.com> from bug #169383 to...
[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         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 gen_modulespackage()
42 {
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_DIR}/System.map" "${TEMP}/kerncache/System.map-${ARCH}-${KV}"
67         if [ "${KERNEL_BINARY_2}" != '' -a "${GENERATE_Z_IMAGE}" = '1' ]
68         then
69                 cp "${KERNEL_BINARY_2}" "${TEMP}/kerncache/kernelz-${ARCH}-${KV}" || gen_die "Could not copy the kernelz for the kernel package"
70         fi
71         
72         echo "VERSION = ${VER}" > "${TEMP}/kerncache/kerncache.config"
73         echo "PATCHLEVEL = ${PAT}" >> "${TEMP}/kerncache/kerncache.config"
74         echo "SUBLEVEL = ${SUB}" >> "${TEMP}/kerncache/kerncache.config"
75         echo "EXTRAVERSION = ${EXV}" >> "${TEMP}/kerncache/kerncache.config"
76         
77         mkdir -p "${TEMP}/kerncache/lib/modules/"
78         
79         if [ -d ${INSTALL_MOD_PATH}/lib/modules/${KV} ]
80         then
81             cp -r "${INSTALL_MOD_PATH}/lib/modules/${KV}" "${TEMP}/kerncache/lib/modules"
82         fi
83         
84         cd "${TEMP}/kerncache" 
85         /bin/tar -jcpf ${KERNCACHE} * || gen_die 'Could not compress the kernel package!'
86         cd "${TEMP}" && rm -rf "${TEMP}/kerncache" > /dev/null 2>&1
87 }
88
89 gen_kerncache_extract_kernel()
90 {
91     /bin/tar -f ${KERNCACHE} -C ${TEMP} -xj 
92         copy_image_with_preserve "kernel" \
93                 "${TEMP}/kernel-${ARCH}-${KV}" \
94                 "kernel-${KNAME}-${ARCH}-${KV}"
95
96         if [ "${KERNEL_BINARY_2}" != '' -a "${GENERATE_Z_IMAGE}" = '1' ]
97     then
98                 copy_image_with_preserve "kernelz" \
99                         "${TEMP}/kernelz-${ARCH}-${KV}" \
100                         "kernelz-${KNAME}-${ARCH}-${KV}"
101     fi
102     
103         copy_image_with_preserve "System.map" \
104                 "${TEMP}/System.map-${ARCH}-${KV}" \
105                 "System.map-${KNAME}-${ARCH}-${KV}"
106 }
107
108 gen_kerncache_extract_modules()
109 {
110         if [ -e "${KERNCACHE}" ] 
111         then
112                 print_info 1 'Extracting kerncache kernel modules'
113                 if [ "${INSTALL_MOD_PATH}" != '' ]
114                 then
115                         /bin/tar -xjf ${KERNCACHE} -C ${INSTALL_MOD_PATH} lib
116                 else
117                         /bin/tar -xjf ${KERNCACHE} -C / lib
118                 fi
119         fi
120 }
121
122 gen_kerncache_extract_config()
123 {
124         if [ -e "${KERNCACHE}" ] 
125         then
126                 print_info 1 'Extracting kerncache config to /etc/kernels'
127                 mkdir -p /etc/kernels
128                 /bin/tar -xjf ${KERNCACHE} -C /etc/kernels config-${ARCH}-${KV}
129                 mv /etc/kernels/config-${ARCH}-${KV} /etc/kernels/kernel-config-${ARCH}-${KV}
130         fi
131 }
132
133 gen_kerncache_is_valid()
134 {
135         KERNCACHE_IS_VALID=0
136         if [ "${CMD_NO_KERNEL_SOURCES}" = '1' ]
137         then
138                 
139                 BUILD_KERNEL=0
140                 # Can make this more secure ....
141                 
142                 /bin/tar -xj -f ${KERNCACHE} -C ${TEMP}
143                 if [ -e ${TEMP}/config-${ARCH}-${KV} -a -e ${TEMP}/kernel-${ARCH}-${KV} ] 
144                 then    
145                         print_info 1 'Valid kernel cache found; no sources will be used'
146                         KERNCACHE_IS_VALID=1
147                 fi
148         else
149                 if [ -e "${KERNCACHE}" ] 
150                 then
151                         /bin/tar -xj -f ${KERNCACHE} -C ${TEMP}
152                         if [ -e ${TEMP}/config-${ARCH}-${KV} -a -e /${KERNEL_DIR}/.config ]
153                         then
154         
155                                 test1=$(md5sum ${TEMP}/config-${ARCH}-${KV} | cut -d " " -f 1)
156                                 test2=$(md5sum /${KERNEL_DIR}/.config | cut -d " " -f 1)
157                                 if [ "${test1}" == "${test2}" ]
158                                 then
159         
160                                         echo
161                                         print_info 1 "No kernel configuration change, skipping kernel build..."
162                                         echo
163                                         KERNCACHE_IS_VALID=1
164                                 fi
165                         fi
166                 fi
167         fi
168         export KERNCACHE_IS_VALID       
169         return 1
170 }