# /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
}