Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .github/workflows/ci-c-util.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,11 @@ on:
description: "Additional arguments to meson setup"
required: false
type: string
sanitizers:
default: ""
description: "Build and test with specified sanitizers"
required: false
type: string
source:
default: "."
description: "File system path to the source directory relative to the workspace"
Expand Down Expand Up @@ -88,6 +93,7 @@ jobs:
CTX_INPUTS_MACOS: ${{ inputs.macos }}
CTX_INPUTS_MATRIXMODE: ${{ inputs.matrixmode }}
CTX_INPUTS_MESONARGS: ${{ inputs.mesonargs }}
CTX_INPUTS_SANITIZERS: ${{ inputs.sanitizers }}
CTX_INPUTS_SOURCE: ${{ inputs.source }}
CTX_INPUTS_VALGRIND: ${{ inputs.valgrind }}
CTX_INPUTS_WINDOWS: ${{ inputs.windows }}
Expand Down
1 change: 1 addition & 0 deletions docker-bake.hcl
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ target "virtual-ci-c-util" {
"cargo",
"clang",
"clang-devel",
"compiler-rt",
"coreutils",
"curl",
"dbus-daemon",
Expand Down
19 changes: 19 additions & 0 deletions src/script/ci-c-util-job.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ CAB_JOB="none"
CAB_M32="false"
CAB_MESONARGS=""
CAB_NL=$'\n'
CAB_SANITIZERS=""
CAB_SOURCE="."
CAB_SOURCE_RAW="."
CAB_VALGRIND="false"
Expand All @@ -44,6 +45,7 @@ abspath() {
CAB_JOB=$(jq -r .job < <(printf "%s" "${CTX_MATRIX_JOB}"))
CAB_M32=$(jq -r .m32 < <(printf "%s" "${CTX_MATRIX_JOB}"))
CAB_MESONARGS=$(jq -r .mesonargs < <(printf "%s" "${CTX_MATRIX_JOB}"))
CAB_SANITIZERS=$(jq -r .sanitizers < <(printf "%s" "${CTX_MATRIX_JOB}"))
CAB_SOURCE_RAW=$(jq -r .source < <(printf "%s" "${CTX_MATRIX_JOB}"))
CAB_VALGRIND=$(jq -r .valgrind < <(printf "%s" "${CTX_MATRIX_JOB}"))

Expand Down Expand Up @@ -115,6 +117,15 @@ if [[ ! -z "${CAB_MESONARGS}" ]] ; then
CAB_CMD_SETUP+=" ${CAB_MESONARGS[@]}"
fi

if [[ ! -z ${CAB_SANITIZERS} ]]; then
CAB_CMD_SETUP+=" -Db_sanitizers=$CAB_SANITIZERS"

# See: https://github.com/mesonbuild/meson/issues/764
if [[ $CAB_JOB =~ llvm ]]; then
CAB_CMD_SETUP+=" -Db_lundef=false"
fi
fi

CAB_CMD_BUILD="ninja -v"

CAB_CMD_TEST_BASIC="meson test --print-errorlogs"
Expand All @@ -123,6 +134,14 @@ CAB_CMD_DEFAULT="${CAB_CMD_SETUP} . ${CAB_SOURCE}"
CAB_CMD_DEFAULT+="${CAB_NL}${CAB_NL}"
CAB_CMD_DEFAULT+="${CAB_CMD_BUILD}"
CAB_CMD_DEFAULT+="${CAB_NL}${CAB_NL}"

if [[ ! -z ${CAB_SANITIZERS} ]]; then
CAB_CMD_DEFAULT+="export ASAN_OPTIONS=strict_string_checks=1:detect_stack_use_after_return=1:check_initialization_order=1:strict_init_order=1"
CAB_CMD_DEFAULT+="${CAB_NL}"
CAB_CMD_DEFAULT+="export UBSAN_OPTIONS=print_stacktrace=1:print_summary=1:halt_on_error=1"
CAB_CMD_DEFAULT+="${CAB_NL}${CAB_NL}"
fi

CAB_CMD_DEFAULT+="${CAB_CMD_TEST_BASIC}"

if [[ ${CAB_VALGRIND} == "true" ]] ; then
Expand Down
5 changes: 5 additions & 0 deletions src/script/ci-c-util-suite.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ CAB_MACOS="false"
CAB_MATRIX_M32=()
CAB_MATRIXMODE="false"
CAB_MESONARGS=""
CAB_SANITIZERS=""
CAB_SOURCE="."
CAB_VALGRIND="false"
CAB_WINDOWS="false"
Expand Down Expand Up @@ -70,6 +71,7 @@ if [[ ${CTX_INPUTS_WINDOWS} == "true" ]] ; then
fi

CAB_MESONARGS=$(jq -cRs . < <(printf "%s" "${CTX_INPUTS_MESONARGS}"))
CAB_SANITIZERS=$(jq -cRs . < <(printf "%s" "${CTX_INPUTS_SANITIZERS}"))
CAB_SOURCE=$(jq -cRs . < <(printf "%s" "${CTX_INPUTS_SOURCE}"))

CAB_MATRIX_M32=("${CAB_M32}")
Expand All @@ -88,6 +90,7 @@ for CAB_J in "${CAB_MATRIX_M32[@]}" ; do
CAB_JSON+="\"job\":\"${CAB_I}\""
CAB_JSON+=",\"m32\":${CAB_J}"
CAB_JSON+=",\"mesonargs\":${CAB_MESONARGS}"
CAB_JSON+=",\"sanitizers\":${CAB_SANITIZERS}"
CAB_JSON+=",\"source\":${CAB_SOURCE}"
CAB_JSON+=",\"valgrind\":${CAB_VALGRIND}"
CAB_JSON+="},"
Expand All @@ -113,6 +116,7 @@ for CAB_J in "${CAB_MATRIX_M32[@]}" ; do
CAB_JSON+="\"job\":\"${CAB_I}\""
CAB_JSON+=",\"m32\":${CAB_J}"
CAB_JSON+=",\"mesonargs\":${CAB_MESONARGS}"
CAB_JSON+=",\"sanitizers\":${CAB_SANITIZERS}"
CAB_JSON+=",\"source\":${CAB_SOURCE}"
CAB_JSON+=",\"valgrind\":${CAB_VALGRIND}"
CAB_JSON+="},"
Expand All @@ -138,6 +142,7 @@ for CAB_J in "${CAB_MATRIX_M32[@]}" ; do
CAB_JSON+="\"job\":\"${CAB_I}\""
CAB_JSON+=",\"m32\":${CAB_J}"
CAB_JSON+=",\"mesonargs\":${CAB_MESONARGS}"
CAB_JSON+=",\"sanitizers\":${CAB_SANITIZERS}"
CAB_JSON+=",\"source\":${CAB_SOURCE}"
CAB_JSON+=",\"valgrind\":${CAB_VALGRIND}"
CAB_JSON+="},"
Expand Down