Skip to content

Commit

Permalink
ci: linux_ci.vsh; cgen: parallel-cc fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
medvednikov committed Dec 16, 2024
1 parent a200c45 commit b3d2a3f
Show file tree
Hide file tree
Showing 7 changed files with 531 additions and 233 deletions.
295 changes: 66 additions & 229 deletions .github/workflows/linux_ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,85 +32,53 @@ jobs:
- name: Build v
run: make -j4 && ./v symlink
- name: Build v with -prealloc
run: |
v -d debug_malloc -d debug_realloc -o v cmd/v
v -cg -cstrict -o v cmd/v
# Test v -realloc arena allocation
v -o vrealloc -prealloc cmd/v && ./vrealloc -o v3 cmd/v && ./v3 -o v4 cmd/v
run: v run ci/linux_ci.vsh build_v_with_prealloc
- name: All code is formatted
run: v test-cleancode
run: v run ci/linux_ci.vsh all_code_is_formatted_tcc
- name: Install dependencies for examples and tools
run: |
v retry -- sudo apt update
v retry -- sudo apt install --quiet -y libssl-dev sqlite3 libsqlite3-dev valgrind
v retry -- sudo apt install --quiet -y libfreetype6-dev libxi-dev libxcursor-dev libgl-dev libasound2-dev
# The following is needed for examples/wkhtmltopdf.v
v retry -- wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.focal_amd64.deb
v retry -- sudo apt install --quiet -y xfonts-75dpi xfonts-base
v retry -- sudo apt install --quiet -y expect
v retry -- sudo dpkg -i wkhtmltox_0.12.6-1.focal_amd64.deb
run: v run ci/linux_ci.vsh install_dependencies_for_examples_and_tools_tcc
- name: Test v->c
run: |
thirdparty/tcc/tcc.exe -version
v -cg -o v cmd/v # Make sure vtcc can build itself twice
# v test-all
run: v run ci/linux_ci.vsh test_v_to_c_tcc
- name: v self compilation
run: v -o v2 cmd/v && ./v2 -o v3 cmd/v && ./v3 -o v4 cmd/v
run: v run ci/linux_ci.vsh v_self_compilation_tcc
- name: v self compilation with -skip-unused
run: v -skip-unused -o v2 cmd/v && ./v2 -skip-unused -o v3 cmd/v && ./v3 -skip-unused -o v4 cmd/v
run: v run ci/linux_ci.vsh v_self_compilation_skip_unused_tcc
- name: Test vlib modules with -skip-unused
run: v -skip-unused test vlib/builtin/ vlib/math vlib/flag/ vlib/os/ vlib/strconv/
run: v run ci/linux_ci.vsh test_vlib_skip_unused_tcc
- name: v doctor
run: v doctor
run: v run ci/linux_ci.vsh v_doctor_tcc
- name: Verify `v test` works
run: |
echo $VFLAGS
v cmd/tools/test_if_v_test_system_works.v
./cmd/tools/test_if_v_test_system_works
run: v run ci/linux_ci.vsh verify_v_test_works_tcc
- name: Test pure V math module
run: v -exclude @vlib/math/*.c.v test vlib/math/
run: v run ci/linux_ci.vsh test_pure_v_math_module_tcc
- name: Self tests
run: v test-self vlib
# - name: Self tests (-cstrict)
# run: V_CI_CSTRICT=1 v -cstrict test-self vlib
run: v run ci/linux_ci.vsh self_tests_tcc
- name: Build examples
run: v -N -W build-examples
run: v run ci/linux_ci.vsh build_examples_tcc
- name: Run the submodule example, using a relative path
run: v -W run examples/submodule
run: v run ci/linux_ci.vsh run_submodule_example_tcc
- name: Build v tools
run: v -N -W build-tools
run: v run ci/linux_ci.vsh build_tools_tcc
- name: Build v binaries
run: v -N -W build-vbinaries
run: v run ci/linux_ci.vsh build_vbinaries_tcc
- name: Build benches
run: v should-compile-all vlib/v/tests/bench/
run: v run ci/linux_ci.vsh build_benches_tcc
- name: Run a VSH script
run: v run examples/v_script.vsh
run: v run ci/linux_ci.vsh run_vsh_script_tcc
- name: Test v tutorials
run: v tutorials/building_a_simple_web_blog_with_vweb/code/blog
run: v run ci/linux_ci.vsh test_v_tutorials_tcc
- name: Build cmd/tools/fast
run: cd cmd/tools/fast && v fast.v && ./fast
run: v run ci/linux_ci.vsh build_fast_tcc
- name: V self compilation with -usecache
run: |
unset VFLAGS
v -usecache examples/hello_world.v && examples/hello_world
v -o v2 -usecache cmd/v
./v2 -o v3 -usecache cmd/v
./v3 version
./v3 -o tetris -usecache examples/tetris/tetris.v
run: v run ci/linux_ci.vsh v_self_compilation_usecache_tcc
- name: Test password input
run: v test examples/password/
run: v run ci/linux_ci.vsh test_password_input_tcc
- name: Test readline
run: v test examples/readline/
run: v run ci/linux_ci.vsh test_readline_tcc
- name: Test leak detector
run: |
v -gc boehm_leak -o testcase_leak vlib/v/tests/testcase_leak.vv
./testcase_leak 2>leaks.txt
grep "Found 1 leaked object" leaks.txt && grep -P ", sz=\s?1000," leaks.txt
run: v run ci/linux_ci.vsh test_leak_detector_tcc
- name: Test leak detector not being active for normal compile
run: |
v -o testcase_leak vlib/v/tests/testcase_leak.vv
./testcase_leak 2>leaks.txt
[ "$(stat -c %s leaks.txt)" = "0" ]
run: v run ci/linux_ci.vsh test_leak_detector_not_active_tcc

gcc:
runs-on: ubuntu-20.04
Expand All @@ -120,107 +88,51 @@ jobs:
- name: Build V
run: make -j4 && ./v symlink
- name: All code is formatted
run: v test-cleancode
run: v run ci/linux_ci.vsh all_code_is_formatted_gcc
- name: Install dependencies for examples and tools
run: |
v retry -- sudo apt update
v retry -- sudo apt install --quiet -y postgresql libpq-dev libssl-dev sqlite3 libsqlite3-dev valgrind
v retry -- sudo apt install --quiet -y libfreetype6-dev libxi-dev libxcursor-dev libgl-dev libasound2-dev
run: v run ci/linux_ci.vsh install_dependencies_for_examples_and_tools_gcc
- name: Recompile V with -cstrict and gcc
run: v -cc gcc -cg -cstrict -o v cmd/v
run: v run ci/linux_ci.vsh recompile_v_with_cstrict_gcc
- name: Valgrind v.c
run: valgrind --error-exitcode=1 v -o v.c cmd/v
run: v run ci/linux_ci.vsh valgrind_v_c_gcc
- name: Run sanitizers
run: |
v -o v2 cmd/v -cflags -fsanitize=thread
v -o v3 cmd/v -cflags "-fsanitize=undefined -fno-sanitize=alignment"
UBSAN_OPTIONS=print_stacktrace=1:halt_on_error=1 ./v2 -o v.c cmd/v
UBSAN_OPTIONS=print_stacktrace=1:halt_on_error=1 ./v3 -o v.c cmd/v
# - name: Test V
# run: v test-all
# - name: Test v binaries
# run: v -N -W build-vbinaries
# - name: Test v->js
# run: v -o hi.js examples/js_hello_world.v && node hi.js
# - name: Build Vorum
# run: v retry -- git clone --depth 1 https://github.com/vlang/vorum && cd vorum && v . && cd ..
- name: Freestanding
run: v -freestanding run vlib/os/bare/bare_example_linux.v
- name: V self compilation
run: v -o v2 cmd/v && ./v2 -o v3 cmd/v && ./v3 -o v4 cmd/v
- name: V self compilation with -usecache
run: |
unset VFLAGS
v -usecache examples/hello_world.v && examples/hello_world
v -o v2 -usecache cmd/v
./v2 -o v3 -usecache cmd/v
./v3 version
./v3 -o tetris -usecache examples/tetris/tetris.v
run: v run ci/linux_ci.vsh run_sanitizers_gcc
- name: v self compilation
run: v run ci/linux_ci.vsh v_self_compilation_gcc
- name: v self compilation with -usecache
run: v run ci/linux_ci.vsh v_self_compilation_usecache_gcc
- name: Verify `v test` works
run: |
echo $VFLAGS
v cmd/tools/test_if_v_test_system_works.v
./cmd/tools/test_if_v_test_system_works
run: v run ci/linux_ci.vsh verify_v_test_works_gcc
- name: Test pure V math module
run: v -exclude @vlib/math/*.c.v test vlib/math/
run: v run ci/linux_ci.vsh test_pure_v_math_module_gcc
- name: Self tests
run: v test-self vlib
run: v run ci/linux_ci.vsh self_tests_gcc
- name: Self tests (-prod)
run: v -o vprod -prod cmd/v && ./vprod test-self vlib
run: v run ci/linux_ci.vsh self_tests_prod_gcc
- name: Self tests (-cstrict)
run: VTEST_JUST_ESSENTIAL=1 V_CI_CSTRICT=1 v -cc gcc -cstrict test-self vlib
run: v run ci/linux_ci.vsh self_tests_cstrict_gcc
- name: Build examples
run: v -N -W build-examples
run: v run ci/linux_ci.vsh build_examples_gcc
- name: Build tetris with -autofree
run: v -autofree -o tetris examples/tetris/tetris.v
run: v run ci/linux_ci.vsh build_tetris_autofree_gcc
- name: Build blog tutorial with -autofree
run: v -autofree -o blog tutorials/building_a_simple_web_blog_with_vweb/code/blog
run: v run ci/linux_ci.vsh build_blog_autofree_gcc
- name: Build option_test.c.v with -autofree
run: v -autofree vlib/v/tests/options/option_test.c.v
run: v run ci/linux_ci.vsh build_option_test_autofree_gcc
- name: V self compilation with -parallel-cc
run: |
v -o v2 -parallel-cc cmd/v
run: v run ci/linux_ci.vsh v_self_compilation_parallel_cc_gcc
- name: Test vlib modules with -skip-unused
run: v -skip-unused test vlib/builtin/ vlib/math vlib/flag/ vlib/os/ vlib/strconv/
run: v run ci/linux_ci.vsh test_vlib_skip_unused_gcc
- name: Build modules
run: |
v build-module vlib/os
v build-module vlib/builtin
v build-module vlib/strconv
v build-module vlib/time
v build-module vlib/term
v build-module vlib/math
v build-module vlib/strings
v build-module vlib/v/token
v build-module vlib/v/ast
v build-module vlib/v/parser
v build-module vlib/v/gen/c
v build-module vlib/v/depgraph
v build-module vlib/os/cmdline
run: v run ci/linux_ci.vsh build_modules_gcc
- name: native machine code generation
run: |
v -o vprod -prod cmd/v
cd cmd/tools
echo "Generating a 1m line V file..."
../../vprod gen1m.v
./gen1m > 1m.v
echo "Building it..."
../../vprod -backend native -o 1m 1m.v
echo "Running it..."
./1m
ls
run: v run ci/linux_ci.vsh native_machine_code_generation_gcc
- name: compile vdoctor.v with -skip-unused and -prod
run: v -showcc -skip-unused -cc gcc -prod cmd/tools/vdoctor.v
run: v run ci/linux_ci.vsh compile_vdoctor_skip_unused_prod_gcc
- name: compile vup.v with -skip-unused and -prod
run: v -showcc -skip-unused -cc gcc -prod cmd/tools/vup.v

# - run: cd examples/native && v -native hello_world.v && ./hello_world
# - name: Coveralls GitHub Action
# uses: coverallsapp/[email protected]
# with:
# github-token: ${{ secrets.GITHUB_TOKEN }}
run: v run ci/linux_ci.vsh compile_vup_skip_unused_prod_gcc
- name: Test vlib modules with -skip-unused
run: v -skip-unused test vlib/builtin/ vlib/math vlib/flag/ vlib/os/ vlib/strconv/
run: v run ci/linux_ci.vsh test_vlib_skip_unused_gcc

clang:
runs-on: ubuntu-20.04
Expand All @@ -232,112 +144,37 @@ jobs:
- name: Build V
run: make -j4 && ./v symlink
- name: All code is formatted
run: v test-cleancode
run: v run ci/linux_ci.vsh all_code_is_formatted_clang
- name: Install dependencies for examples and tools
run: |
v retry -- sudo apt update
v retry -- sudo apt install --quiet -y postgresql libpq-dev libssl-dev sqlite3 libsqlite3-dev valgrind
v retry -- sudo apt install --quiet -y libfreetype6-dev libxi-dev libxcursor-dev libgl-dev libasound2-dev
v retry -- sudo apt install --quiet -y clang
run: v run ci/linux_ci.vsh install_dependencies_for_examples_and_tools_clang
- name: Recompile V with -cstrict and clang
run: v -cc clang -cg -cstrict -o v cmd/v
run: v run ci/linux_ci.vsh recompile_v_with_cstrict_clang
- name: Valgrind
run: valgrind --error-exitcode=1 v -o v.c cmd/v
run: v run ci/linux_ci.vsh valgrind_clang
- name: Run sanitizers
run: .github/workflows/run_sanitizers.sh
run: v run ci/linux_ci.vsh run_sanitizers_clang
- name: v self compilation
run: v -o v2 cmd/v && ./v2 -o v3 cmd/v && ./v3 -o v4 cmd/v
run: v run ci/linux_ci.vsh v_self_compilation_clang
- name: v self compilation with -usecache
run: |
unset VFLAGS
v -usecache examples/hello_world.v && examples/hello_world
v -o v2 -usecache cmd/v
./v2 -o v3 -usecache cmd/v
./v3 version
./v3 -o tetris -usecache examples/tetris/tetris.v
run: v run ci/linux_ci.vsh v_self_compilation_usecache_clang
- name: Verify `v test` works
run: |
echo $VFLAGS
v cmd/tools/test_if_v_test_system_works.v
./cmd/tools/test_if_v_test_system_works
run: v run ci/linux_ci.vsh verify_v_test_works_clang
- name: Test pure V math module
run: v -exclude @vlib/math/*.c.v test vlib/math/
run: v run ci/linux_ci.vsh test_pure_v_math_module_clang
- name: Self tests
run: v test-self vlib
run: v run ci/linux_ci.vsh self_tests_clang
- name: Self tests (vprod)
run: v -o vprod -prod cmd/v && ./vprod test-self vlib
run: v run ci/linux_ci.vsh self_tests_vprod_clang
- name: Self tests (-cstrict)
run: VTEST_JUST_ESSENTIAL=1 V_CI_CSTRICT=1 ./vprod -cstrict test-self vlib

run: v run ci/linux_ci.vsh self_tests_cstrict_clang
- name: Build examples
run: v -N -W build-examples
run: v run ci/linux_ci.vsh build_examples_clang
- name: Build examples with -autofree
run: |
v -autofree -experimental -o tetris examples/tetris/tetris.v
run: v run ci/linux_ci.vsh build_examples_autofree_clang
- name: Test vlib modules with -skip-unused
run: v -skip-unused test vlib/builtin/ vlib/math vlib/flag/ vlib/os/ vlib/strconv/
run: v run ci/linux_ci.vsh test_vlib_skip_unused_clang
- name: Build modules
run: |
v build-module vlib/os
v build-module vlib/builtin
v build-module vlib/strconv
v build-module vlib/time
v build-module vlib/term
v build-module vlib/math
v build-module vlib/strings
v build-module vlib/v/token
v build-module vlib/v/ast
v build-module vlib/v/parser
v build-module vlib/v/gen/c
v build-module vlib/v/depgraph
v build-module vlib/os/cmdline
run: v run ci/linux_ci.vsh build_modules_clang
- name: native machine code generation
run: |
v -o vprod -prod cmd/v
cd cmd/tools
echo "Generating a 1m line V file..."
../../vprod gen1m.v
./gen1m > 1m.v
echo "Building it..."
../../vprod -backend native -o 1m 1m.v
echo "Running it..."
./1m
ls
# autofree-selfcompile:
# runs-on: ubuntu-20.04
# if: github.event_name != 'push' || github.ref == 'refs/heads/master' || github.repository != 'vlang/v'
# timeout-minutes: 121
# env:
# VFLAGS: -cc gcc
# steps:
# - uses: actions/checkout@v4
# - name: Build V
# run: make -j4
# - name: V self compilation with -autofree
# run: v -o v2 -autofree cmd/v && ./v2 -o v3 -autofree cmd/v && ./v3 -o v4 -autofree cmd/v
run: v run ci/linux_ci.vsh native_machine_code_generation_clang

# musl:
# runs-on: ubuntu-20.04
# if: github.event_name != 'push' || github.ref == 'refs/heads/master' || github.repository != 'vlang/v'
# timeout-minutes: 121
# env:
# VFLAGS: -cc musl-gcc
# V_CI_MUSL: 1
# steps:
# - name: Build v
# run: echo $VFLAGS && make -j4 && ./v symlink
# - uses: actions/checkout@v4
# - name: Install dependencies for examples and tools
# run: v retry -- sudo apt install --quiet -y musl musl-tools libssl-dev sqlite3 libsqlite3-dev valgrind
# - name: Recompile V with -cg
# run: v -cg -o v cmd/v
# # - name: Test v binaries
# # run: v -N -W build-vbinaries
# # - name: Test v->js
# # run: v -o hi.js examples/js_hello_world.v && node hi.js
# - name: quick debug
# run: v -stats vlib/strconv/format_test.v
# - name: Self tests
# run: v test-self vlib
Loading

0 comments on commit b3d2a3f

Please sign in to comment.