# Copyright 1999-2017 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 EAPI=6 VER="${PV%-r*}" REV="r${PV##*-r}" DESCRIPTION="Linux kernel" HOMEPAGE="http://kernel.org/" SRC_URI="https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/snapshot/linux-${VER}.tar.gz -> ${P}.tar.gz" S="${WORKDIR}/linux-${VER}" LICENSE="GPLv2" SLOT="${PV}" KEYWORDS="amd64 ~x86" IUSE="amd intel initramfs ucode" RDEPEND="initramfs? ( sys-boot/myinitramfs )" DEPEND=" sys-devel/bc dev-libs/elfutils dev-util/pahole app-arch/cpio " src_configure() { # Fix ARCH variable [ "$ARCH" = "amd64" ] && ARCH="x86" "${FILESDIR}"/config_prepare.sh $(usev amd) $(usev intel) \ || die "Configuration application failed" } src_install() { emake modules_install INSTALL_MOD_PATH="${D}" for dir in "build" "source"; do rm "${D}/lib/modules/${PV}/$dir" ln -sf "../../../usr/src/${P}" "${D}/lib/modules/${PV}/$dir" done dodir /boot insinto /boot newins "${S}/arch/$ARCH/boot/bzImage" "bzlinux-${PV}" # Package source (kind of annoying because of some packages expecting it) emake clean dodir /usr/src cp -a "${S}" "${D}/usr/src/${P}" } # Link /usr/src/linux to newest kernel src_link() { ( cd "${ROOT}/usr/src" rm -f linux ln -s $(ls | grep "linux-" | sort | tail -1) linux ) } sysfile() { local cfgs=( "/boot/syslinux.cfg" "/boot/syslinux/syslinux.cfg" "/boot/EFI/BOOT/syslinux.cfg" "/boot/extlinux.conf" ) for cfg in "${cfgs[@]}"; do if [ -f "${ROOT}${cfg}" ]; then echo "${ROOT}${cfg}" return 0 fi done eerror "Can't locate syslinux configuration!" } pkg_postinst() { # Add label to syslinux config if there is non yet local syslinux initrd args local syslinux="$(sysfile)" if ! grep -q "^LABEL gentoo-${PV}$" "${syslinux}"; then if $(use initramfs); then if $(use ucode); then if $(use intel); then initrd="\tINITRD /intel-uc.img,/initramfs-gentoo\n" else initrd="\tINITRD /ucode.cpio,/initramfs-gentoo\n" fi else initrd="\tINITRD /initramfs-gentoo\n" fi fi args="$(grep -E "^# ARGS: " "${syslinux}" | sed 's/^# ARGS: //')" if [ -n "$args" ]; then sed -i "/^## Dynamic labels ##$/a LABEL gentoo-${PV}\n\tMENU LABEL Gentoo ${PV}\n\tLINUX /bzlinux-${PV}\n\tAPPEND ${args}\n$initrd" "${syslinux}" || eerror "Adding label to syslinux configuration failed!" sed -i "/^## Dynamic recovery labels ##$/a LABEL gentoo-${PV}-recovery\n\tMENU LABEL Gentoo ${PV} - Recovery\n\tLINUX /bzlinux-${PV}\n\tAPPEND ${args} recovery\n$initrd" "${syslinux}" || eerror "Adding recovery label to syslinux configuration failed!" else eerror "Adding label to syslinux configuration failed as there are no arguments" fi fi src_link } pkg_prerm() { # Remove label from syslinux config local syslinux="$(sysfile)" sed -i "/^LABEL gentoo-${PV}\(\|-recovery\)$/,/^$/d" "${syslinux}" || eerror "Removing label from syslinux fonfiguration failed!" } pkg_postrm() { # Remove any residue files rm -rf "/usr/src/${P}" "/lib/modules/${PV}" src_link }