static-build: Add build script for OVMF

Introduces a build script for OVMF. Defaults to X86_64 build (x64 in OVMF)

Fixes: #4169

Signed-off-by: Alex Carter <alex.carter@ibm.com>
This commit is contained in:
Alex Carter
2022-04-25 10:08:22 -05:00
parent 2c238c8504
commit f0b58e38d2
4 changed files with 144 additions and 0 deletions

View File

@@ -0,0 +1,61 @@
#!/bin/bash
#
# Copyright (c) 2022 IBM
#
# SPDX-License-Identifier: Apache-2.0
set -o errexit
set -o nounset
set -o pipefail
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "${script_dir}/../../scripts/lib.sh"
# disabling set -u because scripts attempt to expand undefined variables
set +u
ovmf_repo="${ovmf_repo:-}"
ovmf_dir="edk2"
ovmf_version="${ovmf_version:-}"
ovmf_package="${ovmf_package:-}"
package_output_dir="${package_output_dir:-}"
DESTDIR=${DESTDIR:-${PWD}}
PREFIX="${PREFIX:-/opt/kata}"
architecture="${architecture:-X64}"
toolchain="${toolchain:-GCC5}"
build_target="${build_target:-RELEASE}"
[ -n "$ovmf_repo" ] || die "failed to get ovmf repo"
[ -n "$ovmf_version" ] || die "failed to get ovmf version or commit"
[ -n "$ovmf_package" ] || die "failed to get ovmf package or commit"
[ -n "$package_output_dir" ] || die "failed to get ovmf package or commit"
info "Build ${ovmf_repo} version: ${ovmf_version}"
build_root=$(mktemp -d)
pushd $build_root
git clone "${ovmf_repo}"
cd "${ovmf_dir}"
git checkout "${ovmf_version}"
git submodule init
git submodule update
info "Using BaseTools make target"
make -C BaseTools/
info "Calling edksetup script"
source edksetup.sh
info "Building ovmf"
build -b "${build_target}" -t "${toolchain}" -a "${architecture}" -p "${ovmf_package}"
info "Done Building"
build_path="Build/${package_output_dir}/${build_target}_${toolchain}/FV/OVMF.fd"
stat "${build_path}"
#need to leave tmp dir
popd
info "Install fd to destdir"
mkdir -p "$DESTDIR/$PREFIX/share/ovmf"
cp $build_root/$ovmf_dir/"${build_path}" "$DESTDIR/$PREFIX/share/ovmf"