mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-04-28 11:44:38 +00:00
build: Allow users to build the go, rust, or both runtimes
Let's add a RUNTIME_CHOICE env var that can be passed to be build scripts, which allows the user to select whether they bulld the go runtime, the rust runtime, or both. Signed-off-by: Fabiano Fidêncio <fidencio@northflank.com>
This commit is contained in:
parent
8b49564c01
commit
7e9e9263d1
@ -108,6 +108,7 @@ KBUILD_SIGN_PIN=${KBUILD_SIGN_PIN:-}
|
|||||||
GUEST_HOOKS_TARBALL_NAME="${GUEST_HOOKS_TARBALL_NAME:-}"
|
GUEST_HOOKS_TARBALL_NAME="${GUEST_HOOKS_TARBALL_NAME:-}"
|
||||||
EXTRA_PKGS="${EXTRA_PKGS:-}"
|
EXTRA_PKGS="${EXTRA_PKGS:-}"
|
||||||
AGENT_POLICY="${AGENT_POLICY:-yes}"
|
AGENT_POLICY="${AGENT_POLICY:-yes}"
|
||||||
|
RUNTIME_CHOICE="${RUNTIME_CHOICE:-both}"
|
||||||
|
|
||||||
docker run \
|
docker run \
|
||||||
-v $HOME/.docker:/root/.docker \
|
-v $HOME/.docker:/root/.docker \
|
||||||
@ -143,6 +144,7 @@ docker run \
|
|||||||
--env GUEST_HOOKS_TARBALL_NAME="${GUEST_HOOKS_TARBALL_NAME}" \
|
--env GUEST_HOOKS_TARBALL_NAME="${GUEST_HOOKS_TARBALL_NAME}" \
|
||||||
--env EXTRA_PKGS="${EXTRA_PKGS}" \
|
--env EXTRA_PKGS="${EXTRA_PKGS}" \
|
||||||
--env AGENT_POLICY="${AGENT_POLICY}" \
|
--env AGENT_POLICY="${AGENT_POLICY}" \
|
||||||
|
--env RUNTIME_CHOICE="${RUNTIME_CHOICE}" \
|
||||||
--env AA_KBC="${AA_KBC:-}" \
|
--env AA_KBC="${AA_KBC:-}" \
|
||||||
--env HKD_PATH="$(realpath "${HKD_PATH:-}" 2> /dev/null || true)" \
|
--env HKD_PATH="$(realpath "${HKD_PATH:-}" 2> /dev/null || true)" \
|
||||||
--env SE_KERNEL_PARAMS="${SE_KERNEL_PARAMS:-}" \
|
--env SE_KERNEL_PARAMS="${SE_KERNEL_PARAMS:-}" \
|
||||||
|
@ -57,6 +57,7 @@ PUSH_TO_REGISTRY="${PUSH_TO_REGISTRY:-}"
|
|||||||
KERNEL_HEADERS_PKG_TYPE="${KERNEL_HEADERS_PKG_TYPE:-deb}"
|
KERNEL_HEADERS_PKG_TYPE="${KERNEL_HEADERS_PKG_TYPE:-deb}"
|
||||||
RELEASE="${RELEASE:-"no"}"
|
RELEASE="${RELEASE:-"no"}"
|
||||||
KBUILD_SIGN_PIN="${KBUILD_SIGN_PIN:-}"
|
KBUILD_SIGN_PIN="${KBUILD_SIGN_PIN:-}"
|
||||||
|
RUNTIME_CHOICE="${RUNTIME_CHOICE:-both}"
|
||||||
|
|
||||||
workdir="${WORKDIR:-$PWD}"
|
workdir="${WORKDIR:-$PWD}"
|
||||||
|
|
||||||
@ -897,6 +898,7 @@ install_shimv2() {
|
|||||||
export GO_VERSION
|
export GO_VERSION
|
||||||
export RUST_VERSION
|
export RUST_VERSION
|
||||||
export MEASURED_ROOTFS
|
export MEASURED_ROOTFS
|
||||||
|
export RUNTIME_CHOICE
|
||||||
|
|
||||||
DESTDIR="${destdir}" PREFIX="${prefix}" "${shimv2_builder}"
|
DESTDIR="${destdir}" PREFIX="${prefix}" "${shimv2_builder}"
|
||||||
}
|
}
|
||||||
|
@ -18,12 +18,23 @@ GO_VERSION=${GO_VERSION}
|
|||||||
RUST_VERSION=${RUST_VERSION}
|
RUST_VERSION=${RUST_VERSION}
|
||||||
CC=""
|
CC=""
|
||||||
|
|
||||||
|
RUNTIME_CHOICE="${RUNTIME_CHOICE:-both}"
|
||||||
DESTDIR=${DESTDIR:-${PWD}}
|
DESTDIR=${DESTDIR:-${PWD}}
|
||||||
PREFIX=${PREFIX:-/opt/kata}
|
PREFIX=${PREFIX:-/opt/kata}
|
||||||
container_image="${SHIM_V2_CONTAINER_BUILDER:-$(get_shim_v2_image_name)}"
|
container_image="${SHIM_V2_CONTAINER_BUILDER:-$(get_shim_v2_image_name)}"
|
||||||
|
|
||||||
EXTRA_OPTS="${EXTRA_OPTS:-""}"
|
EXTRA_OPTS="${EXTRA_OPTS:-""}"
|
||||||
|
|
||||||
|
case "${RUNTIME_CHOICE}" in
|
||||||
|
"go"|"rust"|"both")
|
||||||
|
echo "Building ${RUNTIME_CHOICE} runtime(s)"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Invalid option for RUNTIME_CHOICE: ${RUNTIME_CHOICE}"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
[ "${CROSS_BUILD}" == "true" ] && container_image_bk="${container_image}" && container_image="${container_image}-cross-build"
|
[ "${CROSS_BUILD}" == "true" ] && container_image_bk="${container_image}" && container_image="${container_image}-cross-build"
|
||||||
if [ "${MEASURED_ROOTFS}" == "yes" ]; then
|
if [ "${MEASURED_ROOTFS}" == "yes" ]; then
|
||||||
info "Enable rootfs measurement config"
|
info "Enable rootfs measurement config"
|
||||||
@ -53,40 +64,48 @@ if [ ${arch} = "ppc64le" ]; then
|
|||||||
arch="ppc64"
|
arch="ppc64"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#Build rust project using cross build musl image to speed up
|
case "${RUNTIME_CHOICE}" in
|
||||||
[[ "${CROSS_BUILD}" == "true" && ${ARCH} != "s390x" ]] && container_image="messense/rust-musl-cross:${GCC_ARCH}-musl" && CC=${GCC_ARCH}-unknown-linux-musl-gcc
|
"rust"|"both")
|
||||||
|
#Build rust project using cross build musl image to speed up
|
||||||
|
[[ "${CROSS_BUILD}" == "true" && ${ARCH} != "s390x" ]] && container_image="messense/rust-musl-cross:${GCC_ARCH}-musl" && CC=${GCC_ARCH}-unknown-linux-musl-gcc
|
||||||
|
|
||||||
docker run --rm -i -v "${repo_root_dir}:${repo_root_dir}" \
|
docker run --rm -i -v "${repo_root_dir}:${repo_root_dir}" \
|
||||||
--env CROSS_BUILD=${CROSS_BUILD} \
|
--env CROSS_BUILD=${CROSS_BUILD} \
|
||||||
--env ARCH=${ARCH} \
|
--env ARCH=${ARCH} \
|
||||||
--env CC="${CC}" \
|
--env CC="${CC}" \
|
||||||
-w "${repo_root_dir}/src/runtime-rs" \
|
-w "${repo_root_dir}/src/runtime-rs" \
|
||||||
--user "$(id -u)":"$(id -g)" \
|
--user "$(id -u)":"$(id -g)" \
|
||||||
"${container_image}" \
|
"${container_image}" \
|
||||||
bash -c "make clean-generated-files && make PREFIX=${PREFIX} QEMUCMD=qemu-system-${arch}"
|
bash -c "make clean-generated-files && make PREFIX=${PREFIX} QEMUCMD=qemu-system-${arch}"
|
||||||
|
|
||||||
docker run --rm -i -v "${repo_root_dir}:${repo_root_dir}" \
|
docker run --rm -i -v "${repo_root_dir}:${repo_root_dir}" \
|
||||||
--env CROSS_BUILD=${CROSS_BUILD} \
|
--env CROSS_BUILD=${CROSS_BUILD} \
|
||||||
--env ARCH=${ARCH} \
|
--env ARCH=${ARCH} \
|
||||||
--env CC="${CC}" \
|
--env CC="${CC}" \
|
||||||
-w "${repo_root_dir}/src/runtime-rs" \
|
-w "${repo_root_dir}/src/runtime-rs" \
|
||||||
--user "$(id -u)":"$(id -g)" \
|
--user "$(id -u)":"$(id -g)" \
|
||||||
"${container_image}" \
|
"${container_image}" \
|
||||||
bash -c "make PREFIX="${PREFIX}" DESTDIR="${DESTDIR}" install"
|
bash -c "make PREFIX="${PREFIX}" DESTDIR="${DESTDIR}" install"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
[ "${CROSS_BUILD}" == "true" ] && container_image="${container_image_bk}-cross-build"
|
case "${RUNTIME_CHOICE}" in
|
||||||
|
"go"|"both")
|
||||||
|
[ "${CROSS_BUILD}" == "true" ] && container_image="${container_image_bk}-cross-build"
|
||||||
|
|
||||||
docker run --rm -i -v "${repo_root_dir}:${repo_root_dir}" \
|
docker run --rm -i -v "${repo_root_dir}:${repo_root_dir}" \
|
||||||
-w "${repo_root_dir}/src/runtime" \
|
-w "${repo_root_dir}/src/runtime" \
|
||||||
--user "$(id -u)":"$(id -g)" \
|
--user "$(id -u)":"$(id -g)" \
|
||||||
"${container_image}" \
|
"${container_image}" \
|
||||||
bash -c "make clean-generated-files && make PREFIX=${PREFIX} QEMUCMD=qemu-system-${arch} ${EXTRA_OPTS}"
|
bash -c "make clean-generated-files && make PREFIX=${PREFIX} QEMUCMD=qemu-system-${arch} ${EXTRA_OPTS}"
|
||||||
|
|
||||||
docker run --rm -i -v "${repo_root_dir}:${repo_root_dir}" \
|
docker run --rm -i -v "${repo_root_dir}:${repo_root_dir}" \
|
||||||
-w "${repo_root_dir}/src/runtime" \
|
-w "${repo_root_dir}/src/runtime" \
|
||||||
--user "$(id -u)":"$(id -g)" \
|
--user "$(id -u)":"$(id -g)" \
|
||||||
"${container_image}" \
|
"${container_image}" \
|
||||||
bash -c "make PREFIX="${PREFIX}" DESTDIR="${DESTDIR}" ${EXTRA_OPTS} install"
|
bash -c "make PREFIX="${PREFIX}" DESTDIR="${DESTDIR}" ${EXTRA_OPTS} install"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
for vmm in ${VMM_CONFIGS}; do
|
for vmm in ${VMM_CONFIGS}; do
|
||||||
config_file="${DESTDIR}/${PREFIX}/share/defaults/kata-containers/configuration-${vmm}.toml"
|
config_file="${DESTDIR}/${PREFIX}/share/defaults/kata-containers/configuration-${vmm}.toml"
|
||||||
|
Loading…
Reference in New Issue
Block a user