You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/sys-firmware/intel-microcode/intel-microcode-20180108-r1...

96 lines
2.5 KiB

# Copyright 1999-2018 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI="6"
inherit toolchain-funcs mount-boot
# Find updates by searching and clicking the first link (hopefully it's the one):
# http://www.intel.com/content/www/us/en/search.html?keyword=Processor+Microcode+Data+File
NUM="27431"
DESCRIPTION="Intel IA32/IA64 microcode update data"
HOMEPAGE="http://inertiawar.com/microcode/ https://downloadcenter.intel.com/Detail_Desc.aspx?DwnldID=${NUM}"
SRC_URI="http://downloadmirror.intel.com/${NUM}/eng/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"
RDEPEND="!<sys-apps/microcode-ctl-1.17-r2" #268586
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
}