diff options
Diffstat (limited to 'sys-firmware/intel-microcode/intel-microcode-20180108-r1.ebuild')
-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 +} |