diff --git a/tools/packaging/kata-deploy/local-build/kata-deploy-binaries.sh b/tools/packaging/kata-deploy/local-build/kata-deploy-binaries.sh index a34bc06a36..f4228e089d 100755 --- a/tools/packaging/kata-deploy/local-build/kata-deploy-binaries.sh +++ b/tools/packaging/kata-deploy/local-build/kata-deploy-binaries.sh @@ -48,6 +48,7 @@ ARTEFACT_REGISTRY_USERNAME="${ARTEFACT_REGISTRY_USERNAME:-}" ARTEFACT_REGISTRY_PASSWORD="${ARTEFACT_REGISTRY_PASSWORD:-}" TARGET_BRANCH="${TARGET_BRANCH:-main}" PUSH_TO_REGISTRY="${PUSH_TO_REGISTRY:-}" +KERNEL_HEADERS_PKG_TYPE="${KERNEL_HEADERS_PKG_TYPE:-deb}" workdir="${WORKDIR:-$PWD}" @@ -127,6 +128,15 @@ EOF exit "${return_code}" } +get_kernel_headers_dir() { + local kernel_name"=${1:-}" + [ -z "${kernel_name}" ] && die "kernel name is a required argument" + + local kernel_headers_dir="${repo_root_dir}/tools/packaging/kata-deploy/local-build/build/${kernel_name}/builddir" + + echo "${kernel_headers_dir}" +} + get_kernel_modules_dir() { local kernel_version="${1:-}" local kernel_kata_config_version="${2:-}" @@ -459,6 +469,12 @@ install_kernel_helper() { extra_tarballs="${kernel_modules_tarball_name}:${kernel_modules_tarball_path}" fi + if [[ "${kernel_name}" == "kernel-nvidia-gpu*" ]]; then + local kernel_headers_tarball_name="kata-static-${kernel_name}-headers.tar.xz" + local kernel_headers_tarball_path="${workdir}/${kernel_headers_tarball_name}" + extra_tarballs+=" ${kernel_headers_tarball_name}:${kernel_headers_tarball_path}" + fi + default_patches_dir="${repo_root_dir}/tools/packaging/kernel/patches" install_cached_kernel_tarball_component ${kernel_name} ${extra_tarballs} && return 0 @@ -1053,6 +1069,19 @@ handle_build() { tar tvf "${final_tarball_path}" case ${build_target} in + kernel-nvidia-gpu*) + local kernel_headers_final_tarball_path="${workdir}/kata-static-${build_target}-headers.tar.xz" + if [ ! -f "${kernel_headers_final_tarball_path}" ]; then + local kernel_headers_dir + kernel_headers_dir=$(get_kernel_headers_dir "${build_target}") + + pushd "${kernel_headers_dir}" + find . -type f -name "*.${KERNEL_HEADERS_PKG_TYPE}" -exec sudo tar cvfJ "${kernel_headers_final_tarball_path}" {} + + popd + fi + tar tvf "${kernel_headers_final_tarball_path}" + ;;& # fallthrough in the confidential case we need the modules.tar.xz and for every kernel-nvidia-gpu we need the headers + kernel*-confidential) local modules_final_tarball_path="${workdir}/kata-static-${build_target}-modules.tar.xz" if [ ! -f "${modules_final_tarball_path}" ]; then @@ -1083,6 +1112,16 @@ handle_build() { echo "${ARTEFACT_REGISTRY_PASSWORD}" | sudo oras login "${ARTEFACT_REGISTRY}" -u "${ARTEFACT_REGISTRY_USERNAME}" --password-stdin case ${build_target} in + kernel-nvidia-gpu*) + sudo oras push \ + ${ARTEFACT_REGISTRY}/kata-containers/cached-artefacts/${build_target}:latest-${TARGET_BRANCH}-$(uname -m) \ + ${final_tarball_name} \ + "kata-static-${build_target}-modules.tar.xz" \ + "kata-static-${build_target}-headers.tar.xz" \ + ${build_target}-version \ + ${build_target}-builder-image-version \ + ${build_target}-sha256sum + ;; kernel*-confidential) sudo oras push \ ${ARTEFACT_REGISTRY}/kata-containers/cached-artefacts/${build_target}:latest-${TARGET_BRANCH}-$(uname -m) \ diff --git a/tools/packaging/kernel/kata_config_version b/tools/packaging/kernel/kata_config_version index a949a93dfc..b0d73241ca 100644 --- a/tools/packaging/kernel/kata_config_version +++ b/tools/packaging/kernel/kata_config_version @@ -1 +1 @@ -128 +129