summaryrefslogtreecommitdiff
path: root/sys-kernel/linux/linux-5.0.5-r1.ebuild
blob: 1c1c58ce40e475f3c5219b9d0a70cb05843acc7a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# 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="virt initramfs amd intel ucode"

DEPEND="
	sys-devel/bc
	dev-libs/elfutils"

src_configure() {
	# Fix ARCH variable
	[ "$ARCH" = "amd64" ] && ARCH="x86"

	"${FILESDIR}"/config_prepare.sh $(usev amd) $(usev intel) $(usev virt) \
		|| die "Configuration application failed"
}

src_install() {
	emake modules_install INSTALL_MOD_PATH="${D}" INSTALL_FW_PATH="${D}/lib/firmware/${PV}"

	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/linux-${PV}"
}

# 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() {
	if [ -f "${ROOT}/boot/syslinux/syslinux.cfg" ]; then
		SYSLINUX="${ROOT}/boot/syslinux/syslinux.cfg"
	elif [ -f "${ROOT}/boot/EFI/BOOT/syslinux.cfg" ]; then
		SYSLINUX="${ROOT}/boot/EFI/BOOT/syslinux.cfg"
	elif [ -f "${ROOT}/boot/extlinux.conf" ]; then
		SYSLINUX="${ROOT}/boot/extlinux.conf"
	else
		eerror "Can't locate syslinux configuration!"
	fi
}

pkg_postinst() {
	# Add label to syslinux config if there is non yet
	sysfile
	if ! grep -q "^LABEL gentoo-${PV}$" "${SYSLINUX}"; then
		if $(use initramfs); then
			if $(use ucode); then
				INITRD="\tINITRD /ucode.cpio,/initramfs-gentoo\n"
			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
	sysfile
	sed -i "/^LABEL gentoo-${PV}\(\|-recovery\)$/,/^$/d" "${SYSLINUX}" || eerror "Removing label from syslinux fonfiguration failed!"
}

pkg_postrm() {
	src_link
}