ci: Introduce the CI_NO_BUILD flag

For testing purposes (e.g. wanting to see if "make distclean" works
correctly with and without building), as well as development purposes
(e.g. wanting to inspect the artifacts produced in the configuration
stage), add `CI_NO_BUILD` to the family of contrarians.
This commit is contained in:
Cosmin Truta 2025-02-17 21:13:32 +02:00
parent b20e6fb314
commit bb7e922914
4 changed files with 28 additions and 10 deletions

View File

@ -64,6 +64,7 @@ function ci_trace_build {
ci_info "environment option: \$CI_RANLIB: '$CI_RANLIB'" ci_info "environment option: \$CI_RANLIB: '$CI_RANLIB'"
ci_info "environment option: \$CI_SANITIZERS: '$CI_SANITIZERS'" ci_info "environment option: \$CI_SANITIZERS: '$CI_SANITIZERS'"
ci_info "environment option: \$CI_FORCE: '$CI_FORCE'" ci_info "environment option: \$CI_FORCE: '$CI_FORCE'"
ci_info "environment option: \$CI_NO_BUILD: '$CI_NO_BUILD'"
ci_info "environment option: \$CI_NO_TEST: '$CI_NO_TEST'" ci_info "environment option: \$CI_NO_TEST: '$CI_NO_TEST'"
ci_info "environment option: \$CI_NO_INSTALL: '$CI_NO_INSTALL'" ci_info "environment option: \$CI_NO_INSTALL: '$CI_NO_INSTALL'"
ci_info "environment option: \$CI_NO_CLEAN: '$CI_NO_CLEAN'" ci_info "environment option: \$CI_NO_CLEAN: '$CI_NO_CLEAN'"
@ -148,10 +149,12 @@ function ci_build {
-S . \ -S . \
-DCMAKE_INSTALL_PREFIX="$CI_INSTALL_DIR" \ -DCMAKE_INSTALL_PREFIX="$CI_INSTALL_DIR" \
"${all_cmake_vars[@]}" "${all_cmake_vars[@]}"
# Spawn "cmake --build ...". ci_expr $((CI_NO_BUILD)) || {
ci_spawn "$CI_CMAKE" --build "$CI_BUILD_DIR" \ # Spawn "cmake --build ...".
--config "$CI_CMAKE_BUILD_TYPE" \ ci_spawn "$CI_CMAKE" --build "$CI_BUILD_DIR" \
"${all_cmake_build_flags[@]}" --config "$CI_CMAKE_BUILD_TYPE" \
"${all_cmake_build_flags[@]}"
}
ci_expr $((CI_NO_TEST)) || { ci_expr $((CI_NO_TEST)) || {
# Spawn "ctest" if testing is not disabled. # Spawn "ctest" if testing is not disabled.
ci_spawn pushd "$CI_BUILD_DIR" ci_spawn pushd "$CI_BUILD_DIR"

View File

@ -58,6 +58,7 @@ function ci_trace_build {
ci_info "environment option: \$CI_LD_FLAGS: '$CI_LD_FLAGS'" ci_info "environment option: \$CI_LD_FLAGS: '$CI_LD_FLAGS'"
ci_info "environment option: \$CI_SANITIZERS: '$CI_SANITIZERS'" ci_info "environment option: \$CI_SANITIZERS: '$CI_SANITIZERS'"
ci_info "environment option: \$CI_FORCE: '$CI_FORCE'" ci_info "environment option: \$CI_FORCE: '$CI_FORCE'"
ci_info "environment option: \$CI_NO_BUILD: '$CI_NO_BUILD'"
ci_info "environment option: \$CI_NO_TEST: '$CI_NO_TEST'" ci_info "environment option: \$CI_NO_TEST: '$CI_NO_TEST'"
ci_info "environment option: \$CI_NO_INSTALL: '$CI_NO_INSTALL'" ci_info "environment option: \$CI_NO_INSTALL: '$CI_NO_INSTALL'"
ci_info "environment option: \$CI_NO_CLEAN: '$CI_NO_CLEAN'" ci_info "environment option: \$CI_NO_CLEAN: '$CI_NO_CLEAN'"
@ -131,8 +132,10 @@ function ci_build {
ci_spawn cd "$CI_BUILD_DIR" ci_spawn cd "$CI_BUILD_DIR"
# Spawn "configure". # Spawn "configure".
ci_spawn "$CI_SRC_DIR/configure" --prefix="$CI_INSTALL_DIR" $CI_CONFIGURE_FLAGS ci_spawn "$CI_SRC_DIR/configure" --prefix="$CI_INSTALL_DIR" $CI_CONFIGURE_FLAGS
# Spawn "make". ci_expr $((CI_NO_BUILD)) || {
ci_spawn "$CI_MAKE" $CI_MAKE_FLAGS # Spawn "make".
ci_spawn "$CI_MAKE" $CI_MAKE_FLAGS
}
ci_expr $((CI_NO_TEST)) || { ci_expr $((CI_NO_TEST)) || {
# Spawn "make test" if testing is not disabled. # Spawn "make test" if testing is not disabled.
ci_spawn "$CI_MAKE" $CI_MAKE_FLAGS test ci_spawn "$CI_MAKE" $CI_MAKE_FLAGS test

View File

@ -51,6 +51,7 @@ function ci_trace_build {
ci_info "environment option: \$CI_LIBS: '$CI_LIBS'" ci_info "environment option: \$CI_LIBS: '$CI_LIBS'"
ci_info "environment option: \$CI_SANITIZERS: '$CI_SANITIZERS'" ci_info "environment option: \$CI_SANITIZERS: '$CI_SANITIZERS'"
ci_info "environment option: \$CI_FORCE: '$CI_FORCE'" ci_info "environment option: \$CI_FORCE: '$CI_FORCE'"
ci_info "environment option: \$CI_NO_BUILD: '$CI_NO_BUILD'"
ci_info "environment option: \$CI_NO_TEST: '$CI_NO_TEST'" ci_info "environment option: \$CI_NO_TEST: '$CI_NO_TEST'"
ci_info "environment option: \$CI_NO_CLEAN: '$CI_NO_CLEAN'" ci_info "environment option: \$CI_NO_CLEAN: '$CI_NO_CLEAN'"
ci_info "executable: \$CI_MAKE: $(command -V "$CI_MAKE")" ci_info "executable: \$CI_MAKE: $(command -V "$CI_MAKE")"
@ -145,10 +146,12 @@ function ci_build {
for my_makefile in $CI_MAKEFILES for my_makefile in $CI_MAKEFILES
do do
ci_info "using makefile: $my_makefile" ci_info "using makefile: $my_makefile"
# Spawn "make". ci_expr $((CI_NO_BUILD)) || {
ci_spawn "$CI_MAKE" -f "$my_makefile" \ # Spawn "make".
"${all_make_flags[@]}" \ ci_spawn "$CI_MAKE" -f "$my_makefile" \
"${all_make_vars[@]}" "${all_make_flags[@]}" \
"${all_make_vars[@]}"
}
ci_expr $((CI_NO_TEST)) || { ci_expr $((CI_NO_TEST)) || {
# Spawn "make test" if testing is not disabled. # Spawn "make test" if testing is not disabled.
ci_spawn "$CI_MAKE" -f "$my_makefile" \ ci_spawn "$CI_MAKE" -f "$my_makefile" \

View File

@ -91,6 +91,9 @@ function ci_spawn {
[[ ${CI_FORCE:-0} == [01] ]] || { [[ ${CI_FORCE:-0} == [01] ]] || {
ci_err "bad boolean option: \$CI_FORCE: '$CI_FORCE'" ci_err "bad boolean option: \$CI_FORCE: '$CI_FORCE'"
} }
[[ ${CI_NO_BUILD:-0} == [01] ]] || {
ci_err "bad boolean option: \$CI_NO_BUILD: '$CI_NO_BUILD'"
}
[[ ${CI_NO_TEST:-0} == [01] ]] || { [[ ${CI_NO_TEST:-0} == [01] ]] || {
ci_err "bad boolean option: \$CI_NO_TEST: '$CI_NO_TEST'" ci_err "bad boolean option: \$CI_NO_TEST: '$CI_NO_TEST'"
} }
@ -100,3 +103,9 @@ function ci_spawn {
[[ ${CI_NO_CLEAN:-0} == [01] ]] || { [[ ${CI_NO_CLEAN:-0} == [01] ]] || {
ci_err "bad boolean option: \$CI_NO_CLEAN: '$CI_NO_CLEAN'" ci_err "bad boolean option: \$CI_NO_CLEAN: '$CI_NO_CLEAN'"
} }
if ci_expr $((CI_NO_BUILD))
then
ci_expr $((CI_NO_TEST && CI_NO_INSTALL)) || {
ci_err "\$CI_NO_BUILD requires \$CI_NO_TEST and \$CI_NO_INSTALL"
}
fi