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