🔒 Repository is read-only – file editing is disabled.

recipes/utils/ovmf/PAGBUILD.yaml main

200 linii Raw ← Powrót
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