-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathintel-microcode-20171117-r1.ebuild
93 lines (75 loc) · 2.36 KB
/
intel-microcode-20171117-r1.ebuild
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
# Copyright 1999-2024 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI="8"
inherit mount-boot
DESCRIPTION="Intel IA32/IA64 microcode update data"
HOMEPAGE="http://inertiawar.com/microcode/ https://www.touslesdrivers.com/index.php?v_page=23&v_code=55512&v_langue=en"
RESTRICT="mirror"
# The archive is gone from Intel's download site.
SRC_URI="https://www.applied-asynchrony.com/distfiles/microcode-${PV}.tgz"
LICENSE="intel-ucode"
SLOT="0"
KEYWORDS="-* amd64 x86"
IUSE="initramfs +split-ucode"
REQUIRED_USE="|| ( initramfs split-ucode )"
DEPEND="sys-apps/iucode_tool"
S=${WORKDIR}
# TODO:
# Blacklist bad microcode here.
DEFAULT_MICROCODE_SIGNATURES=""
# Advanced users only:
# merge with:
# only current CPU: MICROCODE_SIGNATURES="-S"
# only specific CPU: MICROCODE_SIGNATURES="-s 0x00000f4a -s 0x00010676"
# exclude specific CPU: MICROCODE_SIGNATURES="-s !0x00000686"
MICROCODE_SIGNATURES="${MICROCODE_SIGNATURES:=${DEFAULT_MICROCODE_SIGNATURES}}"
pkg_pretend() {
if [[ "${MICROCODE_SIGNATURES}" != "${DEFAULT_MICROCODE_SIGNATURES}" ]]; then
ewarn "MICROCODE_SIGNATURES is set!"
ewarn "The user has decided to install only a SUBSET of microcode."
fi
use initramfs && mount-boot_pkg_pretend
}
src_install() {
# This will take ALL of the upstream microcode sources:
# - microcode.dat
# - intel-ucode/
# In some cases, they have not contained the same content (eg the directory has newer stuff).
MICROCODE_SRC=(
"${S}"/microcode.dat
"${S}"/intel-ucode/
)
opts=(
${MICROCODE_SIGNATURES}
# be strict about what we are doing
--overwrite
--strict-checks
--no-ignore-broken
# show everything we find
--list-all
# show what we selected
--list
)
# The earlyfw cpio needs to be in /boot because it must be loaded before
# rootfs is mounted.
use initramfs && dodir /boot && opts+=( --write-earlyfw="${ED%}"/boot/intel-uc.img )
# split location:
use split-ucode && dodir /lib/firmware/intel-ucode && opts+=( --write-firmware="${ED%}"/lib/firmware/intel-ucode )
iucode_tool \
"${opts[@]}" \
"${MICROCODE_SRC[@]}" \
|| die "iucode_tool ${opts[@]} ${MICROCODE_SRC[@]}"
dodoc releasenote
}
pkg_preinst() {
use initramfs && mount-boot_pkg_preinst
}
pkg_prerm() {
use initramfs && mount-boot_pkg_prerm
}
pkg_postrm() {
use initramfs && mount-boot_pkg_postrm
}
pkg_postinst() {
use initramfs && mount-boot_pkg_postinst
}