--- branches/magellan-next/include/kernel.sminc 2011/12/01 16:32:00 9465 +++ branches/magellan-next/include/kernel.sminc 2012/01/10 14:13:20 9745 @@ -11,6 +11,7 @@ # ${EXTRAVERSION}: optinal, extra version for the kernel name # default setting is ${PSUBVER}-${BRANCH}-${PBUILD} # ${KERNEL_IMAGE_PATH}: override the default KERNEL_IMAGE_PATH (to build xen images for e.g.) +# ${COMPRESS_MODULES}: compresses the kernel modules with given compressor (gzip|bzip2|xz) sminclude mtools @@ -31,38 +32,56 @@ >= sys-kernel/linux-firmware-${LINUX_FIRMWARE}" fi +if [[ ! -z ${COMPRESS_MODULES} ]] +then + case ${COMPRESS_MODULES} in + gzip) + COMPRESS_MODULES_CMD="gzip -9v" + SDEPEND="${SDEPEND} + >= app-arch/gzip-1.4" + ;; + bzip2) + COMPRESS_MODULES_CMD="bzip2 -9v" + SDEPEND="${SDEPEND} + >= app-arch/bzip2-1.0.6" + ;; + xz) + COMPRESS_MODULES_CMD="xz -9v" + SDEPEND="${SDEPEND} + >= app-arch/xz-5" + ;; + none) + echo "Disabled compressed kernel-modules!" + COMPRESS_MODULES_CMD="" + ;; + *) die "Unkown compression format '${COMPRESS_MODULES}'" ;; + esac +fi + # some sane defaults : ${PCATEGORIE="sys-kernel"} : ${HOMEPAGE="http://magellan-linux.de/"} -: ${SRCFILE="linux-${PVER/${PSUBVER}/}.tar.bz2"} -: ${SRCDIR="${BUILDDIR}/linux-${PVER}-${BRANCH}-${PBUILD}"} : ${TARBALLPVER="${PVER}"} +: ${SRCFILE="linux-${TARBALLPVER}.tar.bz2"} +: ${SRCDIR="${BUILDDIR}/linux-${PVER}-${BRANCH}-${PBUILD}"} -case ${KERNEL_TYPE} in - image|sources) - if [[ -z ${SRC_URI[*]} ]] - then - SRC_URI=( - http://www.kernel.org/pub/linux/kernel/v$(echo ${PVER} | cut -d. -f1).x/${SRCFILE} - http://ftp.uni-erlangen.de/pub/Linux/MIRROR.kernel/v$(echo ${PVER} | cut -d. -f1).x/${SRCFILE} - mirror://kernel-${BRANCH}/${SRCFILE} - mirror://kernel-${BRANCH}/config-${PVER}-${BRANCH}-${PBUILD}-i686 - mirror://kernel-${BRANCH}/config-${PVER}-${BRANCH}-${PBUILD}-x86_64 - ) - fi - ;; - - headers) - if [[ -z ${SRC_URI[*]} ]] - then - SRC_URI=( - http://www.kernel.org/pub/linux/kernel/v$(echo ${PVER} | cut -d. -f1-2)/${SRCFILE} - http://ftp.uni-erlangen.de/pub/Linux/MIRROR.kernel/v$(echo ${PVER} | cut -d. -f1-2)/${SRCFILE} - mirror://kernel-${BRANCH}/${SRCFILE} - ) - fi - ;; -esac +if [[ -z ${SRC_URI[*]} ]] +then + SRC_URI=( + http://www.kernel.org/pub/linux/kernel/v$(echo ${PVER} | cut -d. -f1).x/${SRCFILE} + http://ftp.uni-erlangen.de/pub/Linux/MIRROR.kernel/v$(echo ${PVER} | cut -d. -f1).x/${SRCFILE} + mirror://kernel-${BRANCH}/${SRCFILE} + ) + case ${KERNEL_TYPE} in + image|sources) + SRC_URI=( + ${SRC_URI[*]} + mirror://kernel-${BRANCH}/config-${PVER}-${BRANCH}-${PBUILD}-i686 + mirror://kernel-${BRANCH}/config-${PVER}-${BRANCH}-${PBUILD}-x86_64 + ) + ;; + esac +fi case ${KERNEL_TYPE} in image) @@ -71,12 +90,12 @@ >= sys-fs/udev-115 >= sys-apps/mkinitrd-5.0.8 >= virtual/initscripts"} - : ${DESCRIPTION="Kernel image of the '${PVER}-${BRANCH}-${PBUILD}${KERNEL_ARCH_EXTENSION}' kernel."} + : ${DESCRIPTION="Kernel image of the '${PVER}-${BRANCH}-${PBUILD}${KERNEL_ARCH_EXTENSION}' kernel branch."} ;; sources) : ${PROVIDE="virtual/kernel-sources"} - : ${DESCRIPTION="Kernel sources of the '${PVER}-${BRANCH}-${PBUILD}${KERNEL_ARCH_EXTENSION}' kernel."} + : ${DESCRIPTION="Kernel sources of the '${PVER}-${BRANCH}-${PBUILD}${KERNEL_ARCH_EXTENSION}' kernel branch."} ;; headers) @@ -97,7 +116,7 @@ kernel_src_prepare() { munpack ${SRCFILE} || die - mv ${BUILDDIR}/linux-${TARBALLPVER/${PSUBVER}/} ${SRCDIR} || die + mv ${BUILDDIR}/linux-${TARBALLPVER} ${SRCDIR} || die # fix permissions chown -R 0:0 ${SRCDIR} || die @@ -235,6 +254,22 @@ /lib/modules/${PVER}-${BRANCH}-${PBUILD}${KERNEL_ARCH_EXTENSION}/source \ || die fi + + # remove firmware bits if $LINUX_FIRMWARE was set + if [[ ! -z ${LINUX_FIRMWARE} ]] && [[ ${LINUX_FIRMWARE} != internal ]] + then + if [[ -d ${BINDIR}/lib/firmware ]] + then + rm -rv ${BINDIR}/lib/firmware + fi + fi + + # compress modules if COMPRESS_MODULES_CMD was set + if [[ ! -z ${COMPRESS_MODULES_CMD} ]] + then + # compress all kernel modules + find ${BINDIR} -name \*.ko | xargs ${COMPRESS_MODULES_CMD} || die + fi } kernel_headers_src_install() @@ -390,15 +425,6 @@ ln -snf config-${KPVER}-${KBRANCH}-${KPBUILD} ${MROOT}/boot/config [[ -f ${MROOT}/boot/initrd-${KPVER}-${KBRANCH}-${KPBUILD}.img ]] && ln -snf initrd-${KPVER}-${KBRANCH}-${KPBUILD}.img ${MROOT}/boot/initrd - - # remove firmware bits if $LINUX_FIRMWARE was set - if [[ ! -z ${LINUX_FIRMWARE} ]] && [[ ${LINUX_FIRMWARE} != internal ]] - then - if [[ -d ${BINDIR}/lib/firmware ]] - then - rm -rv ${BINDIR}/lib/firmware - fi - fi } kernel_sources_postinstall()