blob: e3876413b68e2aff60b05c002d94bcec9d43787a (
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
|
# 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-stable.git/snapshot/linux-stable-${VER}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/linux-stable-${VER}"
LICENSE="GPLv2"
SLOT="${PV}"
KEYWORDS="amd64 ~x86"
IUSE="virt +initramfs amd"
DEPEND="
sys-devel/bc
dev-libs/elfutils
initramfs? ( dracut )"
src_configure() {
# Fix ARCH variable
[ "$ARCH" = "amd64" ] && ARCH="x86"
"${FILESDIR}"/config_prepare.sh $(usev virt) $(usev amd) || 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"
PFIX=".."
elif [ -f "${ROOT}/boot/EFI/BOOT/syslinux.cfg" ]; then
SYSLINUX="${ROOT}/boot/EFI/BOOT/syslinux.cfg"
PFIX="../../.."
elif [ -f "${ROOT}/boot/extlinux.conf" ]; then
SYSLINUX="${ROOT}/boot/extlinux.conf"
PFIX="."
else
eerror "Can't locate syslinux configuration!"
fi
}
pkg_postinst() {
# Generate initramfs
if $(use initramfs); then
einfo "Generating initramfs"
dracut \
-m "dash i18n rootfs-block terminfo udev-rules base fs-lib img-lib dm btrfs crypt" \
--force "/boot/initramfs-${PV}" "${PV}"
fi
# Add label to syslinux config if there is non yet
sysfile
if ! grep -q "^LABEL gentoo-${PV}$" "${SYSLINUX}"; then
if $(use initramfs); then
INITRD="\tINITRD ${PFIX}/initramfs-${PV}\n"
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 ${PFIX}/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 ${PFIX}/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
}
|