🔒 Repository is read-only – file editing is disabled.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
pkgname: ovmf
pkgver: '202011'
pkgrel: '3'
pkgdesc: Tianocore UEFI firmware for Qemu
url: 'https://sourceforge.net/apps/mediawiki/tianocore/index.php?title=EDK2'
arch: x86_64
depends: []
makedepends:
- git
- acpica
- nasm
- subversion
- perl-libwww
source:
- 'https://github.com/tianocore/edk2/archive/edk2-stable${pkgver}.tar.gz'
- 'https://www.openssl.org/source/openssl-1.1.1i.tar.gz'
- 'https://github.com/google/brotli/archive/v1.0.7.tar.gz'
- 50-edk2-ovmf-i386-secure.json
- 50-edk2-ovmf-x86_64-secure.json
- 60-edk2-ovmf-x86_64.json
- 60-edk2-ovmf-i386.json
- python3.patch
sha256sums:
- 53e877c714426c2c1957d1e875d99c7eb6602a858d7ec8ba4eac42c37e3ce064
- e8be6a35fe41d10603c3cc635e93289ed00bf34b79671a3a4de64fcee00d5242
- 4c61bfb0faca87219ea587326c467b95acb25555b53d1a421ffa3c8a9296ee2c
- SKIP
- SKIP
- SKIP
- SKIP
- SKIP
build: |
mv edk2-edk2-stable${pkgver} ${pkgname}-${pkgver}
#Sylink openssl into place
rm -rv ${pkgname}-${pkgver}/CryptoPkg/Library/OpensslLib/openssl
ln -sv ./openssl-1.1.1i ${pkgname}-${pkgver}/CryptoPkg/Library/OpensslLib/openssl
#Symlink brotli into place
rm -rfv ${pkgname}-${pkgver}/BaseTools/Source/C/BrotliCompress/brotli ${pkgname}-${pkgver}/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
ln -sfv ./"brotli-1.0.7" ${pkgname}-${pkgver}/BaseTools/Source/C/BrotliCompress/brotli
ln -sfv ./"brotli-1.0.7" ${pkgname}-${pkgver}/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
if [ "$(uname -m)" != "x86_64" ]; then
echo "This package must be built under the x86_64 architecture."
false
fi
cd ${pkgname}-${pkgver}
patch -Np1 -i ../python3.patch
# -Werror, not even once
sed -e 's/ -Werror//g' \
-i BaseTools/Conf/*.template BaseTools/Source/C/Makefiles/*.makefile
make -C BaseTools
. edksetup.sh
for _arch in ${_arch_list[@]}; do
# shell
echo "Building shell (${_arch})."
BaseTools/BinWrappers/PosixLike/build -p ShellPkg/ShellPkg.dsc \
-a "${_arch}" \
-b "RELEASE" \
-n "$(nproc)" \
-t "GCC5"
# ovmf
if [[ "${_arch}" == 'IA32' ]]; then
echo "Building ovmf (${_arch}) with secure boot"
OvmfPkg/build.sh -p OvmfPkg/OvmfPkgIa32.dsc \
-a "${_arch}" \
-b "RELEASE" \
-n "$(nproc)" \
-t "GCC5" \
-D LOAD_X64_ON_IA32_ENABLE \
-D NETWORK_IP6_ENABLE \
-D TPM_ENABLE \
-D HTTP_BOOT_ENABLE \
-D TLS_ENABLE \
-D FD_SIZE_2MB \
-D SECURE_BOOT_ENABLE \
-D SMM_REQUIRE \
-D EXCLUDE_SHELL_FROM_FD
mv -v Build/Ovmf{Ia32,IA32-secure}
echo "Building ovmf (${_arch}) without secure boot"
OvmfPkg/build.sh -p OvmfPkg/OvmfPkgIa32.dsc \
-a "${_arch}" \
-b "RELEASE" \
-n "$(nproc)" \
-t "GCC5" \
-D LOAD_X64_ON_IA32_ENABLE \
-D NETWORK_IP6_ENABLE \
-D TPM_ENABLE \
-D HTTP_BOOT_ENABLE \
-D TLS_ENABLE \
-D FD_SIZE_2MB
mv -v Build/Ovmf{Ia32,IA32}
fi
if [[ "${_arch}" == 'X64' ]]; then
echo "Building ovmf (${_arch}) with secure boot"
OvmfPkg/build.sh -p "OvmfPkg/OvmfPkg${_arch}.dsc" \
-a "${_arch}" \
-b "RELEASE" \
-n "$(nproc)" \
-t "GCC5" \
-D NETWORK_IP6_ENABLE \
-D TPM_ENABLE \
-D FD_SIZE_2MB \
-D TLS_ENABLE \
-D HTTP_BOOT_ENABLE \
-D SECURE_BOOT_ENABLE \
-D SMM_REQUIRE \
-D EXCLUDE_SHELL_FROM_FD
mv -v Build/OvmfX64{,-secure}
echo "Building ovmf (${_arch}) without secure boot"
OvmfPkg/build.sh -p "OvmfPkg/OvmfPkg${_arch}.dsc" \
-a "${_arch}" \
-b "RELEASE" \
-n "$(nproc)" \
-t "GCC5" \
-D NETWORK_IP6_ENABLE \
-D TPM_ENABLE \
-D FD_SIZE_2MB \
-D TLS_ENABLE \
-D HTTP_BOOT_ENABLE
fi
done
unset _arch
# minimal UEFI shell, as defined in ShellPkg/Application/Shell/ShellPkg.inf
local _min='7C04A583-9E3E-4f1c-AD65-E05268D0B4D1'
# full UEFI shell, as defined in ShellPkg/ShellPkg.dsc
local _full='EA4BB293-2D7F-4456-A681-1F22F42CD0BC'
for _arch in ${_arch_list[@]}; do
install -vDm 644 "Build/Shell/RELEASE_GCC5/${_arch}/Shell_${_min}.efi" \
"${PKGDIR}/usr/share/${pkgname}/${_arch,,}/Shell.efi"
install -vDm 644 "Build/Shell/RELEASE_GCC5/${_arch}/Shell_${_full}.efi" \
"${PKGDIR}/usr/share/${pkgname}/${_arch,,}/Shell_Full.efi"
done
# license
install -vDm 644 License.txt -t "${PKGDIR}/usr/share/licenses/${pkgname}-${pkgver}"
# docs
install -vDm 644 {ReadMe.rst,Maintainers.txt} \
-t "${PKGDIR}/usr/share/doc/${pkgname}-${pkgver}"
# installing the various firmwares
for _arch in ${_arch_list[@]}; do
# installing OVMF.fd for xen: https://bugs.archlinux.org/task/58635
install -vDm 644 "Build/Ovmf${_arch}/RELEASE_GCC5/FV/OVMF.fd" \
-t "${PKGDIR}/usr/share/${pkgname}/${_arch,,}"
install -vDm 644 "Build/Ovmf${_arch}/RELEASE_GCC5/FV/OVMF_CODE.fd" \
-t "${PKGDIR}/usr/share/${pkgname}/${_arch,,}"
install -vDm 644 "Build/Ovmf${_arch}/RELEASE_GCC5/FV/OVMF_VARS.fd" \
-t "${PKGDIR}/usr/share/${pkgname}/${_arch,,}"
install -vDm 644 "Build/Ovmf${_arch}-secure/RELEASE_GCC5/FV/OVMF_CODE.fd" \
"${PKGDIR}/usr/share/${pkgname}/${_arch,,}/OVMF_CODE.secboot.fd"
done
# installing qemu descriptors in accordance with qemu:
# https://git.qemu.org/?p=qemu.git;a=tree;f=pc-bios/descriptors
# https://bugs.archlinux.org/task/64206
install -vDm 644 ../*-edk2-*.json -t "${PKGDIR}/usr/share/qemu/firmware"
# licenses
install -vDm 644 License.txt -t \
"${PKGDIR}/usr/share/licenses/${pkgname}-${pkgver}"
install -vDm 644 OvmfPkg/License.txt \
"${PKGDIR}/usr/share/licenses/${pkgname}-${pkgver}/OvmfPkg.License.txt"
# docs
install -vDm 644 {OvmfPkg/README,ReadMe.rst,Maintainers.txt} \
-t "${PKGDIR}/usr/share/doc/${pkgname}-${pkgver}"
package: |
true