From bb6975707aa6860ad21857041b5e73143b502114 Mon Sep 17 00:00:00 2001 From: Ricardo Pardini Date: Sun, 29 Jan 2023 23:49:52 +0100 Subject: [PATCH] armbian-next: take a breath: config might mark aggregation required; aggregation requires prepare_host, and thus runs in default-build --- lib/functions/cli/cli-rootfs.sh | 2 +- lib/functions/configuration/aggregation.sh | 4 ++++ lib/functions/main/config-prepare.sh | 8 ++++++-- lib/functions/main/start-end.sh | 8 ++++++++ 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/lib/functions/cli/cli-rootfs.sh b/lib/functions/cli/cli-rootfs.sh index fd76a3bb0..9c684bf30 100644 --- a/lib/functions/cli/cli-rootfs.sh +++ b/lib/functions/cli/cli-rootfs.sh @@ -37,7 +37,7 @@ function cli_rootfs_run() { declare -g -r RELEASE="${RELEASE}" # make readonly for finding who tries to change it declare -g -r NEEDS_BINFMT="yes" # make sure binfmts are installed during prepare_host_interactive - # prep_conf_main_only_rootfs_ni is prep_conf_main_only_rootfs_ni() + aggregate_packages_in_logging_section() . + # prep_conf_main_only_rootfs_ni is prep_conf_main_only_rootfs_ni() + mark_aggregation_required_in_default_build_start() prep_conf_main_only_rootfs_ni < /dev/null # no stdin for this, so it bombs if tries to be interactive. declare -g -r ARCH="${ARCH}" # make readonly for finding who tries to change it diff --git a/lib/functions/configuration/aggregation.sh b/lib/functions/configuration/aggregation.sh index 9cc78b746..52db3d9d7 100644 --- a/lib/functions/configuration/aggregation.sh +++ b/lib/functions/configuration/aggregation.sh @@ -6,6 +6,10 @@ function assert_requires_aggregation() { fi } +function mark_aggregation_required_in_default_build_start() { + declare -i -g -r aggregation_required_in_default_build_start=1 # global, readonly. +} + function aggregate_packages_in_logging_section() { # Aggregate packages, in its own logging section; this decides internally on KERNEL_ONLY=no # We need aggregation to be able to build bsp packages, which contain scripts coming from the aggregation. diff --git a/lib/functions/main/config-prepare.sh b/lib/functions/main/config-prepare.sh index daf65f4b5..4112f62bc 100644 --- a/lib/functions/main/config-prepare.sh +++ b/lib/functions/main/config-prepare.sh @@ -33,7 +33,8 @@ function prep_conf_main_build_single() { LOG_SECTION="ni_check_basic_host" do_with_logging check_basic_host fi - aggregate_packages_in_logging_section + # can't aggregate here, since it needs a prepared host... mark to do it later. + mark_aggregation_required_in_default_build_start display_alert "Configuration prepared for BOARD build" "${BOARD}.${BOARD_TYPE}" "info" } @@ -73,7 +74,10 @@ function prep_conf_main_minimal_ni() { # Lean version, for building rootfs, that doesn't need BOARD/BOARDFAMILY; never interactive. function prep_conf_main_only_rootfs_ni() { prep_conf_main_minimal_ni - aggregate_packages_in_logging_section + + # can't aggregate here, since it needs a prepared host... mark to do it later. + mark_aggregation_required_in_default_build_start + display_alert "Configuration prepared for minimal+rootfs" "prep_conf_main_only_rootfs_ni" "info" } diff --git a/lib/functions/main/start-end.sh b/lib/functions/main/start-end.sh index 23e8f4090..04462755e 100644 --- a/lib/functions/main/start-end.sh +++ b/lib/functions/main/start-end.sh @@ -43,6 +43,14 @@ function main_default_start_build() { # Prepare ccache, cthreads, etc for the build LOG_SECTION="prepare_compilation_vars" do_with_logging prepare_compilation_vars + # from mark_aggregation_required_in_default_build_start() possibly marked during config + if [[ ${aggregation_required_in_default_build_start:-0} -gt 0 ]]; then + display_alert "Configuration requires aggregation" "running aggregation now" "debug" + aggregate_packages_in_logging_section + else + display_alert "Configuration does not require aggregation" "skipping aggregation" "debug" + fi + return 0 }