diff --git a/50-edk2-riscv-qcow2.json b/50-edk2-riscv-qcow2.json new file mode 100644 index 0000000..eb1930d --- /dev/null +++ b/50-edk2-riscv-qcow2.json @@ -0,0 +1,33 @@ +{ + "description": "UEFI firmware for RISC-V virtual machines", + "interface-types": [ + "uefi" + ], + "mapping": { + "device": "flash", + "mode" : "split", + "executable": { + "filename": "/usr/share/edk2/riscv/RISCV_VIRT_CODE.qcow2", + "format": "qcow2" + }, + "nvram-template": { + "filename": "/usr/share/edk2/riscv/RISCV_VIRT_VARS.qcow2", + "format": "qcow2" + } + }, + "targets": [ + { + "architecture": "riscv64", + "machines": [ + "virt", + "virt-*" + ] + } + ], + "features": [ + + ], + "tags": [ + + ] +} diff --git a/edk2-build.rhel-9 b/edk2-build.rhel-10 similarity index 86% rename from edk2-build.rhel-9 rename to edk2-build.rhel-10 index efa067f..f2cf2f7 100644 --- a/edk2-build.rhel-9 +++ b/edk2-build.rhel-10 @@ -63,7 +63,7 @@ opts = ovmf.common pcds = nx.compat.x64 la57 plat = OvmfX64 -dest = RHEL-9/ovmf +dest = RHEL-10/ovmf cpy1 = FV/OVMF_CODE.fd OVMF_CODE.fd cpy2 = FV/OVMF_VARS.fd cpy3 = X64/Shell.efi @@ -78,7 +78,7 @@ opts = ovmf.common pcds = nx.compat.x64 la57 plat = OvmfX64 -dest = RHEL-9/ovmf +dest = RHEL-10/ovmf cpy1 = FV/OVMF_CODE.fd OVMF_CODE.secboot.fd cpy2 = X64/EnrollDefaultKeys.efi @@ -94,7 +94,7 @@ opts = ovmf.common ovmf.4m pcds = nx.compat.x64 plat = AmdSev -dest = RHEL-9/ovmf +dest = RHEL-10/ovmf cpy1 = FV/OVMF.fd OVMF.amdsev.fd [build.ovmf.inteltdx] @@ -107,7 +107,7 @@ opts = ovmf.common pcds = nx.compat.x64 la57 plat = IntelTdx -dest = RHEL-9/ovmf +dest = RHEL-10/ovmf cpy1 = FV/OVMF.fd OVMF.inteltdx.fd @@ -122,7 +122,7 @@ opts = ovmf.common armvirt.verbose pcds = nx.compat.aa64 plat = ArmVirtQemu-AARCH64 -dest = RHEL-9/aarch64 +dest = RHEL-10/aarch64 cpy1 = FV/QEMU_EFI.fd cpy2 = FV/QEMU_VARS.fd cpy3 = FV/QEMU_EFI.fd QEMU_EFI-pflash.raw @@ -138,7 +138,23 @@ opts = ovmf.common armvirt.silent pcds = nx.compat.aa64 plat = ArmVirtQemu-AARCH64 -dest = RHEL-9/aarch64 +dest = RHEL-10/aarch64 cpy1 = FV/QEMU_EFI.fd QEMU_EFI.silent.fd cpy2 = FV/QEMU_EFI.fd QEMU_EFI-silent-pflash.raw pad2 = QEMU_EFI-silent-pflash.raw 64m + + +##################################################################### +# riscv build + +[build.riscv.qemu] +conf = OvmfPkg/RiscVVirt/RiscVVirtQemu.dsc +arch = RISCV64 +plat = RiscVVirtQemu +dest = RHEL-10/riscv +cpy1 = FV/RISCV_VIRT_CODE.fd +cpy2 = FV/RISCV_VIRT_CODE.fd RISCV_VIRT_CODE.raw +cpy3 = FV/RISCV_VIRT_VARS.fd +cpy4 = FV/RISCV_VIRT_VARS.fd RISCV_VIRT_VARS.raw +pad1 = RISCV_VIRT_CODE.raw 32m +pad2 = RISCV_VIRT_VARS.raw 32m diff --git a/edk2.spec b/edk2.spec index 3b994cc..b1ed281 100644 --- a/edk2.spec +++ b/edk2.spec @@ -1,4 +1,4 @@ -ExclusiveArch: x86_64 aarch64 +ExclusiveArch: x86_64 aarch64 riscv64 # edk2-stable202502 %define GITDATE 20250221 @@ -12,16 +12,20 @@ ExclusiveArch: x86_64 aarch64 %define build_ovmf 0 %define build_aarch64 0 +%define build_riscv64 0 %ifarch x86_64 %define build_ovmf 1 %endif %ifarch aarch64 %define build_aarch64 1 %endif +%ifarch riscv64 + %define build_riscv64 1 +%endif Name: edk2 Version: %{GITDATE} -Release: 1%{?dist} +Release: 2%{?dist} Summary: UEFI firmware for 64-bit virtual machines License: BSD-2-Clause-Patent and Apache-2.0 and MIT URL: http://www.tianocore.org @@ -47,9 +51,11 @@ Source43: 50-edk2-ovmf-x64-nosb.json Source44: 60-edk2-ovmf-x64-amdsev.json Source45: 60-edk2-ovmf-x64-inteltdx.json +Source50: 50-edk2-riscv-qcow2.json + # https://gitlab.com/kraxel/edk2-build-config Source80: edk2-build.py -Source82: edk2-build.rhel-9 +Source82: edk2-build.rhel-10 Source90: DBXUpdate-%{DBXDATE}.x64.bin Patch1: 0003-Remove-paths-leading-to-submodules.patch @@ -154,6 +160,19 @@ platform that enables UEFI support for QEMU/KVM ARM Virtual Machines. This package contains a 64-bit build. +%package riscv64 +Summary: UEFI firmware for riscv64 virtual machines +BuildArch: noarch + +# No Secure Boot for riscv64 yet, but we include OpenSSL for the IPv6 stack. +Provides: bundled(openssl) = %{OPENSSL_VER} +License: BSD-2-Clause-Patent and Apache-2.0 + +%description riscv64 +EFI Development Kit II platform that enables UEFI support for QEMU/KVM +RISC-V Virtual Machines. This package contains a 64-bit build. + + %package tools Summary: EFI Development Kit II Tools License: BSD-2-Clause-Patent @@ -190,12 +209,13 @@ git config am.keepcr true cp -a -- %{SOURCE1} . cp -a -- %{SOURCE10} %{SOURCE11} %{SOURCE12} %{SOURCE13} . cp -a -- %{SOURCE40} %{SOURCE41} %{SOURCE43} %{SOURCE44} %{SOURCE45} . +cp -a -- %{SOURCE50} . cp -a -- %{SOURCE80} %{SOURCE82} . cp -a -- %{SOURCE90} . tar -C CryptoPkg/Library/OpensslLib -a -f %{SOURCE2} -x tar -xf %{SOURCE3} --strip-components=1 --directory MdePkg/Library/BaseFdtLib/libfdt -# Done by %setup, but we do not use it for the auxiliary tarballs +# Done by setup macro, but we do not use it for the auxiliary tarballs chmod -Rf a+rX,u+w,g-w,o-w . %build @@ -248,28 +268,37 @@ mkdir -p CryptoPkg/Library/MbedTlsLib/mbedtls/library mkdir -p SecurityPkg/DeviceSecurity/SpdmLib/libspdm/include %if %{build_ovmf} -./edk2-build.py --config edk2-build.rhel-9 -m ovmf --release-date "$RELEASE_DATE" -build_iso RHEL-9/ovmf -cp DBXUpdate-%{DBXDATE}.x64.bin RHEL-9/ovmf -virt-fw-vars --input RHEL-9/ovmf/OVMF_VARS.fd \ - --output RHEL-9/ovmf/OVMF_VARS.secboot.fd \ +./edk2-build.py --config edk2-build.rhel-10 -m ovmf --release-date "$RELEASE_DATE" +build_iso RHEL-10/ovmf +cp DBXUpdate-%{DBXDATE}.x64.bin RHEL-10/ovmf +virt-fw-vars --input RHEL-10/ovmf/OVMF_VARS.fd \ + --output RHEL-10/ovmf/OVMF_VARS.secboot.fd \ --set-dbx DBXUpdate-%{DBXDATE}.x64.bin \ --enroll-redhat --secure-boot -virt-fw-vars --input RHEL-9/ovmf/OVMF.inteltdx.fd \ - --output RHEL-9/ovmf/OVMF.inteltdx.secboot.fd \ +virt-fw-vars --input RHEL-10/ovmf/OVMF.inteltdx.fd \ + --output RHEL-10/ovmf/OVMF.inteltdx.secboot.fd \ --set-dbx DBXUpdate-%{DBXDATE}.x64.bin \ --enroll-redhat --secure-boot \ --set-fallback-no-reboot %endif %if %{build_aarch64} -./edk2-build.py --config edk2-build.rhel-9 -m armvirt --release-date "$RELEASE_DATE" +./edk2-build.py --config edk2-build.rhel-10 -m armvirt --release-date "$RELEASE_DATE" for raw in */aarch64/*.raw; do qcow2="${raw%.raw}.qcow2" qemu-img convert -f raw -O qcow2 -o cluster_size=4096 -S 4096 "$raw" "$qcow2" done %endif +%if %{build_riscv64} +./edk2-build.py --config edk2-build.rhel-10 -m riscv --release-date "$RELEASE_DATE" +for raw in */riscv/*.raw; do + qcow2="${raw%.raw}.qcow2" + qemu-img convert -f raw -O qcow2 -o cluster_size=4096 -S 4096 "$raw" "$qcow2" + rm -f "$raw" +done +%endif + %install cp -a OvmfPkg/License.txt License.OvmfPkg.txt @@ -292,7 +321,7 @@ install BaseTools/Scripts/GccBase.lds \ %{buildroot}%{_datadir}/%{name}/Scripts mkdir -p %{buildroot}%{_datadir}/%{name} -cp -av RHEL-9/* %{buildroot}%{_datadir}/%{name} +cp -av RHEL-10/* %{buildroot}%{_datadir}/%{name} %if %{build_ovmf} mkdir -p %{buildroot}%{_datadir}/OVMF @@ -334,6 +363,12 @@ install -m 0644 \ # endif build_aarch64 %endif +%if %{build_riscv64} +install -m 0644 \ + 50-edk2-riscv-qcow2.json \ + %{buildroot}%{_datadir}/qemu/firmware +%endif + %check %global common_files \ @@ -394,6 +429,14 @@ install -m 0644 \ # endif build_aarch64 %endif +%if %{build_riscv64} +%files riscv64 +%common_files +%{_datadir}/%{name}/riscv/*.fd +%{_datadir}/%{name}/riscv/*.qcow2 +%{_datadir}/qemu/firmware/50-edk2-riscv-qcow2.json +%endif + %files tools %license License.txt %license License-History.txt @@ -419,6 +462,13 @@ install -m 0644 \ %changelog +* Mon Apr 07 2025 Miroslav Rezanina - 20250221-2 +- edk2-.distro-drop-setup-macro-in-specfile-comment.patch [RHEL-85759] +- edk2-.distro-switch-to-rhel-10-build-config.patch [RHEL-85759] +- edk2-.distro-add-riscv64-sub-rpm.patch [RHEL-85759] +- Resolves: RHEL-85759 + (RFE: Add riscv64 build and sub-package) + * Wed Mar 26 2025 Miroslav Rezanina - 20250221-1 - Rebase to edk2-stable202502 [RHEL-75592] - Resolves: RHEL-75592