diff options
author | Robin H. Johnson <robbat2@gentoo.org> | 2018-01-10 13:57:09 -0800 |
---|---|---|
committer | Robin H. Johnson <robbat2@gentoo.org> | 2018-01-10 14:13:35 -0800 |
commit | de233b906ee278949e0e140d42d44f087f76d395 (patch) | |
tree | 2bd67f7723fe7401545081987925317121504729 /sys-firmware | |
parent | media-libs/gegl: Remove ghost dependency on media-gfx/exiv2 (diff) | |
download | gentoo-de233b906ee278949e0e140d42d44f087f76d395.tar.gz gentoo-de233b906ee278949e0e140d42d44f087f76d395.tar.bz2 gentoo-de233b906ee278949e0e140d42d44f087f76d395.zip |
sys-firmware/intel-microcode: rewrite to use iucode_tool.
- Use the Intel upstream 'iucode_tool' to process all of the input
microcode, from both the text-format microcode.dat file and other
inputs, then generate a clean set of split outputs & optionally also
initramfs output.
- Allows easy inclusion of any future split-ucode releases for single
CPUs.
- No longer uses intel-microcode2ucode.c from $FILESDIR.
- Expert users can use the new MICROCODE_SIGNATURES variable to install
only a subset of microcodes on their system, as requested by bug
643786.
- Avoids accidently bloated split-ucode files per bug #644100.
- USE=monolithic is no longer supported, please see iucode_tool for any
fallback.
- USE=initramfs now writes to /boot/intel-uc.img (8.3-safe naming).
Fixes: https://bugs.gentoo.org/643786
Fixes: https://bugs.gentoo.org/644100
Package-Manager: Portage-2.3.16, Repoman-2.3.6
Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
Diffstat (limited to 'sys-firmware')
-rw-r--r-- | sys-firmware/intel-microcode/intel-microcode-20180108-r1.ebuild | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/sys-firmware/intel-microcode/intel-microcode-20180108-r1.ebuild b/sys-firmware/intel-microcode/intel-microcode-20180108-r1.ebuild new file mode 100644 index 000000000000..60ae099579f5 --- /dev/null +++ b/sys-firmware/intel-microcode/intel-microcode-20180108-r1.ebuild @@ -0,0 +1,78 @@ +# 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 +} + +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 +} |