diff --git a/tools/packaging/kata-deploy/local-build/kata-deploy-binaries-in-docker.sh b/tools/packaging/kata-deploy/local-build/kata-deploy-binaries-in-docker.sh index 50cd797c3f..91a1f5abc0 100755 --- a/tools/packaging/kata-deploy/local-build/kata-deploy-binaries-in-docker.sh +++ b/tools/packaging/kata-deploy/local-build/kata-deploy-binaries-in-docker.sh @@ -16,8 +16,6 @@ kata_deploy_create="${script_dir}/kata-deploy-binaries.sh" uid=$(id -u ${USER}) gid=$(id -g ${USER}) -source "${script_dir}/../../scripts/lib.sh" - if [ "${script_dir}" != "${PWD}" ]; then ln -sf "${script_dir}/build" "${PWD}/build" fi @@ -39,17 +37,12 @@ if [ ! -d "$HOME/.docker" ]; then remove_dot_docker_dir=true fi -container_image="${CC_BUILDER_REGISTRY}:build-kata-deploy-$(get_last_modification ${kata_dir} ${script_dir})" - -docker pull "${container_image}" || \ - (docker build -q -t "${container_image}" \ - --build-arg IMG_USER="${USER}" \ - --build-arg UID=${uid} \ - --build-arg GID=${gid} \ - --build-arg HOST_DOCKER_GID=${docker_gid} \ - "${script_dir}/dockerbuild/" && \ - # No-op unless PUSH_TO_REGISTRY is exported as "yes" - push_to_registry "${container_image}" "no") +docker build -q -t build-kata-deploy \ + --build-arg IMG_USER="${USER}" \ + --build-arg UID=${uid} \ + --build-arg GID=${gid} \ + --build-arg HOST_DOCKER_GID=${docker_gid} \ + "${script_dir}/dockerbuild/" docker run \ --privileged \ @@ -67,7 +60,7 @@ docker run \ -v "${kata_dir}:${kata_dir}" \ --rm \ -w ${script_dir} \ - "${container_image}" "${kata_deploy_create}" $@ + build-kata-deploy "${kata_deploy_create}" $@ if [ $remove_dot_docker_dir == true ]; then rm -rf "$HOME/.docker" diff --git a/tools/packaging/scripts/lib.sh b/tools/packaging/scripts/lib.sh index 43e9d4c113..798d43fd5b 100644 --- a/tools/packaging/scripts/lib.sh +++ b/tools/packaging/scripts/lib.sh @@ -126,7 +126,7 @@ get_last_modification() { git config --global --add safe.directory ${repo_root_dir} &> /dev/null dirty="" - [ $(git status --porcelain | grep "${file}" | wc -l) -gt 0 ] && dirty="-dirty" + [ $(git status --porcelain | grep "${file#${repo_root_dir}/}" | wc -l) -gt 0 ] && dirty="-dirty" echo "$(git log -1 --pretty=format:"%H" ${file})${dirty}" } diff --git a/tools/packaging/static-build/initramfs/Dockerfile b/tools/packaging/static-build/initramfs/Dockerfile index 3e8e10b4c5..8d3396e767 100644 --- a/tools/packaging/static-build/initramfs/Dockerfile +++ b/tools/packaging/static-build/initramfs/Dockerfile @@ -4,6 +4,13 @@ from ubuntu:20.04 ARG DEBIAN_FRONTEND=noninteractive +ARG cryptsetup_repo=${cryptsetup_repo} +ARG cryptsetup_version=${cryptsetup_version} +ARG lvm2_repo=${lvm2_repo} +ARG lvm2_version=${lvm2_version} + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + ENV TZ=UTC RUN apt-get update &&\ apt-get --no-install-recommends install -y software-properties-common &&\ @@ -35,4 +42,31 @@ RUN apt-get update &&\ libseccomp-dev \ libseccomp2 \ zlib1g-dev &&\ - apt-get clean && rm -rf /var/lib/apt/lists/ + apt-get clean && rm -rf /var/lib/apt/lists/ && \ + build_root=$(mktemp -d) && \ + pushd ${build_root} && \ + echo "Build ${lvm2_repo} version: ${lvm2_version}" && \ + git clone --depth 1 --branch "${lvm2_version}" "${lvm2_repo}" lvm2 && \ + pushd lvm2 && \ + ./configure --enable-static_link --disable-selinux && \ + make && make install && \ + cp ./libdm/libdevmapper.pc /usr/lib/pkgconfig/devmapper.pc && \ + popd && \ + echo "Build ${cryptsetup_repo} version: ${cryptsetup_version}" && \ + git clone --depth 1 --branch "${cryptsetup_version}" "${cryptsetup_repo}" cryptsetup && \ + pushd cryptsetup && \ + ./autogen.sh && \ + ./configure --enable-static --enable-static-cryptsetup --disable-udev --disable-external-tokens --disable-ssh-token && \ + make && make install && \ + strip /usr/sbin/veritysetup.static && \ + popd && \ + echo "Build gen_init_cpio tool" && \ + git clone --depth 1 --filter=blob:none --sparse https://github.com/torvalds/linux.git && \ + pushd linux && \ + git sparse-checkout add usr && cd usr && make gen_init_cpio && \ + install gen_init_cpio /usr/sbin/ && \ + popd && \ + popd && \ + rm -rf ${build_root} + +COPY init.sh /usr/sbin/init.sh diff --git a/tools/packaging/static-build/initramfs/build-initramfs.sh b/tools/packaging/static-build/initramfs/build-initramfs.sh index a011e9822a..4fa370d12b 100755 --- a/tools/packaging/static-build/initramfs/build-initramfs.sh +++ b/tools/packaging/static-build/initramfs/build-initramfs.sh @@ -12,44 +12,4 @@ script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "${script_dir}/../../scripts/lib.sh" install_dir="${1:-.}" -cryptsetup_repo="${cryptsetup_repo:-}" -cryptsetup_version="${cryptsetup_version:-}" -lvm2_repo="${lvm2_repo:-}" -lvm2_version="${lvm2_version:-}" - -[ -n "${cryptsetup_repo}" ] || die "Failed to get cryptsetup repo" -[ -n "${cryptsetup_version}" ] || die "Failed to get cryptsetup version" -[ -n "${lvm2_repo}" ] || die "Failed to get lvm2 repo" -[ -n "${lvm2_version}" ] || die "Failed to get lvm2 version" - -build_root=$(mktemp -d) -pushd ${build_root} - -info "Build ${lvm2_repo} version: ${lvm2_version}" -git clone --depth 1 --branch "${lvm2_version}" "${lvm2_repo}" lvm2 -pushd lvm2 -./configure --enable-static_link --disable-selinux -make && make install -cp ./libdm/libdevmapper.pc /usr/lib/pkgconfig/devmapper.pc -popd #lvm2 - -info "Build ${cryptsetup_repo} version: ${cryptsetup_version}" -git clone --depth 1 --branch "${cryptsetup_version}" "${cryptsetup_repo}" cryptsetup -pushd cryptsetup -./autogen.sh -./configure --enable-static --enable-static-cryptsetup --disable-udev --disable-external-tokens --disable-ssh-token -make && make install -strip /usr/sbin/veritysetup.static -popd #cryptsetup - -info "Build gen_init_cpio tool" -git clone --depth 1 --filter=blob:none --sparse https://github.com/torvalds/linux.git -pushd linux -git sparse-checkout add usr && cd usr && make gen_init_cpio -install gen_init_cpio /usr/sbin/ -popd #linux - -popd #${build_root} - -install "${script_dir}/init.sh" /usr/sbin/ gen_init_cpio "${script_dir}/initramfs.list" | gzip -9 -n > "${install_dir}"/initramfs.cpio.gz diff --git a/tools/packaging/static-build/initramfs/build.sh b/tools/packaging/static-build/initramfs/build.sh index 96d09763c3..acbbc10e9d 100755 --- a/tools/packaging/static-build/initramfs/build.sh +++ b/tools/packaging/static-build/initramfs/build.sh @@ -32,18 +32,18 @@ package_output_dir="${package_output_dir:-}" [ -n "${lvm2_repo}" ] || die "Failed to get lvm2 repo" [ -n "${lvm2_version}" ] || die "Failed to get lvm2 version" -container_image="${CC_BUILDER_REGISTRY}:initramfs-cryptsetup-${cryptsetup_version}-lvm2-${lvm2_version}-$(get_last_modification ${repo_root_dir} ${script_dir})" +container_image="${CC_BUILDER_REGISTRY}:initramfs-cryptsetup-${cryptsetup_version}-lvm2-${lvm2_version}-$(get_last_modification ${repo_root_dir} ${script_dir})-$(uname -m)" sudo docker pull ${container_image} || (sudo docker build \ + --build-arg cryptsetup_repo="${cryptsetup_repo}" \ + --build-arg cryptsetup_version="${cryptsetup_version}" \ + --build-arg lvm2_repo="${lvm2_repo}" \ + --build-arg lvm2_version="${lvm2_version}" \ -t "${container_image}" "${script_dir}" && \ # No-op unless PUSH_TO_REGISTRY is exported as "yes" push_to_registry "${container_image}") sudo docker run --rm -i -v "${repo_root_dir}:${repo_root_dir}" \ -w "${PWD}" \ - --env cryptsetup_repo="${cryptsetup_repo}" \ - --env cryptsetup_version="${cryptsetup_version}" \ - --env lvm2_repo="${lvm2_repo}" \ - --env lvm2_version="${lvm2_version}" \ "${container_image}" \ bash -c "${initramfs_builder} ${default_install_dir}" diff --git a/tools/packaging/static-build/kernel/build.sh b/tools/packaging/static-build/kernel/build.sh index 4206decffa..cb723d4109 100755 --- a/tools/packaging/static-build/kernel/build.sh +++ b/tools/packaging/static-build/kernel/build.sh @@ -16,7 +16,7 @@ source "${script_dir}/../../scripts/lib.sh" DESTDIR=${DESTDIR:-${PWD}} PREFIX=${PREFIX:-/opt/kata} -container_image="${CC_BUILDER_REGISTRY}:kernel-$(get_last_modification ${repo_root_dir} ${script_dir})" +container_image="${CC_BUILDER_REGISTRY}:kernel-$(get_last_modification ${repo_root_dir} ${script_dir})-$(uname -m)" sudo docker pull ${container_image} || \ (sudo docker build -t "${container_image}" "${script_dir}" && \ diff --git a/tools/packaging/static-build/ovmf/build.sh b/tools/packaging/static-build/ovmf/build.sh index 16a52756ab..dbaa79b0f8 100755 --- a/tools/packaging/static-build/ovmf/build.sh +++ b/tools/packaging/static-build/ovmf/build.sh @@ -16,7 +16,7 @@ source "${script_dir}/../../scripts/lib.sh" DESTDIR=${DESTDIR:-${PWD}} PREFIX=${PREFIX:-/opt/kata} -container_image="${CC_BUILDER_REGISTRY}:ovmf-$(get_last_modification ${repo_root_dir} ${script_dir})" +container_image="${CC_BUILDER_REGISTRY}:ovmf-$(get_last_modification ${repo_root_dir} ${script_dir})-$(uname -m)" ovmf_build="${ovmf_build:-x86_64}" kata_version="${kata_version:-}" ovmf_repo="${ovmf_repo:-}" diff --git a/tools/packaging/static-build/qemu/build-base-qemu.sh b/tools/packaging/static-build/qemu/build-base-qemu.sh index 7bc6805d10..2c66f10852 100755 --- a/tools/packaging/static-build/qemu/build-base-qemu.sh +++ b/tools/packaging/static-build/qemu/build-base-qemu.sh @@ -39,7 +39,7 @@ CACHE_TIMEOUT=$(date +"%Y-%m-%d") [ -n "${build_suffix}" ] && HYPERVISOR_NAME="kata-qemu-${build_suffix}" || HYPERVISOR_NAME="kata-qemu" [ -n "${build_suffix}" ] && PKGVERSION="kata-static-${build_suffix}" || PKGVERSION="kata-static" -container_image="${CC_BUILDER_REGISTRY}:qemu-$(get_last_modification ${repo_root_dir} ${script_dir})" +container_image="${CC_BUILDER_REGISTRY}:qemu-$(get_last_modification ${repo_root_dir} ${script_dir})-$(uname -m)" sudo docker pull ${container_image} || \ (sudo "${container_engine}" build \ diff --git a/tools/packaging/static-build/shim-v2/build.sh b/tools/packaging/static-build/shim-v2/build.sh index 564e5cb9a5..b14a68047a 100755 --- a/tools/packaging/static-build/shim-v2/build.sh +++ b/tools/packaging/static-build/shim-v2/build.sh @@ -19,7 +19,7 @@ RUST_VERSION=${RUST_VERSION:-} DESTDIR=${DESTDIR:-${PWD}} PREFIX=${PREFIX:-/opt/kata} -container_image="${CC_BUILDER_REGISTRY}:shim-v2-go-${GO_VERSION}-rust-${RUST_VERSION}-$(get_last_modification ${repo_root_dir} ${script_dir})" +container_image="${CC_BUILDER_REGISTRY}:shim-v2-go-${GO_VERSION}-rust-${RUST_VERSION}-$(get_last_modification ${repo_root_dir} ${script_dir})-$(uname -m)" EXTRA_OPTS="${EXTRA_OPTS:-""}" REMOVE_VMM_CONFIGS="${REMOVE_VMM_CONFIGS:-""}" diff --git a/tools/packaging/static-build/td-shim/build.sh b/tools/packaging/static-build/td-shim/build.sh index 8a6c978afb..803ec644ae 100755 --- a/tools/packaging/static-build/td-shim/build.sh +++ b/tools/packaging/static-build/td-shim/build.sh @@ -30,7 +30,7 @@ package_output_dir="${package_output_dir:-}" [ -n "${tdshim_version}" ] || die "Failed to get TD-shim version or commit" [ -n "${tdshim_toolchain}" ] || die "Failed to get TD-shim toolchain to be used to build the project" -container_image="${CC_BUILDER_REGISTRY}:td-shim-${tdshim_toolchain}-$(get_last_modification ${repo_root_dir} ${script_dir})" +container_image="${CC_BUILDER_REGISTRY}:td-shim-${tdshim_toolchain}-$(get_last_modification ${repo_root_dir} ${script_dir})-$(uname -m)" sudo docker pull ${container_image} || \ (sudo docker build \ diff --git a/tools/packaging/static-build/virtiofsd/build.sh b/tools/packaging/static-build/virtiofsd/build.sh index 18b50a79e2..1b7d3e32b8 100755 --- a/tools/packaging/static-build/virtiofsd/build.sh +++ b/tools/packaging/static-build/virtiofsd/build.sh @@ -49,7 +49,7 @@ case ${ARCH} in ;; esac -container_image="${CC_BUILDER_REGISTRY}:virtiofsd-${virtiofsd_toolchain}-${libc}-$(get_last_modification ${repo_root_dir} ${script_dir})" +container_image="${CC_BUILDER_REGISTRY}:virtiofsd-${virtiofsd_toolchain}-${libc}-$(get_last_modification ${repo_root_dir} ${script_dir})-$(uname -m)" sudo docker pull ${container_image} || \ (sudo docker build \