blob: 43b4013e4709dc415d893f6e6b8daf0cc7903e65 (
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
|
# Copyright 2018 Redcore Linux Project
# Distributed under the terms of the GNU General Public License v2
SUMMARY="Redcore Linux Project LTS Kernel Image"
DESCRIPTION="Redcore Linux Project LTS Kernel Image"
HOMEPAGE="https://redcorelinux.org"
DOWNLOADS="https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-${PV}.tar.xz"
LICENCES="GPL-2"
SLOT="${PV}"
PLATFORMS="~amd64"
EXTRAVERSION="redcore-lts"
KV_FULL=""${PV}"-"${EXTRAVERSION}""
MYOPTIONS="
cryptsetup [[ description = [ Use sys-fs/cryptsetup to unlock LUKS encrypted partitions ] ]]
dkms [[ description = [ Use sys-kernel/dkms to build 3rd party dkms kernel modules ] ]]
dracut [[ description = [ Use sys-boot/dracut to create initramfs images ] ]]
mdadm [[ description = [ Use sys-fs/mdadm to create, manage, and monitor Linux MD (software RAID) devices ] ]]
"
DEPENDENCIES="
build:
app-arch/xz
sys-apps/bc
sys-devel/make
build+run:
cryptsetup? ( sys-fs/cryptsetup )
dkms? (
sys-kernel/dkms
sys-kernel/linux-sources-redcore-lts:"${SLOT}"
)
dracut? ( sys-boot/dracut )
mdadm? ( sys-fs/mdadm )
firmware/linux-firmware
"
DEFAULT_SRC_PREPARE_PATCHES=(
"${FILES}"/introduce-NUMA-identity-node-sched-domain.patch
"${FILES}"/k10temp-add-ZEN-support.patch
"${FILES}"/mute-pps_state_mismatch.patch
"${FILES}"/restore-SD_PREFER_SIBLING-on-MC-domains.patch
"${FILES}"/Revert-ath10k-activate-user-space-firmware-loading.patch
"${FILES}"/linux-hardened.patch
"${FILES}"/uksm-for-linux-hardened.patch
"${FILES}"/0015-Enable-BFQ-io-scheduler-by-default.patch
# allow kernel to be built via exheres
"${FILES}"/linux-pkg-config.patch
"${FILES}"/linux-objtool-dont-hardcore-ar.patch
)
WORK="${WORKBASE}"/linux-"${PV}"
pkg_setup() {
exdirectory --allow /boot
export KBUILD_BUILD_USER="nexus"
export KBUILD_BUILD_HOST="nexus.redcorelinux.org"
export REAL_ARCH="$ARCH"
unset ARCH ; unset LDFLAGS #will interfere with Makefile if set
}
src_prepare() {
default
src_prepare_params=(
CC="${CC}"
HOSTCC="${CC}"
)
edo emake \
"${src_prepare_params[@]}" \
mrproper
edo sed -ri "s|^(EXTRAVERSION =).*|\1 -${EXTRAVERSION}|" Makefile
edo cp "${FILES}"/"${EXTRAVERSION}"-amd64.config .config
}
src_compile() {
src_compile_params=(
AR="${AR}"
AS="${AS}"
CC="${CC}"
HOSTCC="${CC}"
HOSTLD="${LD}"
LD="${LD}"
NM="${NM}"
OBJCOPY="${OBJCOPY}"
OBJDUMP="${OBJDUMP}"
)
edo emake \
"${src_compile_params[@]}" \
prepare modules_prepare bzImage modules
}
src_install() {
dodir /boot
insinto /boot
newins .config config-"${KV_FULL}"
newins System.map System.map-"${KV_FULL}"
newins arch/x86/boot/bzImage vmlinuz-"${KV_FULL}"
dodir /usr/src/linux-"${KV_FULL}"
insinto /usr/src/linux-"${KV_FULL}"
doins Module.symvers
doins System.map
exeinto /usr/src/linux-"${KV_FULL}"
doexe vmlinux
src_install_params=(
CC="${CC}"
HOSTCC="${CC}"
)
edo emake \
"${src_install_params[@]}" \
INSTALL_MOD_PATH="${IMAGE}"usr/"$(exhost --target)" modules_install
edo rm -f "${IMAGE}"usr/"$(exhost --target)"/lib/modules/"${KV_FULL}"/build
edo rm -f "${IMAGE}"usr/"$(exhost --target)"/lib/modules/"${KV_FULL}"/source
export local KSYMS
for KSYMS in build source ; do
dosym ../../../../../usr/src/linux-"${KV_FULL}" usr/"$(exhost --target)"/lib/modules/"${KV_FULL}"/"${KSYMS}"
done
}
_grub2_update_grubcfg() {
if [ -x $(which grub-mkconfig) ]; then
edo grub-mkconfig -o "${ROOT}"boot/grub/grub.cfg
fi
}
_dracut_initrd_create() {
if [ -x $(which dracut) ]; then
edo dracut -N -f --kver="${KV_FULL}" "${ROOT}"boot/initrd-"${KV_FULL}"
fi
}
_dracut_initrd_delete() {
edo rm -rf "${ROOT}"boot/initrd-"${KV_FULL}"
}
_dkms_modules_delete() {
if [ -x $(which dkms) ] ; then
export local DKMSMOD
for DKMSMOD in $(dkms status | cut -d " " -f1,2 | sed -e 's/,//g' | sed -e 's/ /\//g' | sed -e 's/://g') ; do
edo dkms remove "${DKMSMOD}" -k "${KV_FULL}"
done
fi
}
_kernel_modules_delete() {
edo rm -rf "${ROOT}"usr/"$(exhost --target)"/lib/modules/"${KV_FULL}"
}
pkg_postinst() {
if [ $(stat -c %d:%i /) == $(stat -c %d:%i /proc/1/root/.) ]; then
if option dracut; then
_dracut_initrd_create
fi
_grub2_update_grubcfg
fi
}
pkg_postrm() {
if [ $(stat -c %d:%i /) == $(stat -c %d:%i /proc/1/root/.) ]; then
if option dracut; then
_dracut_initrd_delete
fi
if use dkms; then
_dkms_modules_delete
fi
_kernel_modules_delete
_grub2_update_grubcfg
fi
}
|