ci: Introduce CI_HOST_* and CI_TARGET_*

Replace CI_SYSTEM_NAME and CI_MACHINE_NAME with CI_HOST_SYSTEM and
CI_HOST_MACHINE, respectively.

Introduce CI_TARGET_SYSTEM and CI_TARGET_MACHINE, defaulting to
CI_HOST_SYSTEM and CI_HOST_MACHINE, respectively.

Use CI_TARGET_SYSTEM and CI_TARGET_MACHINE in the naming scheme of
target build and install directories, in order to allow concurrent
verification builds for multiple cross-platform targets.
This commit is contained in:
Cosmin Truta 2023-07-04 19:40:05 +03:00
parent 82414985c1
commit 0b7bc40de1
4 changed files with 30 additions and 13 deletions

View File

@ -15,8 +15,9 @@ source "$(dirname "$0")/lib/ci.lib.sh"
cd "$CI_TOPLEVEL_DIR"
CI_SRC_DIR="$CI_TOPLEVEL_DIR"
CI_BUILD_DIR="$CI_TOPLEVEL_DIR/out/ci_verify_cmake.build"
CI_INSTALL_DIR="$CI_TOPLEVEL_DIR/out/ci_verify_cmake.install"
CI_OUT_DIR="$CI_TOPLEVEL_DIR/out"
CI_BUILD_DIR="$CI_OUT_DIR/ci_verify_cmake.$CI_TARGET_SYSTEM.$CI_TARGET_MACHINE.build"
CI_INSTALL_DIR="$CI_OUT_DIR/ci_verify_cmake.$CI_TARGET_SYSTEM.$CI_TARGET_MACHINE.install"
# Keep the following relative paths in sync with the absolute paths.
# We use them for the benefit of native Windows tools that might be
@ -44,8 +45,12 @@ function ci_init_build {
function ci_trace_build {
ci_info "## START OF CONFIGURATION ##"
ci_info "system name: $CI_SYSTEM_NAME"
ci_info "machine hardware name: $CI_MACHINE_NAME"
ci_info "host system: $CI_HOST_SYSTEM"
ci_info "host machine hardware: $CI_HOST_MACHINE"
[[ "$CI_TARGET_SYSTEM" != "$CI_HOST_SYSTEM" ]] &&
ci_info "target system: $CI_TARGET_SYSTEM"
[[ "$CI_TARGET_MACHINE" != "$CI_HOST_MACHINE" ]] &&
ci_info "target machine hardware: $CI_TARGET_MACHINE"
ci_info "source directory: $CI_SRC_DIR"
ci_info "build directory: $CI_BUILD_DIR"
ci_info "install directory: $CI_INSTALL_DIR"

View File

@ -15,8 +15,9 @@ source "$(dirname "$0")/lib/ci.lib.sh"
cd "$CI_TOPLEVEL_DIR"
CI_SRC_DIR="$CI_TOPLEVEL_DIR"
CI_BUILD_DIR="$CI_TOPLEVEL_DIR/out/ci_verify_configure.build"
CI_INSTALL_DIR="$CI_TOPLEVEL_DIR/out/ci_verify_configure.install"
CI_OUT_DIR="$CI_TOPLEVEL_DIR/out"
CI_BUILD_DIR="$CI_OUT_DIR/ci_verify_configure.$CI_TARGET_SYSTEM.$CI_TARGET_MACHINE.build"
CI_INSTALL_DIR="$CI_OUT_DIR/ci_verify_configure.$CI_TARGET_SYSTEM.$CI_TARGET_MACHINE.install"
function ci_init_build {
CI_MAKE="${CI_MAKE:-make}"
@ -30,8 +31,12 @@ function ci_init_build {
function ci_trace_build {
ci_info "## START OF CONFIGURATION ##"
ci_info "system name: $CI_SYSTEM_NAME"
ci_info "machine hardware name: $CI_MACHINE_NAME"
ci_info "host system: $CI_HOST_SYSTEM"
ci_info "host machine hardware: $CI_HOST_MACHINE"
[[ "$CI_TARGET_SYSTEM" != "$CI_HOST_SYSTEM" ]] &&
ci_info "target system: $CI_TARGET_SYSTEM"
[[ "$CI_TARGET_MACHINE" != "$CI_HOST_MACHINE" ]] &&
ci_info "target machine hardware: $CI_TARGET_MACHINE"
ci_info "source directory: $CI_SRC_DIR"
ci_info "build directory: $CI_BUILD_DIR"
ci_info "install directory: $CI_INSTALL_DIR"

View File

@ -30,8 +30,12 @@ function ci_init_build {
function ci_trace_build {
ci_info "## START OF CONFIGURATION ##"
ci_info "system name: $CI_SYSTEM_NAME"
ci_info "machine hardware name: $CI_MACHINE_NAME"
ci_info "host system: $CI_HOST_SYSTEM"
ci_info "host machine hardware: $CI_HOST_MACHINE"
[[ "$CI_TARGET_SYSTEM" != "$CI_HOST_SYSTEM" ]] &&
ci_info "target system: $CI_TARGET_SYSTEM"
[[ "$CI_TARGET_MACHINE" != "$CI_HOST_MACHINE" ]] &&
ci_info "target machine hardware: $CI_TARGET_MACHINE"
ci_info "source directory: $CI_SRC_DIR"
ci_info "environment option: \$CI_MAKEFILES: '$CI_MAKEFILES'"
ci_info "environment option: \$CI_MAKE: '$CI_MAKE'"

View File

@ -26,8 +26,10 @@ CI_SCRIPT_DIR="$(cd "$(dirname -- "$0")" && pwd)"
CI_TOPLEVEL_DIR="$(cd "$(dirname -- "${BASH_SOURCE[0]}")/../.." && pwd)"
# Initialize the global constants CI_{HOST,TARGET}_{SYSTEM,MACHINE}.
CI_SYSTEM_NAME="${CI_SYSTEM_NAME:-"$(uname -s)"}"
CI_MACHINE_NAME="${CI_MACHINE_NAME:-"$(uname -m)"}"
CI_HOST_SYSTEM="${CI_HOST_SYSTEM:-"$(uname -s | tr 'A-Z-' 'a-z_')"}"
CI_HOST_MACHINE="${CI_HOST_MACHINE:-"$(uname -m | tr 'A-Z-' 'a-z_')"}"
CI_TARGET_SYSTEM="${CI_TARGET_SYSTEM:-"$CI_HOST_SYSTEM"}"
CI_TARGET_MACHINE="${CI_TARGET_MACHINE:-"$CI_HOST_MACHINE"}"
function ci_info {
printf >&2 "%s: %s\\n" "$CI_SCRIPT_NAME" "$*"
@ -66,4 +68,5 @@ function ci_spawn {
# Ensure that the initialization is correct.
ci_assert "$CI_TOPLEVEL_DIR/ci/lib/ci.lib.sh" -ef "${BASH_SOURCE[0]}"
ci_assert "$CI_SCRIPT_DIR/$CI_SCRIPT_NAME" -ef "$0"
ci_assert -n "$CI_SYSTEM_NAME" -a -n "$CI_MACHINE_NAME"
ci_assert -n "$CI_HOST_SYSTEM" -a -n "$CI_HOST_MACHINE"
ci_assert -n "$CI_TARGET_SYSTEM" -a -n "$CI_TARGET_MACHINE"