blob: b0483f6844f430adba4aa3a6e243fb0ddbf8c668 (
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
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
}
|