From ecaeb46687142160c6ee69540ce3ad2455eeeaba Mon Sep 17 00:00:00 2001 From: Krzesimir Nowak Date: Wed, 11 Mar 2026 17:13:40 +0100 Subject: [PATCH] scavenge for logs Signed-off-by: Krzesimir Nowak --- build_sdk_container_image | 9 ++++++-- ci-automation/packages.sh | 2 +- ci-automation/sdk_bootstrap.sh | 28 ++++--------------------- sdk_lib/sdk_container_common.sh | 37 +++++++++++++++++++++++++++++++++ 4 files changed, 49 insertions(+), 27 deletions(-) diff --git a/build_sdk_container_image b/build_sdk_container_image index 4cbf5a7b8d..3074c0b112 100755 --- a/build_sdk_container_image +++ b/build_sdk_container_image @@ -185,8 +185,13 @@ else ./run_sdk_container -C "${import_image}" -n "${toolchains_container}" \ sudo ./build_toolchains --seed_tarball="./${tarball}" || failed=x - if [[ -n ${logdir} ]] && sudo test -d __build__/images/catalyst/log/coreos-toolchains; then - sudo cp -a __build__/images/catalyst/log/coreos-toolchains "${logdir}/coreos-toolchains" + if [[ -n ${logdir} ]]; then + if sudo test -d __build__/images/catalyst/log/coreos-toolchains; then + sudo cp -a __build__/images/catalyst/log/coreos-toolchains "${logdir}/coreos-toolchains" + fi + if sudo test -d __build__/images/catalyst/tmp/coreos-toolchains; then + scavenge_for_configure_logs --use-sudo __build__/images/catalyst/tmp/coreos-toolchains "${logdir}" + fi fi if [[ -n ${failed} ]]; then exit 1; fi diff --git a/ci-automation/packages.sh b/ci-automation/packages.sh index 9decf40fd2..e1da4c7e4f 100644 --- a/ci-automation/packages.sh +++ b/ci-automation/packages.sh @@ -96,7 +96,7 @@ function _packages_build_impl() { # Copy the build logs to a directory accessible for us. ./run_sdk_container -n "${packages_container}" -v "${vernum}" -C "${sdk_image}" \ - cp -a "/build/${arch}-usr/var/log/portage" "${logdir}" || : + bash -c "source sdk_lib/sdk_container_common.sh; cp -a /build/${arch@Q}-usr/var/log/portage ${logdir@Q}; scavenge_for_configure_logs /build/${arch@Q}-usr/var/tmp/portage ${logdir@Q}" || : if [[ -z ${failed} ]]; then # run_sdk_container updates the version file, use that version from here on diff --git a/ci-automation/sdk_bootstrap.sh b/ci-automation/sdk_bootstrap.sh index efa99a9f89..ef011ad674 100644 --- a/ci-automation/sdk_bootstrap.sh +++ b/ci-automation/sdk_bootstrap.sh @@ -211,30 +211,10 @@ function _sdk_bootstrap_impl() { if dir_contains_globs "${catalyst_log}" 'stage*'; then cp -a "${catalyst_log}/stage"* "${logdir}" fi - mkdir -p "${logdir}/config-logs" - # TODO: Add more interesting files (meson logs, cmake logs) - local -a interesting_files=( config.log CMakeConfigureLog.yaml meson-log.txt ) find_flags=() - for f in "${interesting_files[@]}"; do - if [[ ${#find_flags[@]} -ne 0 ]]; then - find_flags+=( '-o' ) - fi - find_flags+=( '-name' "${f}" ) - done - local catalyst_tmp='__build__/images/catalyst/tmp/flatcar-sdk' - local -a logs - local l d - mapfile -t logs < <(find "${catalyst_tmp}" "${find_flags[@]}") - for l in "${logs[@]}"; do - d=${l#"${catalyst_tmp}"} - d=${d#/} - if [[ ${d} = */* ]]; then - d=${d%/*} - mkdir -p "${logdir}/config-logs/${d}" - else - d='.' - fi - cp -a "${l}" "${logdir}/config-logs/${d}" - done + ( + source sdk_lib/sdk_container_common.sh + scavenge_for_configure_logs __build__/images/catalyst/tmp/flatcar-sdk "${logdir}" + ) if dir_contains_globs "${logdir}" '*'; then ( cd "${logdir}" diff --git a/sdk_lib/sdk_container_common.sh b/sdk_lib/sdk_container_common.sh index b0f94cfbf6..ca8161c26e 100644 --- a/sdk_lib/sdk_container_common.sh +++ b/sdk_lib/sdk_container_common.sh @@ -305,3 +305,40 @@ function gnupg_ssh_gcloud_mount_opts() { fi fi } + +function scavenge_for_configure_logs() { + local -a sudo_cmd=() + while [[ $# -gt 0 ]]; do + case ${1} in + --use-sudo) sudo_cmd=( sudo ); shift;; + --) shift; break;; + --*) echo "unknown flag for $0: $1" >&2; exit 1;; + *) break;; + esac + done + local dir=${1}; shift + local logdir=${1}; shift + + # TODO: Add more interesting files + local -a interesting_files=( config.log CMakeConfigureLog.yaml meson-log.txt ) find_flags=() + for f in "${interesting_files[@]}"; do + if [[ ${#find_flags[@]} -ne 0 ]]; then + find_flags+=( '-o' ) + fi + find_flags+=( '-name' "${f}" ) + done + local -a logs + local l d + mapfile -t logs < <("${sudo_cmd[@]}" find "${dir}" "${find_flags[@]}") + for l in "${logs[@]}"; do + d=${l#"${dir}"} + d=${d#/} + if [[ ${d} = */* ]]; then + d=${d%/*} + else + d='.' + fi + "${sudo_cmd[@]}" mkdir -p "${logdir}/config-logs/${d}" + "${sudo_cmd[@]}" cp -a "${l}" "${logdir}/config-logs/${d}" + done +}