| 1 |
|
# Copyright 1999-2025 Gentoo Authors
|
|
1 |
# Copyright 1999-2026 Gentoo Authors
|
| 2 |
2 |
# Distributed under the terms of the GNU General Public License v2
|
| 3 |
3 |
|
| 4 |
4 |
EAPI=8
|
| ... | ... | |
| 6 |
6 |
inherit readme.gentoo-r1 secureboot
|
| 7 |
7 |
|
| 8 |
8 |
BINPKG="${P/-bin/}-1"
|
| 9 |
|
ARCHES="amd64 arm64"
|
|
9 |
EDK2_QEMU_TARGETS="aarch64 loongarch64 riscv64 x86_64"
|
| 10 |
10 |
|
| 11 |
11 |
DESCRIPTION="TianoCore EDK II UEFI firmware for virtual machines"
|
| 12 |
12 |
HOMEPAGE="https://github.com/tianocore/edk2"
|
| 13 |
|
SRC_URI=$(printf "https://dev.gentoo.org/~chewi/distfiles/${BINPKG}-%s.xpak\n" ${ARCHES})
|
|
13 |
for a in ${EDK2_QEMU_TARGETS}; do
|
|
14 |
SRC_URI+=" qemu_softmmu_targets_${a}? ( https://dev.gentoo.org/~chewi/distfiles/${BINPKG}-qemu-${a}.xpak )"
|
|
15 |
done
|
| 14 |
16 |
S="${WORKDIR}"
|
| 15 |
17 |
LICENSE="BSD-2-with-patent MIT"
|
| 16 |
18 |
SLOT="0"
|
| 17 |
|
KEYWORDS="amd64 arm64 ~loong ~ppc ppc64 ~riscv x86"
|
|
19 |
KEYWORDS="~amd64 ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
|
|
20 |
printf -v IUSE ' qemu_softmmu_targets_%s' ${EDK2_QEMU_TARGETS}
|
|
21 |
REQUIRED_USE="|| ( ${IUSE} )"
|
| 18 |
22 |
|
| 19 |
23 |
RDEPEND="!sys-firmware/edk2"
|
| 20 |
24 |
|
| 21 |
25 |
DOC_CONTENTS="This package includes the TianoCore EDK II UEFI firmware for virtual \
|
| 22 |
|
machines of these architectures: ${ARCHES}. See each architecture's README for \
|
| 23 |
|
usage details."
|
|
26 |
machines of these QEMU architectures: ${EDK2_QEMU_TARGETS}. See each architecture's README \
|
|
27 |
for usage details."
|
| 24 |
28 |
|
| 25 |
29 |
src_unpack() {
|
| 26 |
30 |
local a
|
| 27 |
|
for a in ${ARCHES}; do
|
|
31 |
for a in ${EDK2_QEMU_TARGETS}; do
|
|
32 |
use "qemu_softmmu_targets_${a}" || continue
|
| 28 |
33 |
mkdir "${a}" || die
|
| 29 |
|
tar -C "${a}" -xf - < <(xz -c -d --single-stream "${DISTDIR}/${BINPKG}-${a}.xpak") ||
|
| 30 |
|
die "unpacking ${a} binpkg failed"
|
|
34 |
tar -C "${a}" -xf - < <(xz -c -d --single-stream "${DISTDIR}/${BINPKG}-qemu-${a}.xpak") ||
|
|
35 |
die "unpacking ${a} QEMU binpkg failed"
|
| 31 |
36 |
done
|
| 32 |
37 |
}
|
| 33 |
38 |
|
| ... | ... | |
| 41 |
46 |
doins -r */usr/share/{edk2,qemu}/
|
| 42 |
47 |
|
| 43 |
48 |
# Compatibility with older package versions.
|
| 44 |
|
dosym edk2/OvmfX64 /usr/share/edk2-ovmf
|
|
49 |
use qemu_softmmu_targets_x86_64 && dosym edk2/OvmfX64 /usr/share/edk2-ovmf
|
| 45 |
50 |
|
| 46 |
51 |
secureboot_auto_sign --in-place
|
| 47 |
52 |
readme.gentoo_create_doc
|
| 48 |
53 |
|
| 49 |
54 |
local a
|
| 50 |
|
for a in ${ARCHES}; do
|
|
55 |
for a in ${EDK2_QEMU_TARGETS}; do
|
|
56 |
use "qemu_softmmu_targets_${a}" || continue
|
| 51 |
57 |
newdoc "${a}"/usr/share/doc/*/README.gentoo README-"${a}".gentoo
|
| 52 |
58 |
done
|
| 53 |
59 |
}
|
| 54 |
60 |
|
| 55 |
61 |
pkg_preinst() {
|
| 56 |
62 |
local OLD=${EROOT}/usr/share/edk2-ovmf NEW=${EROOT}/usr/share/edk2/OvmfX64
|
| 57 |
|
if [[ -d ${OLD} && ! -L ${OLD} ]]; then
|
|
63 |
if use qemu_softmmu_targets_x86_64 && [[ -d ${OLD} && ! -L ${OLD} ]]; then
|
| 58 |
64 |
{
|
| 59 |
65 |
rm -vf "${OLD}"/{OVMF_{CODE,CODE.secboot,VARS}.fd,EnrollDefaultKeys.efi,Shell.efi,UefiShell.img} &&
|
| 60 |
66 |
mkdir -p "${NEW}" &&
|