sys-firmware/intel-microcode: Rev bump to update ebuild code
authorThomas Deutschmann <whissi@gentoo.org>
Wed, 7 Feb 2018 03:18:40 +0000 (04:18 +0100)
committerThomas Deutschmann <whissi@gentoo.org>
Wed, 7 Feb 2018 03:24:55 +0000 (04:24 +0100)
Ebuild uses microcodes from 2017-11-17 but ebuild code changes
from recent ebuilds were backported.

Package-Manager: Portage-2.3.24, Repoman-2.3.6

sys-firmware/intel-microcode/intel-microcode-20171117-r1.ebuild [new file with mode: 0644]

diff --git a/sys-firmware/intel-microcode/intel-microcode-20171117-r1.ebuild b/sys-firmware/intel-microcode/intel-microcode-20171117-r1.ebuild
new file mode 100644 (file)
index 0000000..f58fcae
--- /dev/null
@@ -0,0 +1,95 @@
+# 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="27337"
+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
+}