[arch-commits] Commit in (edk2 edk2/repos edk2/trunk edk2/trunk/PKGBUILD)
David Runge
dvzrv at archlinux.org
Sun Apr 19 21:03:26 UTC 2020
Date: Sunday, April 19, 2020 @ 21:03:26
Author: dvzrv
Revision: 380572
Adding edk2 base, with edk2-ovmf (replacing ovmf) and edk2-shell (uefi-shell).
Added:
edk2/
edk2/repos/
edk2/trunk/
edk2/trunk/PKGBUILD
----------+
PKGBUILD | 178 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 178 insertions(+)
Added: edk2/trunk/PKGBUILD
===================================================================
--- edk2/trunk/PKGBUILD (rev 0)
+++ edk2/trunk/PKGBUILD 2020-04-19 21:03:26 UTC (rev 380572)
@@ -0,0 +1,178 @@
+# Maintainer: David Runge <dvzrv at archlinux.org>
+
+# openssl > 1.1.1d is not yet compatible with edk2-ovmf
+_openssl_ver=1.1.1d
+pkgbase=edk2
+pkgname=('edk2-shell' 'edk2-ovmf')
+pkgver=202002
+pkgrel=1
+pkgdesc="Modern, feature-rich firmware development environment for the UEFI specifications"
+arch=('any')
+url="https://github.com/tianocore/edk2"
+license=('BSD')
+makedepends=('acpica' 'iasl' 'libutil-linux' 'nasm' 'python')
+options=(!makeflags)
+source=("$pkgbase-$pkgver.tar.gz::https://github.com/tianocore/${pkgbase}/archive/${pkgbase}-stable${pkgver}.tar.gz"
+ "https://www.openssl.org/source/openssl-${_openssl_ver}.tar.gz"{,.asc})
+sha512sums=('e43090f9c0916b48452fa14bbcd9cd125330304c44b904502ef4ac035bbfb1b0529336f76a0512c0cdbcb4092722839e70b07866e845e76280f6a90b7fb093ab'
+ '2bc9f528c27fe644308eb7603c992bac8740e9f0c3601a130af30c9ffebbf7e0f5c28b76a00bbb478bad40fbe89b4223a58d604001e1713da71ff4b7fe6a08a7'
+ 'SKIP')
+validpgpkeys=('8657ABB260F056B1E5190839D9C4D26D0E604491') # Matt Caswell <matt at openssl.org>
+_arch_list=('IA32' 'X64')
+_build_type='RELEASE'
+_build_plugin='GCC5'
+
+prepare() {
+ mv -v "$pkgbase-$pkgbase-stable$pkgver" "$pkgbase-$pkgver"
+ cd "$pkgbase-$pkgver"
+ # symlinking openssl into place
+ rm -rfv CryptoPkg/Library/OpensslLib/openssl
+ ln -sfv "${srcdir}/openssl-$_openssl_ver" CryptoPkg/Library/OpensslLib/openssl
+ # openssl 1.1.1d has a typo that causes a compile error
+ sed -e 's/return return/return/g' \
+ -i "../openssl-$_openssl_ver/crypto/threads_none.c"
+ # -Werror, not even once
+ sed -e 's/ -Werror//g' \
+ -i BaseTools/Conf/*.template BaseTools/Source/C/Makefiles/*.makefile
+}
+
+build() {
+ cd "$pkgbase-$pkgver"
+ local _arch
+ 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 "${_build_type}" \
+ -n "$(nproc)" \
+ -t "${_build_plugin}"
+ # ovmf
+ if [[ "${_arch}" == 'IA32' ]]; then
+ echo "Building ovmf (${_arch}) with secure boot"
+ OvmfPkg/build.sh -p OvmfPkg/OvmfPkgIa32.dsc \
+ -a "${_arch}" \
+ -b "${_build_type}" \
+ -n "$(nproc)" \
+ -t "${_build_plugin}" \
+ -D NETWORK_IP6_ENABLE \
+ -D TPM2_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 "${_build_type}" \
+ -n "$(nproc)" \
+ -t "${_build_plugin}" \
+ -D NETWORK_IP6_ENABLE \
+ -D TPM2_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 "${_build_type}" \
+ -n "$(nproc)" \
+ -t "${_build_plugin}" \
+ -D NETWORK_IP6_ENABLE \
+ -D TPM2_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 "${_build_type}" \
+ -n "$(nproc)" \
+ -t "${_build_plugin}" \
+ -D NETWORK_IP6_ENABLE \
+ -D TPM2_ENABLE \
+ -D FD_SIZE_2MB \
+ -D TLS_ENABLE \
+ -D HTTP_BOOT_ENABLE
+ fi
+ done
+}
+
+package_edk2-shell() {
+ provides=('uefi-shell')
+ cd "$pkgbase-$pkgver"
+ local _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/${_build_type}_${_build_plugin}/${_arch}/Shell_${_min}.efi" \
+ "${pkgdir}/usr/share/${pkgname}/${_arch,,}/Shell.efi"
+ install -vDm 644 "Build/Shell/${_build_type}_${_build_plugin}/${_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}"
+ # docs
+ install -vDm 644 {Readme.md,Maintainers.txt} \
+ -t "${pkgdir}/usr/share/doc/${pkgname}"
+}
+
+package_edk2-ovmf() {
+ pkgdesc="Open Virtual Machine Firmware to support firmware for Virtual Machines"
+ provides=('ovmf')
+ conflicts=('ovmf')
+ replaces=('ovmf')
+ license+=('MIT')
+ cd "$pkgbase-$pkgver"
+ local _arch
+ # symlinking to locations defined by qemu:
+ # https://git.qemu.org/?p=qemu.git;a=tree;f=pc-bios/descriptors
+ install -vdm 755 "${pkgdir}/usr/share/qemu/"
+ for _arch in ${_arch_list[@]}; do
+ # installing the various firmwares
+ install -vDm 644 Build/Ovmf${_arch}/${_build_type}_${_build_plugin}/FV/OVMF_CODE.fd \
+ -t "${pkgdir}/usr/share/${pkgname}/${_arch,,}"
+ install -vDm 644 Build/Ovmf${_arch}/${_build_type}_${_build_plugin}/FV/OVMF_VARS.fd \
+ -t "${pkgdir}/usr/share/${pkgname}/${_arch,,}"
+ install -vDm 644 Build/Ovmf${_arch}-secure/${_build_type}_${_build_plugin}/FV/OVMF_CODE.fd \
+ "${pkgdir}/usr/share/${pkgname}/${_arch,,}/OVMF_CODE.secboot.fd"
+ if [[ "${_arch}" == 'IA32' ]]; then
+ ln -sfv "/usr/share/${pkgname}/${_arch,,}/OVMF_CODE.fd" \
+ "${pkgdir}/usr/share/qemu/edk2-i386-code.fd"
+ ln -sfv "/usr/share/${pkgname}/${_arch,,}/OVMF_VARS.fd" \
+ "${pkgdir}/usr/share/qemu/edk2-i386-vars.fd"
+ ln -sfv "/usr/share/${pkgname}/${_arch,,}/OVMF_CODE.secboot.fd" \
+ "${pkgdir}/usr/share/qemu/edk2-i386-secure-code.fd"
+ fi
+ if [[ "${_arch}" == 'X64' ]]; then
+ ln -sfv "/usr/share/${pkgname}/${_arch,,}/OVMF_CODE.fd" \
+ "${pkgdir}/usr/share/qemu/edk2-x86_64-code.fd"
+ ln -sfv "/usr/share/${pkgname}/${_arch,,}/OVMF_VARS.fd" \
+ "${pkgdir}/usr/share/qemu/edk2-x86_64-vars.fd"
+ ln -sfv "/usr/share/${pkgname}/${_arch,,}/OVMF_CODE.secboot.fd" \
+ "${pkgdir}/usr/share/qemu/edk2-x86_64-secure-code.fd"
+ fi
+ done
+ # adding a symlink for legacy applications
+ ln -svf "/usr/share/${pkgname}" "${pkgdir}/usr/share/OVMF"
+ # licenses
+ install -vDm 644 License.txt -t "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -vDm 644 OvmfPkg/License.txt "${pkgdir}/usr/share/licenses/${pkgname}/OvmfPkg.License.txt"
+ # docs
+ install -vDm 644 {OvmfPkg/README,Readme.md,Maintainers.txt} \
+ -t "${pkgdir}/usr/share/doc/${pkgname}"
+}
More information about the arch-commits
mailing list