summaryrefslogtreecommitdiff
path: root/sys-kernel/linux/linux-5.16.4-r1.ebuild
diff options
context:
space:
mode:
Diffstat (limited to 'sys-kernel/linux/linux-5.16.4-r1.ebuild')
-rw-r--r--sys-kernel/linux/linux-5.16.4-r1.ebuild116
1 files changed, 116 insertions, 0 deletions
diff --git a/sys-kernel/linux/linux-5.16.4-r1.ebuild b/sys-kernel/linux/linux-5.16.4-r1.ebuild
new file mode 100644
index 0000000..b0483f6
--- /dev/null
+++ b/sys-kernel/linux/linux-5.16.4-r1.ebuild
@@ -0,0 +1,116 @@
+# 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
+}