os,runtime: workaround for v.c generation instability #5783
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Sanitized CI | |
## Running these jobs is slow (over ~1 hour, sometimes even 2) | |
## so we run them only when there is a chance that the generated | |
## C code could have changed, or for some critical vlib modules, | |
## like `builtin`, `os`, `sync`, where they have demonstrated | |
## their usefulness by catching actual very hard to find bugs. | |
## The cost of this selective running is delayed feedback when | |
## there are bugs in other V modules. | |
## The positive is *much faster CI runs* for most V contributors, | |
## that make PRs that are not concerning V itself, or the critical | |
## V modules. | |
on: | |
push: | |
paths: | |
- '!**' | |
- '!**.md' | |
- '!**.yml' | |
- 'vlib/builtin/**.v' | |
- 'vlib/strconv/**.v' | |
- 'vlib/strings/**.v' | |
- 'vlib/math/**.v' | |
- 'vlib/math/big/**.v' | |
- 'vlib/arrays/**.v' | |
- 'vlib/datatypes/**.v' | |
- 'vlib/os/**.v' | |
- 'vlib/sync/**.v' | |
- 'vlib/v/tests/**.v' | |
- 'vlib/v/ast/**.v' | |
- 'vlib/v/scanner/**.v' | |
- 'vlib/v/parser/**.v' | |
- 'vlib/v/checker/**.v' | |
- 'vlib/v/gen/c/**.v' | |
- 'vlib/v/builder/**.v' | |
- 'vlib/v/cflag/**.v' | |
- 'vlib/v/live/**.v' | |
- 'vlib/v/util/**.v' | |
- 'vlib/v/markused/**.v' | |
- 'vlib/v/preludes/**.v' | |
- 'vlib/v/embed_file/**.v' | |
- '**/sanitized_ci.yml' | |
pull_request: | |
paths: | |
- '!**' | |
- 'vlib/builtin/**.v' | |
- 'vlib/strconv/**.v' | |
- 'vlib/strings/**.v' | |
- 'vlib/math/**.v' | |
- 'vlib/math/big/**.v' | |
- 'vlib/arrays/**.v' | |
- 'vlib/datatypes/**.v' | |
- 'vlib/os/**.v' | |
- 'vlib/sync/**.v' | |
- 'vlib/v/tests/**.v' | |
- 'vlib/v/ast/**.v' | |
- 'vlib/v/scanner/**.v' | |
- 'vlib/v/parser/**.v' | |
- 'vlib/v/checker/**.v' | |
- 'vlib/v/gen/c/**.v' | |
- 'vlib/v/builder/**.v' | |
- 'vlib/v/cflag/**.v' | |
- 'vlib/v/live/**.v' | |
- 'vlib/v/util/**.v' | |
- 'vlib/v/markused/**.v' | |
- 'vlib/v/preludes/**.v' | |
- 'vlib/v/embed_file/**.v' | |
- '**/sanitized_ci.yml' | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref == 'refs/heads/master' && github.sha || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
tests-sanitize-undefined-clang: | |
runs-on: ubuntu-20.04 | |
timeout-minutes: 240 | |
env: | |
VFLAGS: -cc clang | |
VJOBS: 1 | |
VTEST_SHOW_START: 1 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install dependencies | |
run: | | |
.github/workflows/retry.sh sudo apt update | |
.github/workflows/retry.sh sudo apt install --quiet -y postgresql libpq-dev libssl-dev sqlite3 libsqlite3-dev valgrind | |
.github/workflows/retry.sh sudo apt install --quiet -y libfreetype6-dev libxi-dev libxcursor-dev libgl-dev | |
.github/workflows/retry.sh sudo apt install clang | |
- name: Build V | |
run: make && ./v -cg -cstrict -o v cmd/v | |
- name: Ensure code is well formatted | |
run: ./v test-cleancode | |
- name: Self tests (-fsanitize=undefined) | |
run: ./v -cflags "-fsanitize=undefined" -o v2 cmd/v && ./v2 -cflags -fsanitize=undefined test-self vlib | |
- name: Build examples (V compiled with -fsanitize=undefined) | |
run: ./v2 build-examples | |
tests-sanitize-undefined-gcc: | |
runs-on: ubuntu-20.04 | |
timeout-minutes: 240 | |
env: | |
VFLAGS: -cc gcc | |
VJOBS: 1 | |
VTEST_SHOW_START: 1 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install dependencies | |
run: | | |
.github/workflows/retry.sh sudo apt update | |
.github/workflows/retry.sh sudo apt install --quiet -y postgresql libpq-dev libssl-dev sqlite3 libsqlite3-dev valgrind | |
.github/workflows/retry.sh sudo apt install --quiet -y libfreetype6-dev libxi-dev libxcursor-dev libgl-dev | |
- name: Build V | |
run: make && ./v -cg -cstrict -o v cmd/v | |
- name: Ensure code is well formatted | |
run: ./v test-cleancode | |
- name: Self tests (-fsanitize=undefined) | |
run: ./v -cflags "-fsanitize=undefined" -o v2 cmd/v && ./v2 -cflags -fsanitize=undefined test-self | |
- name: Build examples (V compiled with -fsanitize=undefined) | |
run: ./v2 build-examples | |
tests-sanitize-address-clang: | |
runs-on: ubuntu-20.04 | |
timeout-minutes: 240 | |
env: | |
VFLAGS: -cc clang | |
VJOBS: 1 | |
VTEST_SHOW_START: 1 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install dependencies | |
run: | | |
.github/workflows/retry.sh sudo apt update | |
.github/workflows/retry.sh sudo apt install --quiet -y postgresql libpq-dev libssl-dev sqlite3 libsqlite3-dev valgrind | |
.github/workflows/retry.sh sudo apt install --quiet -y libfreetype6-dev libxi-dev libxcursor-dev libgl-dev | |
.github/workflows/retry.sh sudo apt install clang | |
- name: Build V | |
run: make && ./v -cg -cstrict -o v cmd/v | |
- name: Ensure code is well formatted | |
run: ./v test-cleancode | |
- name: Self tests (-fsanitize=address) | |
run: ASAN_OPTIONS=detect_leaks=0 ./v -cflags "-fsanitize=address,pointer-compare,pointer-subtract" test-self vlib | |
- name: Self tests (V compiled with -fsanitize=address) | |
run: | |
./v -cflags -fsanitize=address -o v cmd/v && | |
ASAN_OPTIONS=detect_leaks=0 ./v -cc tcc test-self -asan-compiler vlib | |
- name: Build examples (V compiled with -fsanitize=address) | |
run: ASAN_OPTIONS=detect_leaks=0 ./v build-examples | |
tests-sanitize-address-msvc: | |
runs-on: windows-2019 | |
timeout-minutes: 240 | |
env: | |
VFLAGS: -cc msvc | |
VJOBS: 1 | |
VTEST_SHOW_START: 1 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Build | |
run: | | |
echo %VFLAGS% | |
echo $VFLAGS | |
.\make.bat -msvc | |
.\v.exe self | |
- name: Ensure code is well formatted | |
run: .\v.exe test-cleancode | |
# - name: Install dependencies | |
# run: | | |
# .\v.exe setup-freetype | |
# .\.github\workflows\windows-install-sqlite.bat | |
# - name: Self tests (/fsanitize=address) # TODO: | |
# run: .\v.exe -cflags "/fsanitize=address" test-self vlib | |
tests-sanitize-address-gcc: | |
runs-on: ubuntu-20.04 | |
timeout-minutes: 240 | |
env: | |
VFLAGS: -cc gcc | |
VJOBS: 1 | |
VTEST_SHOW_START: 1 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install dependencies | |
run: | | |
.github/workflows/retry.sh sudo apt update | |
.github/workflows/retry.sh sudo apt install --quiet -y postgresql libpq-dev libssl-dev sqlite3 libsqlite3-dev valgrind | |
.github/workflows/retry.sh sudo apt install --quiet -y libfreetype6-dev libxi-dev libxcursor-dev libgl-dev | |
.github/workflows/retry.sh sudo apt install clang | |
- name: Build V | |
run: make && ./v -cg -cstrict -o v cmd/v | |
- name: Ensure code is well formatted | |
run: ./v test-cleancode | |
- name: Self tests (-fsanitize=address) | |
run: ASAN_OPTIONS=detect_leaks=0 ./v -cflags -fsanitize=address test-self vlib | |
- name: Self tests (V compiled with -fsanitize=address) | |
run: | |
./v -cflags -fsanitize=address,pointer-compare,pointer-subtract -o v cmd/v && | |
ASAN_OPTIONS=detect_leaks=0 ./v -cc tcc test-self -asan-compiler vlib | |
- name: Build examples (V compiled with -fsanitize=address) | |
run: ASAN_OPTIONS=detect_leaks=0 ./v build-examples | |
tests-sanitize-memory-clang: | |
runs-on: ubuntu-20.04 | |
timeout-minutes: 240 | |
env: | |
VFLAGS: -cc clang -gc none | |
VJOBS: 1 | |
VTEST_SHOW_START: 1 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install dependencies | |
run: | | |
.github/workflows/retry.sh sudo apt update | |
.github/workflows/retry.sh sudo apt install --quiet -y postgresql libpq-dev libssl-dev sqlite3 libsqlite3-dev valgrind | |
.github/workflows/retry.sh sudo apt install --quiet -y libfreetype6-dev libxi-dev libxcursor-dev libgl-dev | |
.github/workflows/retry.sh sudo apt install clang | |
- name: Build V | |
run: make && ./v -cc clang -cg -cstrict -o v cmd/v | |
- name: Ensure code is well formatted | |
run: ./v test-cleancode | |
- name: Self tests (-fsanitize=memory) | |
run: ./v -cflags -fsanitize=memory test-self vlib | |
- name: Self tests (V compiled with -fsanitize=memory) | |
run: | | |
./v -cflags -fsanitize=memory -o v cmd/v | |
./v -cc tcc test-self -msan-compiler vlib | |
- name: Build examples (V compiled with -fsanitize=memory) | |
run: ./v build-examples |