X-Git-Url: http://git.tremily.us/?p=genkernel.git;a=blobdiff_plain;f=gen_package.sh;h=ed7a5f4d9a43baf9e0e206e0556da16377a34d62;hp=c8c807d9d6869801040f224b54503b23cf5740c1;hb=HEAD;hpb=89c7fbdde588c97a343a04e48f4e06d15dde08d9 diff --git a/gen_package.sh b/gen_package.sh old mode 100644 new mode 100755 index c8c807d..ed7a5f4 --- a/gen_package.sh +++ b/gen_package.sh @@ -1,45 +1,52 @@ #!/bin/bash +# $Id$ -gen_minkernpackage() -{ +gen_minkernpackage() { print_info 1 'Creating minimal kernel package' rm -rf "${TEMP}/minkernpackage" > /dev/null 2>&1 mkdir "${TEMP}/minkernpackage" || gen_die 'Could not make a directory for the kernel package!' - if [ "${CMD_KERNCACHE}" != "" ] + if [ "${KERNCACHE}" != "" ] then - /bin/tar -xj -C ${TEMP}/minkernpackage -f ${CMD_KERNCACHE} kernel-${ARCH}-${KV} - /bin/tar -xj -C ${TEMP}/minkernpackage -f ${CMD_KERNCACHE} config-${ARCH}-${KV} - if [ "${KERNEL_BINARY_2}" != '' -a "${GENERATE_Z_IMAGE}" = '1' ] - then - /bin/tar -xj -C ${TEMP}/minkernpackage -f ${CMD_KERNCACHE} kernelz-${ARCH}-${KV} - fi + /bin/tar -xj -C ${TEMP}/minkernpackage -f ${KERNCACHE} kernel-${ARCH}-${KV} + /bin/tar -xj -C ${TEMP}/minkernpackage -f ${KERNCACHE} config-${ARCH}-${KV} + if isTrue "${GENZIMAGE}" + then + /bin/tar -xj -C ${TEMP}/minkernpackage -f ${KERNCACHE} kernelz-${ARCH}-${KV} + fi else - cd "${KERNEL_DIR}" - cp "${KERNEL_BINARY}" "${TEMP}/minkernpackage/kernel-${KV}" || gen_die 'Could not the copy kernel for the min kernel package!' - cp ".config" "${TEMP}/minkernpackage/config-${ARCH}-${KV}" || gen_die 'Could not the copy kernel config for the min kernel package!' - if [ "${KERNEL_BINARY_2}" != '' -a "${GENERATE_Z_IMAGE}" = '1' ] - then - cp "${KERNEL_BINARY_2}" "${TEMP}/minkernpackage/kernelz-${KV}" || gen_die "Could not copy the kernelz for the min kernel package" - fi + local tmp_kernel_binary=$(find_kernel_binary ${KERNEL_BINARY}) + local tmp_kernel_binary2=$(find_kernel_binary ${KERNEL_BINARY_2}) + if [ -z "${tmp_kernel_binary}" ] + then + gen_die "Cannot locate kernel binary" + fi + cd "${KERNEL_OUTPUTDIR}" + cp "${tmp_kernel_binary}" "${TEMP}/minkernpackage/kernel-${KV}" || gen_die 'Could not the copy kernel for the min kernel package!' + cp ".config" "${TEMP}/minkernpackage/config-${ARCH}-${KV}" || gen_die 'Could not the copy kernel config for the min kernel package!' + if isTrue "${GENZIMAGE}" + then + cp "${tmp_kernel_binary2}" "${TEMP}/minkernpackage/kernelz-${KV}" || gen_die "Could not copy the kernelz for the min kernel package" + fi + fi + if ! isTrue "${INTEGRATED_INITRAMFS}" + then + [ "${BUILD_RAMDISK}" != '0' ] && { cp "${TMPDIR}/initramfs-${KV}" "${TEMP}/minkernpackage/initramfs-${ARCH}-${KV}" || gen_die 'Could not copy the initramfs for the kernel package!'; } fi - - if [ "${GENERATE_Z_IMAGE}" != '1' ] + + if [ "${KERNCACHE}" != "" ] then - if [ "${KERN_24}" != '1' -a "${CMD_BOOTSPLASH}" != '1' ] - then - [ "${BUILD_INITRD}" -ne 0 ] && { cp "${TMPDIR}/initramfs-${KV}" "${TEMP}/minkernpackage/initramfs-${ARCH}-${KV}" || gen_die 'Could not copy the initramfs for the kernel package!'; } - else - [ "${BUILD_INITRD}" -ne 0 ] && { cp "${TMPDIR}/initrd-${KV}" "${TEMP}/minkernpackage/initrd-${ARCH}-${KV}" || gen_die 'Could not copy the initrd for the kernel package!'; } - fi + /bin/tar -xj -C ${TEMP}/minkernpackage -f ${KERNCACHE} System.map-${ARCH}-${KV} + else + cp "${KERNEL_OUTPUTDIR}/System.map" "${TEMP}/minkernpackage/System.map-${ARCH}-${KV}" || gen_die 'Could not copy System.map for the kernel package!'; fi - - cd "${TEMP}/minkernpackage" + + cd "${TEMP}/minkernpackage" /bin/tar -jcpf ${MINKERNPACKAGE} * || gen_die 'Could not compress the kernel package!' cd "${TEMP}" && rm -rf "${TEMP}/minkernpackage" > /dev/null 2>&1 } -gen_modulespackage() -{ + +gen_modulespackage() { print_info 1 'Creating modules package' rm -rf "${TEMP}/modulespackage" > /dev/null 2>&1 mkdir "${TEMP}/modulespackage" || gen_die 'Could not make a directory for the kernel package!' @@ -60,46 +67,61 @@ gen_kerncache() print_info 1 'Creating kernel cache' rm -rf "${TEMP}/kerncache" > /dev/null 2>&1 mkdir "${TEMP}/kerncache" || gen_die 'Could not make a directory for the kernel cache!' - cd "${KERNEL_DIR}" - cp "${KERNEL_BINARY}" "${TEMP}/kerncache/kernel-${ARCH}-${KV}" || gen_die 'Could not the copy kernel for the kernel package!' - cp "${KERNEL_DIR}/.config" "${TEMP}/kerncache/config-${ARCH}-${KV}" - cp "${KERNEL_DIR}/System.map" "${TEMP}/kerncache/System.map-${ARCH}-${KV}" - if [ "${KERNEL_BINARY_2}" != '' -a "${GENERATE_Z_IMAGE}" = '1' ] - then - cp "${KERNEL_BINARY_2}" "${TEMP}/kerncache/kernelz-${ARCH}-${KV}" || gen_die "Could not copy the kernelz for the kernel package" - fi - + + local tmp_kernel_binary=$(find_kernel_binary ${KERNEL_BINARY}) + local tmp_kernel_binary2=$(find_kernel_binary ${KERNEL_BINARY_2}) + if [ -z "${tmp_kernel_binary}" ] + then + gen_die "Cannot locate kernel binary" + fi + + cd "${KERNEL_OUTPUTDIR}" + cp "${tmp_kernel_binary}" "${TEMP}/kerncache/kernel-${ARCH}-${KV}" || gen_die 'Could not the copy kernel for the kernel package!' + cp "${KERNEL_OUTPUTDIR}/.config" "${TEMP}/kerncache/config-${ARCH}-${KV}" + + if [[ "$(file --brief --mime-type "${KERNEL_CONFIG}")" == application/x-gzip ]]; then + # Support --kernel-config=/proc/config.gz, mainly + zcat "${KERNEL_CONFIG}" > "${TEMP}/kerncache/config-${ARCH}-${KV}.orig" + else + cp "${KERNEL_CONFIG}" "${TEMP}/kerncache/config-${ARCH}-${KV}.orig" + fi + cp "${KERNEL_OUTPUTDIR}/System.map" "${TEMP}/kerncache/System.map-${ARCH}-${KV}" + if isTrue "${GENZIMAGE}" + then + cp "${tmp_kernel_binary2}" "${TEMP}/kerncache/kernelz-${ARCH}-${KV}" || gen_die "Could not copy the kernelz for the kernel package" + fi + echo "VERSION = ${VER}" > "${TEMP}/kerncache/kerncache.config" echo "PATCHLEVEL = ${PAT}" >> "${TEMP}/kerncache/kerncache.config" echo "SUBLEVEL = ${SUB}" >> "${TEMP}/kerncache/kerncache.config" echo "EXTRAVERSION = ${EXV}" >> "${TEMP}/kerncache/kerncache.config" - + mkdir -p "${TEMP}/kerncache/lib/modules/" - + if [ -d ${INSTALL_MOD_PATH}/lib/modules/${KV} ] then cp -r "${INSTALL_MOD_PATH}/lib/modules/${KV}" "${TEMP}/kerncache/lib/modules" fi - - cd "${TEMP}/kerncache" + + cd "${TEMP}/kerncache" /bin/tar -jcpf ${KERNCACHE} * || gen_die 'Could not compress the kernel package!' cd "${TEMP}" && rm -rf "${TEMP}/kerncache" > /dev/null 2>&1 } gen_kerncache_extract_kernel() { - /bin/tar -f ${KERNCACHE} -C ${TEMP} -xj + /bin/tar -f ${KERNCACHE} -C ${TEMP} -xj copy_image_with_preserve "kernel" \ "${TEMP}/kernel-${ARCH}-${KV}" \ "kernel-${KNAME}-${ARCH}-${KV}" - if [ "${KERNEL_BINARY_2}" != '' -a "${GENERATE_Z_IMAGE}" = '1' ] - then + if isTrue "${GENZIMAGE}" + then copy_image_with_preserve "kernelz" \ "${TEMP}/kernelz-${ARCH}-${KV}" \ "kernelz-${KNAME}-${ARCH}-${KV}" - fi - + fi + copy_image_with_preserve "System.map" \ "${TEMP}/System.map-${ARCH}-${KV}" \ "System.map-${KNAME}-${ARCH}-${KV}" @@ -107,7 +129,7 @@ gen_kerncache_extract_kernel() gen_kerncache_extract_modules() { - if [ -e "${KERNCACHE}" ] + if [ -e "${KERNCACHE}" ] then print_info 1 'Extracting kerncache kernel modules' if [ "${INSTALL_MOD_PATH}" != '' ] @@ -121,7 +143,7 @@ gen_kerncache_extract_modules() gen_kerncache_extract_config() { - if [ -e "${KERNCACHE}" ] + if [ -e "${KERNCACHE}" ] then print_info 1 'Extracting kerncache config to /etc/kernels' mkdir -p /etc/kernels @@ -133,30 +155,49 @@ gen_kerncache_extract_config() gen_kerncache_is_valid() { KERNCACHE_IS_VALID=0 - if [ "${CMD_NO_KERNEL_SOURCES}" = '1' ] + if [ "${NO_KERNEL_SOURCES}" = '1' ] then - + BUILD_KERNEL=0 # Can make this more secure .... - + /bin/tar -xj -f ${KERNCACHE} -C ${TEMP} - if [ -e ${TEMP}/config-${ARCH}-${KV} -a -e ${TEMP}/kernel-${ARCH}-${KV} ] - then + if [ -e ${TEMP}/config-${ARCH}-${KV} -a -e ${TEMP}/kernel-${ARCH}-${KV} ] + then print_info 1 'Valid kernel cache found; no sources will be used' KERNCACHE_IS_VALID=1 fi - else - if [ -e "${KERNCACHE}" ] + else + if [ -e "${KERNCACHE}" ] then + KERNEL_CONFIG="/${KERNEL_OUTPUTDIR}/.config" + if [ "${CMD_KERNEL_CONFIG}" != '' ] + then + KERNEL_CONFIG="${CMD_KERNEL_CONFIG}" + fi + /bin/tar -xj -f ${KERNCACHE} -C ${TEMP} - if [ -e ${TEMP}/config-${ARCH}-${KV} -a -e /${KERNEL_DIR}/.config ] + if [ -e ${TEMP}/config-${ARCH}-${KV} -a -e ${KERNEL_CONFIG} ] then - - test1=$(md5sum ${TEMP}/config-${ARCH}-${KV} | cut -d " " -f 1) - test2=$(md5sum /${KERNEL_DIR}/.config | cut -d " " -f 1) + + if [ -e ${TEMP}/config-${ARCH}-${KV}.orig ] + then + test1=$(grep -v "^#" ${TEMP}/config-${ARCH}-${KV}.orig | md5sum | cut -d " " -f 1) + else + test1=$(grep -v "^#" ${TEMP}/config-${ARCH}-${KV} | md5sum | cut -d " " -f 1) + fi + + if [[ "$(file --brief --mime-type "${KERNEL_CONFIG}")" == application/x-gzip ]]; then + # Support --kernel-config=/proc/config.gz, mainly + local CONFGREP=zgrep + else + local CONFGREP=grep + fi + test2=$("${CONFGREP}" -v "^#" ${KERNEL_CONFIG} | md5sum | cut -d " " -f 1) + + if [ "${test1}" == "${test2}" ] then - echo print_info 1 "No kernel configuration change, skipping kernel build..." echo @@ -165,6 +206,6 @@ gen_kerncache_is_valid() fi fi fi - export KERNCACHE_IS_VALID + export KERNCACHE_IS_VALID return 1 }