Install this version:
emerge -a =sys-firmware/edk2-bin-202511
If this version is masked, you can unmask it using the autounmask tool or standard emerge options:
autounmask =sys-firmware/edk2-bin-202511
Or alternatively:
emerge --autounmask-write -a =sys-firmware/edk2-bin-202511
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit readme.gentoo-r1 secureboot
BINPKG="${P/-bin/}-1"
QEMU_TARGETS="aarch64 loongarch64 riscv64 x86_64"
DESCRIPTION="TianoCore EDK II UEFI firmware for virtual machines"
HOMEPAGE="https://github.com/tianocore/edk2"
for a in ${QEMU_TARGETS}; do
SRC_URI+=" qemu_softmmu_targets_${a}? ( https://dev.gentoo.org/~chewi/distfiles/${BINPKG}-qemu-${a}.xpak )"
done
S="${WORKDIR}"
LICENSE="BSD-2-with-patent MIT"
SLOT="0"
KEYWORDS="~amd64 ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
printf -v IUSE ' qemu_softmmu_targets_%s' ${QEMU_TARGETS}
REQUIRED_USE="|| ( ${IUSE} )"
RDEPEND="!sys-firmware/edk2"
DOC_CONTENTS="This package includes the TianoCore EDK II UEFI firmware for virtual \
machines of these QEMU architectures: ${QEMU_TARGETS}. See each architecture's README \
for usage details."
src_unpack() {
local a
for a in ${QEMU_TARGETS}; do
use "qemu_softmmu_targets_${a}" || continue
mkdir "${a}" || die
tar -C "${a}" -xf - < <(xz -c -d --single-stream "${DISTDIR}/${BINPKG}-qemu-${a}.xpak") ||
die "unpacking ${a} QEMU binpkg failed"
done
}
src_prepare() {
bunzip2 */usr/share/doc/*/README.gentoo.bz2 || die
default
}
src_install() {
insinto /usr/share
doins -r */usr/share/{edk2,qemu}/
# Compatibility with older package versions.
use qemu_softmmu_targets_x86_64 && dosym edk2/OvmfX64 /usr/share/edk2-ovmf
secureboot_auto_sign --in-place
readme.gentoo_create_doc
local a
for a in ${QEMU_TARGETS}; do
use "qemu_softmmu_targets_${a}" || continue
newdoc "${a}"/usr/share/doc/*/README.gentoo README-"${a}".gentoo
done
}
pkg_preinst() {
local OLD=${EROOT}/usr/share/edk2-ovmf NEW=${EROOT}/usr/share/edk2/OvmfX64
if use qemu_softmmu_targets_x86_64 && [[ -d ${OLD} && ! -L ${OLD} ]]; then
{
rm -vf "${OLD}"/{OVMF_{CODE,CODE.secboot,VARS}.fd,EnrollDefaultKeys.efi,Shell.efi,UefiShell.img} &&
mkdir -p "${NEW}" &&
find "${OLD}" -mindepth 1 -maxdepth 1 -execdir mv --update=none-fail -vt "${NEW}"/ {} + &&
rmdir "${OLD}"
} || die "unable to replace old directory with compatibility symlink"
fi
}
pkg_postinst() {
readme.gentoo_print_elog
}
!sys-firmware/edk2