mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-05-01 05:04:26 +00:00
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:
parent
2c238c8504
commit
f0b58e38d2
21
tools/packaging/static-build/ovmf/Dockerfile
Normal file
21
tools/packaging/static-build/ovmf/Dockerfile
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# Copyright (c) 2022 IBM
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
FROM ubuntu:20.04
|
||||||
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
RUN apt-get update && \
|
||||||
|
apt-get install -y --no-install-recommends \
|
||||||
|
ca-certificates \
|
||||||
|
curl \
|
||||||
|
g++ \
|
||||||
|
gcc \
|
||||||
|
git \
|
||||||
|
iasl \
|
||||||
|
make \
|
||||||
|
nasm \
|
||||||
|
python \
|
||||||
|
python3 \
|
||||||
|
uuid-dev && \
|
||||||
|
apt-get clean && rm -rf /var/lib/lists/
|
61
tools/packaging/static-build/ovmf/build-ovmf.sh
Executable file
61
tools/packaging/static-build/ovmf/build-ovmf.sh
Executable 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"
|
53
tools/packaging/static-build/ovmf/build.sh
Executable file
53
tools/packaging/static-build/ovmf/build.sh
Executable file
@ -0,0 +1,53 @@
|
|||||||
|
#!/usr/bin/env 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)"
|
||||||
|
readonly repo_root_dir="$(cd "${script_dir}/../../../.." && pwd)"
|
||||||
|
readonly ovmf_builder="${script_dir}/build-ovmf.sh"
|
||||||
|
|
||||||
|
source "${script_dir}/../../scripts/lib.sh"
|
||||||
|
|
||||||
|
DESTDIR=${DESTDIR:-${PWD}}
|
||||||
|
PREFIX=${PREFIX:-/opt/kata}
|
||||||
|
container_image="kata-ovmf-builder"
|
||||||
|
ovmf_build="${ovmf_build:-x86_64}"
|
||||||
|
kata_version="${kata_version:-}"
|
||||||
|
ovmf_repo="${ovmf_repo:-}"
|
||||||
|
ovmf_version="${ovmf_version:-}"
|
||||||
|
ovmf_package="${ovmf_package:-}"
|
||||||
|
package_output_dir="${package_output_dir:-}"
|
||||||
|
|
||||||
|
if [ -z "$ovmf_repo" ]; then
|
||||||
|
ovmf_repo=$(get_from_kata_deps "externals.ovmf.url" "${kata_version}")
|
||||||
|
fi
|
||||||
|
|
||||||
|
[ -n "$ovmf_repo" ] || die "failed to get ovmf repo"
|
||||||
|
|
||||||
|
if [ "${ovmf_build}" == "x86_64" ]; then
|
||||||
|
[ -n "$ovmf_version" ] || ovmf_version=$(get_from_kata_deps "externals.ovmf.x86_64.version" "${kata_version}")
|
||||||
|
[ -n "$ovmf_package" ] || ovmf_package=$(get_from_kata_deps "externals.ovmf.x86_64.package" "${kata_version}")
|
||||||
|
[ -n "$package_output_dir" ] || package_output_dir=$(get_from_kata_deps "externals.ovmf.x86_64.package_output_dir" "${kata_version}")
|
||||||
|
fi
|
||||||
|
|
||||||
|
[ -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"
|
||||||
|
|
||||||
|
sudo docker build -t "${container_image}" "${script_dir}"
|
||||||
|
|
||||||
|
sudo docker run --rm -i -v "${repo_root_dir}:${repo_root_dir}" \
|
||||||
|
-w "${PWD}" \
|
||||||
|
--env DESTDIR="${DESTDIR}" --env PREFIX="${PREFIX}" \
|
||||||
|
--env ovmf_repo="${ovmf_repo}" \
|
||||||
|
--env ovmf_version="${ovmf_version}" \
|
||||||
|
--env ovmf_package="${ovmf_package}" \
|
||||||
|
--env package_output_dir="${package_output_dir}" \
|
||||||
|
"${container_image}" \
|
||||||
|
bash -c "${ovmf_builder}"
|
@ -243,6 +243,15 @@ externals:
|
|||||||
url: "https://github.com/containerd/nydus-snapshotter"
|
url: "https://github.com/containerd/nydus-snapshotter"
|
||||||
version: "v0.1.0"
|
version: "v0.1.0"
|
||||||
|
|
||||||
|
ovmf:
|
||||||
|
description: "Firmware, implementation of UEFI for virtual machines."
|
||||||
|
url: "https://github.com/tianocore/edk2"
|
||||||
|
x86_64:
|
||||||
|
description: "Vanilla firmware build"
|
||||||
|
version: "edk2-stable202202"
|
||||||
|
package: "OvmfPkg/OvmfPkgX64.dsc"
|
||||||
|
package_output_dir: "OvmfX64"
|
||||||
|
|
||||||
virtiofsd:
|
virtiofsd:
|
||||||
description: "vhost-user virtio-fs device backend written in Rust"
|
description: "vhost-user virtio-fs device backend written in Rust"
|
||||||
url: "https://gitlab.com/virtio-fs/virtiofsd"
|
url: "https://gitlab.com/virtio-fs/virtiofsd"
|
||||||
|
Loading…
Reference in New Issue
Block a user