add Ubuntu build and torture steps to GH actions

This commit is contained in:
Nikita Smith
2026-06-02 12:10:20 -07:00
committed by Ryan Fleury
parent 7b2743a4d6
commit b4cfc61408
5 changed files with 179 additions and 93 deletions
+156 -83
View File
@@ -1,83 +1,156 @@
name: builds name: builds
on: on:
push: push:
paths-ignore: paths-ignore:
- '**.md' - '**.md'
pull_request: pull_request:
paths-ignore: paths-ignore:
- '**.md' - '**.md'
jobs: jobs:
build-windows-2022: build-ubuntu-24-04:
runs-on: windows-2022 runs-on: ubuntu-24.04
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
target: target:
- raddbg - raddbg
- radlink - raddbg_non_graphical
- radbin - radlink
- mule_main - radbin
compiler: - torture
- msvc compiler:
- clang - clang-22
mode: # TODO: - gcc
- debug mode:
- release - debug
steps: - release
- name: checkout steps:
uses: actions/checkout@v6 - name: checkout
- name: build (vs 2022) uses: actions/checkout@v6
shell: cmd - name: install dependencies
run: | shell: bash
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64 run: |
call build meta "${{ matrix.target }}" "${{ matrix.compiler }}" "${{ matrix.mode }}" || exit /b 1 wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
sudo apt-add-repository -y "deb http://apt.llvm.org/noble/ llvm-toolchain-noble-22 main"
run-torture: sudo apt-get update
runs-on: windows-2022 sudo apt-get install -y clang-22 lld-22 llvm-22 gcc-14 pkg-config libfreetype6-dev libx11-dev libxext-dev libgl1-mesa-dev libegl1-mesa-dev
strategy: sudo ln -s /usr/bin/llvm-symbolizer-22 /usr/bin/llvm-symbolizer
fail-fast: false - name: build
matrix: shell: bash
compiler: run: |
- msvc CC="${{ matrix.compiler }}" ./build.sh "${{ matrix.target }}" "${{ matrix.mode }}"
- clang
mode: build-windows-2022:
- debug runs-on: windows-2022
- release strategy:
exclude: fail-fast: false
- { compiler: clang, mode: release } # clang runs OOM in release with ASAN matrix:
steps: target:
- name: checkout - raddbg
uses: actions/checkout@v6 - radlink
- name: run-torture - radbin
shell: cmd - mule_main
run: | compiler:
rem find path to clang - msvc
for /f "tokens=*" %%i in ('where clang') do set clang_path=%%~dpi - clang
mode:
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64 - debug
- release
rem set clang path before MSVC's clang path steps:
set PATH=%clang_path%;%PATH% - name: checkout
uses: actions/checkout@v6
rem parse out clang version number out of --version to build path to the folder with ASAN DLL - name: build (vs 2022)
for /f "tokens=3 delims=. " %%v in ('clang -v 2^>^&1 ^| findstr version') do set clang_version=%%v shell: cmd
if "${{matrix.compiler}}" == "clang" set PATH=%clang_path%..\lib\clang\%clang_version%\lib\windows;%PATH% run: |
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64
call build meta raddbg_non_graphical || exit /b 1 call build meta "${{ matrix.target }}" "${{ matrix.compiler }}" "${{ matrix.mode }}" || exit /b 1
call build asan meta torture radlink radbin mule_main mule_module "${{matrix.mode}}" "${{matrix.compiler}}" || exit /b 1
cd build run-torture-ubuntu-24-04:
torture --gen_crash_dump || exit /b 1 runs-on: ubuntu-24.04
- name: upload torture crash dumps strategy:
if: failure() fail-fast: false
uses: actions/upload-artifact@v7 matrix:
with: compiler:
name: torture-crash-dumps-${{ matrix.compiler }}-${{ matrix.mode }} - clang-22
path: | # TODO: - gcc
build/*.dmp mode:
build/*.exe - debug
build/*.pdb # TODO: - release
build/torture steps:
if-no-files-found: ignore - name: checkout
uses: actions/checkout@v6
- name: install external libraries
shell: bash
run: |
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
sudo apt-add-repository -y "deb http://apt.llvm.org/noble/ llvm-toolchain-noble-22 main"
sudo apt-get update
sudo apt-get install -y clang-22 lld-22 llvm-22 gcc-14 pkg-config libfreetype6-dev libx11-dev libxext-dev libgl1-mesa-dev libegl1-mesa-dev
sudo ln -s /usr/bin/llvm-symbolizer-22 /usr/bin/llvm-symbolizer
- name: run-torture
shell: bash
run: |
CC="${{ matrix.compiler }}" ./build.sh meta raddbg raddbg_non_graphical radbin radlink torture "${{ matrix.mode }}"
cd build
./torture --gen_crash_dump
- name: upload torture artifacts
if: failure()
uses: actions/upload-artifact@v7
with:
name: torture-crash-dumps-${{ matrix.compiler }}-${{ matrix.mode }}
path: |
build/*.core
build/*.exe
build/*.pdb
build/torture_artifacts/**
if-no-files-found: ignore
run-torture-windows-2022:
runs-on: windows-2022
strategy:
fail-fast: false
matrix:
compiler:
- msvc
- clang
mode:
- debug
- release
exclude:
- { compiler: clang, mode: release } # clang runs OOM in release with ASAN
steps:
- name: checkout
uses: actions/checkout@v6
- name: run-torture
shell: cmd
run: |
rem find path to clang
for /f "tokens=*" %%i in ('where clang') do set clang_path=%%~dpi
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64
rem set clang path before MSVC's clang path
set PATH=%clang_path%;%PATH%
rem parse out clang version number out of --version to build path to the folder with ASAN DLL
for /f "tokens=3 delims=. " %%v in ('clang -v 2^>^&1 ^| findstr version') do set clang_version=%%v
if "${{matrix.compiler}}" == "clang" set PATH=%clang_path%..\lib\clang\%clang_version%\lib\windows;%PATH%
call build meta raddbg_non_graphical || exit /b 1
call build asan meta torture radlink radbin mule_main mule_module "${{matrix.mode}}" "${{matrix.compiler}}" || exit /b 1
cd build
torture --gen_crash_dump || exit /b 1
- name: upload torture crash dumps
if: failure()
uses: actions/upload-artifact@v7
with:
name: torture-crash-dumps-${{ matrix.compiler }}-${{ matrix.mode }}
path: |
build/*.dmp
build/*.exe
build/*.pdb
build/torture_artifacts/**
if-no-files-found: ignore
+1 -1
View File
@@ -75,7 +75,7 @@ set cl_link= /link /MANIFEST:EMBED /INCREMENTAL:NO /pdbaltpath:%%%%_PDB%%%
set cl_out= /out: set cl_out= /out:
set cl_obj_out= /Fo: set cl_obj_out= /Fo:
set cl_linker= set cl_linker=
set clang_common= -I..\src\ -I..\local\ -fdiagnostics-absolute-paths -Wall -Wno-unknown-warning-option -Wno-missing-braces -Wno-unused-function -Wno-unused-parameter -Wno-writable-strings -Wno-missing-field-initializers -Wno-unused-value -Wno-unused-variable -Wno-unused-local-typedef -Wno-deprecated-register -Wno-deprecated-declarations -Wno-unused-but-set-variable -Wno-single-bit-bitfield-constant-conversion -Wno-compare-distinct-pointer-types -Wno-initializer-overrides -Wno-incompatible-pointer-types-discards-qualifiers -Xclang -flto-visibility-public-std -D_USE_MATH_DEFINES -Dstrdup=_strdup -Dgnu_printf=printf -ferror-limit=10000 -mcx16 -msha set clang_common= -mcx16 -msha -I..\src\ -I..\local\ -fdiagnostics-absolute-paths -Wall -Wno-unknown-warning-option -Wno-missing-braces -Wno-unused-function -Wno-unused-parameter -Wno-writable-strings -Wno-missing-field-initializers -Wno-unused-value -Wno-unused-variable -Wno-unused-local-typedef -Wno-deprecated-register -Wno-deprecated-declarations -Wno-unused-but-set-variable -Wno-single-bit-bitfield-constant-conversion -Wno-compare-distinct-pointer-types -Wno-initializer-overrides -Wno-incompatible-pointer-types-discards-qualifiers -Xclang -flto-visibility-public-std -D_USE_MATH_DEFINES -Dstrdup=_strdup -Dgnu_printf=printf -ferror-limit=10000
set clang_debug= call clang -g -O0 -DBUILD_DEBUG=1 -D_DEBUG %clang_common% %auto_compile_flags% set clang_debug= call clang -g -O0 -DBUILD_DEBUG=1 -D_DEBUG %clang_common% %auto_compile_flags%
set clang_release= call clang -g -O2 -DBUILD_DEBUG=0 -DNDEBUG %clang_common% %auto_compile_flags% set clang_release= call clang -g -O2 -DBUILD_DEBUG=0 -DNDEBUG %clang_common% %auto_compile_flags%
set clang_link= -fuse-ld=lld -Xlinker /MANIFEST:EMBED -Xlinker /pdbaltpath:%%%%_PDB%%%% -Xlinker /NATVIS:"%~dp0\src\natvis\base.natvis" -Xlinker /opt:ref -Xlinker /opt:noicf set clang_link= -fuse-ld=lld -Xlinker /MANIFEST:EMBED -Xlinker /pdbaltpath:%%%%_PDB%%%% -Xlinker /NATVIS:"%~dp0\src\natvis\base.natvis" -Xlinker /opt:ref -Xlinker /opt:noicf
+2 -2
View File
@@ -18,8 +18,8 @@ git_hash_full=$(git rev-parse HEAD)
# --- Compile/Link Line Definitions ------------------------------------------- # --- Compile/Link Line Definitions -------------------------------------------
cc_cflags_gcc="" cc_cflags_gcc=""
cc_cflags_clang=${cc_sanitize}" -fdiagnostics-absolute-paths -Wno-for-loop-analysis -Wno-incompatible-pointer-types-discards-qualifiers -Wno-initializer-overrides -Wno-compare-distinct-pointer-types -Wno-single-bit-bitfield-constant-conversion -Wno-deprecated-declarations -Wno-writable-strings -Wno-unknown-warning-option -Wno-deprecated-register -Wno-unused-local-typedef" cc_cflags_clang=${cc_sanitize}" -fuse-ld=lld -fdiagnostics-absolute-paths -Wno-for-loop-analysis -Wno-incompatible-pointer-types-discards-qualifiers -Wno-initializer-overrides -Wno-compare-distinct-pointer-types -Wno-single-bit-bitfield-constant-conversion -Wno-deprecated-declarations -Wno-writable-strings -Wno-unknown-warning-option -Wno-deprecated-register -Wno-unused-local-typedef"
cc_common="-I../src/ -I../local/ -D_GNU_SOURCE -g -DBUILD_GIT_HASH=\"$git_hash\" -DBUILD_GIT_HASH_FULL=\"$git_hash_full\" -Wall -Wno-missing-braces -Wno-unused-function -Wno-unused-variable -Wno-unused-but-set-variable -Wno-unused-value -D_USE_MATH_DEFINES -Dstrdup=_strdup -Dgnu_printf=printf -mcx16" cc_common="-mcx16 -I../src/ -I../local/ -D_GNU_SOURCE -g -DBUILD_GIT_HASH=\"$git_hash\" -DBUILD_GIT_HASH_FULL=\"$git_hash_full\" -Wall -Wno-missing-braces -Wno-unused-function -Wno-unused-variable -Wno-unused-but-set-variable -Wno-unused-value -D_USE_MATH_DEFINES -Dstrdup=_strdup -Dgnu_printf=printf"
cc_debug="-g -O0 -DBUILD_DEBUG=1 ${cc_common}" cc_debug="-g -O0 -DBUILD_DEBUG=1 ${cc_common}"
cc_release="-g -O2 -DBUILD_DEBUG=0 ${cc_common}" cc_release="-g -O2 -DBUILD_DEBUG=0 ${cc_common}"
cc_link="-lpthread -lm -lrt -ldl" cc_link="-lpthread -lm -lrt -ldl"
+1 -1
View File
@@ -27,7 +27,7 @@ for %%m in (%MODE_VALUES%) do for %%c in (%CC_VALUES%) do (
) )
rem TODO: unblock asan rem TODO: unblock asan
call build.bat meta %%c %%m raddbg_non_graphical || exit /b 1 call build.bat meta %%c %%m raddbg raddbg_non_graphical || exit /b 1
rem clang does not compile with asan in release mode because it runs out of memory rem clang does not compile with asan in release mode because it runs out of memory
if "%%c" equ "clang" ( if "%%c" equ "clang" (
+19 -6
View File
@@ -2,11 +2,24 @@
set -eu set -eu
cd "$(dirname "$0")" cd "$(dirname "$0")"
# compile our targets target_values=(raddbg raddbg_non_graphical radlink radbin torture)
./build.sh raddbg raddbg_non_graphical radlink radbin torture # TODO: gcc
cc_values=(clang)
mode_values=(debug release)
# run torture for m in "${mode_values[@]}"; do
cd build for c in "${cc_values[@]}"; do
./torture
cd .. # nuke artifacts from last run
rm -rf build/torture_artifacts
./build.sh meta "$c" "$m" "${target_values[@]}"
# run torture
cd build
./torture "$@"
cd ..
done
done