# /etc/portage/env/sys-kernel/gentoo-sources pre_src_install() { ebegin "Building squashfs image from kernel sources" mksquashfs "${WORKDIR}/linux-${KV_FULL}" "${WORKDIR}/linux-${KV_FULL}.sqfs" retval=$? eend $retval [[ "$retval" -ne "0" ]] && return ebegin "Removing sources" find "${WORKDIR}/linux-${KV_FULL}" -mindepth 1 -delete eend $? # add dummy file so kernel dir gets installed touch "${WORKDIR}/linux-${KV_FULL}/.keep" } post_src_install() { ebegin "Creating build directory" keepdir "${EROOT}/usr/src/build-${KV_FULL}" ebegin "Creating mount skript" dodir "${EROOT}/etc/local.d" MOUNT_SKRIPT="${ED}/etc/local.d/mount-${KV_FULL}.start" echo "#!/bin/bash # mounting squashfs image of kernel sources if [[ -f \"${EROOT}/usr/src/linux-${KV_FULL}.sqfs\" ]] && [[ -d \"${EROOT}/usr/src/linux-${KV_FULL}\" ]]; then grep \"${EROOT}/usr/src/linux-${KV_FULL}\" \"/proc/self/mountinfo\" >/dev/null if [[ \"\$?\" -eq \"1\" ]]; then echo \"Mounting ${EROOT}/usr/src/linux-${KV_FULL}\" mount -t squashfs,ro \"${EROOT}/usr/src/linux-${KV_FULL}.sqfs\" \"${EROOT}/usr/src/linux-${KV_FULL}\" retval=\$? exit \$retval fi fi exit 1" > $MOUNT_SKRIPT chmod 755 $MOUNT_SKRIPT } pre_pkg_preinst() { grep "${EROOT}/usr/src/linux-${KV_FULL}" "/proc/self/mountinfo" >/dev/null if [[ "$?" -eq "0" ]]; then ebegin "Unmounting ${EROOT}/usr/src/linux-${KV_FULL}" umount "${EROOT}/usr/src/linux-${KV_FULL}" eend $? fi } post_pkg_postinst() { ebegin "Mounting ${EROOT}/usr/src/linux-${KV_FULL}" ${EROOT}/etc/local.d/mount-${KV_FULL}.start >/dev/null retval=$? eend $retval [[ "$retval" -ne "0" ]] && return ebegin "Populating build directory with default config" OLDPWD=$(pwd) cd "${EROOT}/usr/src/linux-${KV_FULL}" OLDARCH=$ARCH unset ARCH make O="${EROOT}/usr/src/build-${KV_FULL}" defconfig >/dev/null eend $? if [[ -f "${EROOT}/proc/config.gz" ]]; then ebegin "Found running kernel config" ebegin "Copying running kernel config" zcat "${EROOT}/proc/config.gz" > "${EROOT}/usr/src/build-${KV_FULL}/.config" eend $? ebegin "Incorporate current kernel config" make O="${EROOT}/usr/src/build-${KV_FULL}" oldconfig >/dev/null eend $? elif [[ -f "${EROOT}/boot/config-$(uname -r)" ]]; then ebegin "Found running kernel config in /boot" ebegin "Copying running kernel config" cat "${EROOT}/boot/config-$(uname -r)" > "${EROOT}/usr/src/build-${KV_FULL}/.config" eend $? ebegin "Incorporate current kernel config" make O="${EROOT}/usr/src/build-${KV_FULL}" oldconfig >/dev/null eend $? fi ARCH=$OLDARCH cd "${OLDPWD}" use symlink && SYMLINK=1 if [[ "$SYMLINK" == "1" ]]; then [[ -h ${EROOT}/usr/src/linux ]] && rm ${EROOT}/usr/src/linux ebegin "Symlinking build directory to linux" ln -sf ${EROOT}/usr/src/build-${KV_FULL} ${EROOT}/usr/src/linux eend $? fi } pre_pkg_prerm() { grep "${EROOT}/usr/src/linux-${KV_FULL}" "/proc/self/mountinfo" >/dev/null if [[ "$?" -eq "0" ]]; then ebegin "Unmounting ${EROOT}/usr/src/linux-${KV_FULL}" umount "${EROOT}/usr/src/linux-${KV_FULL}" eend $? fi } post_pkg_postrm() { if [[ -d "${EROOT}/usr/src/build-${KV_FULL}" ]]; then ebegin "Removing build directory" rm -rf "${EROOT}/usr/src/build-${KV_FULL}" eend $? fi }