diff -ru genkernel.orig/gen_compile.sh genkernel/gen_compile.sh --- genkernel.orig/gen_compile.sh 2007-05-29 09:44:53.000000000 -0500 +++ genkernel/gen_compile.sh 2007-05-29 17:25:32.000000000 -0500 @@ -427,33 +427,38 @@ } compile_busybox() { - - # Delete cache if config is newer - if [ \ - -f "${BUSYBOX_BINCACHE}" -a \ - -f "${BUSYBOX_CONFIG}" -a \ - "${BUSYBOX_BINCACHE}" -ot "${BUSYBOX_CONFIG}" ] - then - rm -rf "${BUSYBOX_BINCACHE}" + [ -f "${BUSYBOX_SRCTAR}" ] || + gen_die "Could not find busybox source tarball: ${BUSYBOX_SRCTAR}!" + [ -f "${BUSYBOX_CONFIG}" ] || + gen_die "Cound not find busybox config file: ${BUSYBOX_CONFIG}!" + cd "${TEMP}" + rm -rf "${BUSYBOX_DIR}" > /dev/null + /bin/tar -jxpf ${BUSYBOX_SRCTAR} || + gen_die 'Could not extract busybox source tarball!' + [ -d "${BUSYBOX_DIR}" ] || + gen_die 'Busybox directory ${BUSYBOX_DIR} is invalid!' + cp "${BUSYBOX_CONFIG}" "${BUSYBOX_DIR}/.config" + sed -i ${BUSYBOX_DIR}/.config -e 's/#\? \?CONFIG_FEATURE_INSTALLER[ =].*/CONFIG_FEATURE_INSTALLER=y/g' + cd "${BUSYBOX_DIR}" + print_info 1 'busybox: >> Configuring...' + yes '' 2>/dev/null | compile_generic oldconfig utils + + # Delete cache if stored config's MD5 does not match one to be used + if [ -f "${BUSYBOX_BINCACHE}" -a -f "${BUSYBOX_CONFIG}" ] + then + oldconfig_md5=$(tar -xjf "${BUSYBOX_BINCACHE}" -O .config | md5sum) + newconfig_md5=$(md5sum < .config) + if [ "${oldconfig_md5}" != "${newconfig_md5}" ] + then + print_info 1 "busybox: >> Removing stale cache..." + rm -rf "${BUSYBOX_BINCACHE}" + else + print_info 1 "busybox: >> Using cache" + fi fi if [ ! -f "${BUSYBOX_BINCACHE}" ] then - [ -f "${BUSYBOX_SRCTAR}" ] || - gen_die "Could not find busybox source tarball: ${BUSYBOX_SRCTAR}!" - [ -f "${BUSYBOX_CONFIG}" ] || - gen_die "Cound not find busybox config file: ${BUSYBOX_CONFIG}!" - cd "${TEMP}" - rm -rf "${BUSYBOX_DIR}" > /dev/null - /bin/tar -jxpf ${BUSYBOX_SRCTAR} || - gen_die 'Could not extract busybox source tarball!' - [ -d "${BUSYBOX_DIR}" ] || - gen_die 'Busybox directory ${BUSYBOX_DIR} is invalid!' - cp "${BUSYBOX_CONFIG}" "${BUSYBOX_DIR}/.config" - sed -i ${BUSYBOX_DIR}/.config -e 's/#\? \?CONFIG_FEATURE_INSTALLER[ =].*/CONFIG_FEATURE_INSTALLER=y/g' - cd "${BUSYBOX_DIR}" - print_info 1 'busybox: >> Configuring...' - yes '' 2>/dev/null | compile_generic oldconfig utils print_info 1 'busybox: >> Compiling...' compile_generic all utils print_info 1 'busybox: >> Copying to cache...' @@ -461,14 +466,12 @@ gen_die 'Busybox executable does not exist!' strip "${TEMP}/${BUSYBOX_DIR}/busybox" || gen_die 'Could not strip busybox binary!' - bzip2 "${TEMP}/${BUSYBOX_DIR}/busybox" || - gen_die 'bzip2 compression of busybox failed!' - mv "${TEMP}/${BUSYBOX_DIR}/busybox.bz2" "${BUSYBOX_BINCACHE}" || - gen_die 'Could not copy the busybox binary to the package directory, does the directory exist?' - - cd "${TEMP}" - rm -rf "${BUSYBOX_DIR}" > /dev/null + tar -cj -C "${TEMP}/${BUSYBOX_DIR}" -f "${BUSYBOX_BINCACHE}" busybox .config || + gen_die 'Could not create the busybox bincache!' fi + + cd "${TEMP}" + rm -rf "${BUSYBOX_DIR}" > /dev/null } compile_lvm2() { diff -ru genkernel.orig/gen_initramfs.sh genkernel/gen_initramfs.sh --- genkernel.orig/gen_initramfs.sh 2007-04-21 03:30:41.000000000 -0500 +++ genkernel/gen_initramfs.sh 2007-05-29 17:01:44.000000000 -0500 @@ -50,10 +50,10 @@ cp "${GK_SHARE}/generic/udhcpc.scripts" ${TEMP}/initramfs-busybox-temp/bin/ chmod +x "${TEMP}/initramfs-busybox-temp/bin/udhcpc.scripts" - cp "${BUSYBOX_BINCACHE}" "${TEMP}/initramfs-busybox-temp/bin/busybox.bz2" || + cp "${BUSYBOX_BINCACHE}" "${TEMP}/initramfs-busybox-temp/bin/busybox.tar.bz2" || gen_die 'Could not copy busybox from bincache!' - bunzip2 "${TEMP}/initramfs-busybox-temp/bin/busybox.bz2" || - gen_die 'Could not uncompress busybox!' + tar -xjf "${TEMP}/initramfs-busybox-temp/bin/busybox.tar.bz2" -C "${TEMP}/initramfs-busybox-temp/bin" busybox || + gen_die 'Could not extract busybox bincache!' chmod +x "${TEMP}/initramfs-busybox-temp/bin/busybox" # down devfsd we use with dietlibc diff -ru genkernel.orig/gen_initrd.sh genkernel/gen_initrd.sh --- genkernel.orig/gen_initrd.sh 2007-04-21 03:30:41.000000000 -0500 +++ genkernel/gen_initrd.sh 2007-05-29 17:01:44.000000000 -0500 @@ -80,10 +80,10 @@ chmod +x "${TEMP}/initrd-temp/bin/blkid" fi - cp "${BUSYBOX_BINCACHE}" "${TEMP}/initrd-temp/bin/busybox.bz2" || + cp "${BUSYBOX_BINCACHE}" "${TEMP}/initrd-temp/bin/busybox.tar.bz2" || gen_die 'Could not copy busybox from bincache!' - bunzip2 "${TEMP}/initrd-temp/bin/busybox.bz2" || - gen_die 'Could not uncompress busybox!' + tar -xjf "${TEMP}/initrd-temp/bin/busybox.tar.bz2" -C "${TEMP}/initrd-temp/bin" busybox || + gen_die 'Could not extract busybox bincache!' chmod +x "${TEMP}/initrd-temp/bin/busybox" if [ "${NOINITRDMODULES}" = '' ] diff -ru genkernel.orig/genkernel.conf genkernel/genkernel.conf --- genkernel.orig/genkernel.conf 2007-05-29 17:06:41.000000000 -0500 +++ genkernel/genkernel.conf 2007-05-29 17:01:44.000000000 -0500 @@ -77,7 +77,7 @@ BUSYBOX_VER="1.1.3+gentoo" # Busybox bin-cache location, to store pre-compiled busybox # binary is just a bzip2 busybox executable -BUSYBOX_BINCACHE="%%CACHE%%/busybox-${BUSYBOX_VER}-%%ARCH%%.bz2" +BUSYBOX_BINCACHE="%%CACHE%%/busybox-${BUSYBOX_VER}-%%ARCH%%.tar.bz2" # Location of BusyBox source tarball BUSYBOX_SRCTAR="${GK_SHARE}/pkg/busybox-${BUSYBOX_VER}.tar.bz2" # Directory created after busybox tarball is extracted