mirror of
https://github.com/biojppm/rapidyaml.git
synced 2026-01-18 21:41:18 +01:00
- ensure gcc and clang are tested with several optimization levels (-O3,-O2,-O1,-Os). This reveals a number of problems in gcc11,12,13 (but not 14), which should be addressed next. - use continue-on-error: false to ensure the final workflow result is red when any of its jobs fails
189 lines
7.7 KiB
Plaintext
189 lines
7.7 KiB
Plaintext
!yamlscript/v0:
|
|
|
|
:: use(common)
|
|
:: workflow-setup()
|
|
|
|
jobs:
|
|
|
|
#----------------------------------------------------------------------------
|
|
canary:
|
|
:: setup-job('gcc' 'canary')
|
|
name: canary/${{matrix.cxx}}/c++${{matrix.std}}/${{matrix.bt}}
|
|
:: runs-on-docker-c4core('${{matrix.img}}')
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
item =: \({:std %1, :cxx "g++-$a(%2)", :bt %3, :bitlinks 'shared64 static32', :img "$a(%4)"})
|
|
include: &include1
|
|
# use gcc13 because it's a lot faster than gcc14
|
|
- ! item(11 13 'Debug' '22.04')
|
|
- ! item(11 13 'Release' '22.04')
|
|
- ! item(20 13 'Debug' '22.04')
|
|
- ! item(20 13 'Release' '22.04')
|
|
- ! item(11 5 'Debug' '18.04')
|
|
- ! item(11 5 'Release' '18.04')
|
|
- ! item(11 4.8 'Debug' '18.04')
|
|
- ! item(11 4.8 'Release' '18.04')
|
|
env:: load('share/env.yaml')
|
|
steps:: checkout-manual + install-cxx + run-steps
|
|
|
|
#----------------------------------------------------------------------------
|
|
tabtokens:
|
|
:: setup-job('gcc' 'tabtokens')
|
|
name: tabtokens/${{matrix.cxx}}/c++${{matrix.std}}/${{matrix.bt}}
|
|
:: runs-on-docker-c4core('${{matrix.img}}')
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include: *include1
|
|
env:: load('share/env.yaml') + {'CMAKE_FLAGS' '-DRYML_WITH_TAB_TOKENS=ON'}
|
|
steps:: checkout-manual + install-cxx + run-steps
|
|
|
|
#----------------------------------------------------------------------------
|
|
noexceptions:
|
|
:: setup-job('gcc' 'noexceptions')
|
|
name: noexceptions/${{matrix.cxx}}/c++${{matrix.std}}/${{matrix.bt}}
|
|
:: runs-on-docker-c4core('${{matrix.img}}')
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include: *include1
|
|
env:: load('share/env.yaml') + {'CXXFLAGS' '-fno-exceptions -fno-rtti'}
|
|
steps:: checkout-manual + install-cxx + run-steps
|
|
|
|
#----------------------------------------------------------------------------
|
|
misbuild:
|
|
:: setup-job('gcc' 'misbuild')
|
|
name: misbuild#${{matrix.issue}}/gcc${{matrix.gcc}}/c++${{matrix.std}}
|
|
:: runs-on-docker-c4core('${{matrix.img}}')
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- {issue: 440, std: 11, gcc: 12 , bt: Release, img: 22.04, cxxflags: -O2 -DNDEBUG -g}
|
|
- {issue: 486, std: 11, gcc: 11 , bt: Release, img: 22.04, cxxflags: -O3 -DNDEBUG}
|
|
env:: load('share/env.yaml') + {'CXX_' '${{matrix.gcc}}'}
|
|
steps:
|
|
- :: checkout-action-docker
|
|
- run: c4core-install g++-${{matrix.gcc}}
|
|
- name: show info
|
|
run: source .github/setenv.sh && c4_show_info
|
|
- name: configure (issue \#${{matrix.issue}})
|
|
run: |
|
|
cmake -S . -B build \
|
|
-DCMAKE_CXX_COMPILER=g++-${{matrix.gcc}} \
|
|
-DCMAKE_C_COMPILER=gcc-${{matrix.gcc}} \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DCMAKE_CXX_FLAGS_RELEASE="${{matrix.cxxflags}}" \
|
|
-DRYML_BUILD_TESTS=ON \
|
|
-DRYML_DBG=OFF
|
|
- name: build (issue \#${{matrix.issue}})
|
|
run: cmake --build build --target ryml-test-build --parallel --verbose
|
|
- name: run (issue \#${{matrix.issue}})
|
|
run: cmake --build build --target ryml-test-run
|
|
|
|
#----------------------------------------------------------------------------
|
|
extended:
|
|
:: setup-job('gcc' 'extended')
|
|
name: extended/${{matrix.cxx}}/${{matrix.bits}}bit/c++${{matrix.std}}/vg${{matrix.vg}}
|
|
:: runs-on-docker-c4core('${{matrix.img}}')
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
# with valgrind: only latest gcc
|
|
- {std: 20, cxx: 14 , bits: 64, vg: ON , img: 22.04}
|
|
- {std: 20, cxx: 14 , bits: 32, vg: ON , img: 22.04}
|
|
- {std: 17, cxx: 14 , bits: 64, vg: ON , img: 22.04}
|
|
- {std: 17, cxx: 14 , bits: 32, vg: ON , img: 22.04}
|
|
- {std: 14, cxx: 14 , bits: 64, vg: ON , img: 22.04}
|
|
- {std: 14, cxx: 14 , bits: 32, vg: ON , img: 22.04}
|
|
- {std: 11, cxx: 14 , bits: 64, vg: ON , img: 22.04}
|
|
- {std: 11, cxx: 14 , bits: 32, vg: ON , img: 22.04}
|
|
# without valgrind
|
|
- {std: 11, cxx: 13 , bits: 64, vg: OFF, img: 22.04}
|
|
- {std: 11, cxx: 13 , bits: 32, vg: OFF, img: 22.04}
|
|
- {std: 11, cxx: 12 , bits: 64, vg: OFF, img: 22.04}
|
|
- {std: 11, cxx: 12 , bits: 32, vg: OFF, img: 22.04}
|
|
- {std: 11, cxx: 11 , bits: 64, vg: OFF, img: 22.04}
|
|
- {std: 11, cxx: 11 , bits: 32, vg: OFF, img: 22.04}
|
|
- {std: 11, cxx: 10 , bits: 64, vg: OFF, img: 22.04}
|
|
- {std: 11, cxx: 10 , bits: 32, vg: OFF, img: 22.04}
|
|
- {std: 11, cxx: 9 , bits: 64, vg: OFF, img: 22.04}
|
|
- {std: 11, cxx: 9 , bits: 32, vg: OFF, img: 22.04}
|
|
- {std: 11, cxx: 8 , bits: 64, vg: OFF, img: 18.04}
|
|
- {std: 11, cxx: 8 , bits: 32, vg: OFF, img: 18.04}
|
|
- {std: 11, cxx: 7 , bits: 64, vg: OFF, img: 18.04}
|
|
- {std: 11, cxx: 7 , bits: 32, vg: OFF, img: 18.04}
|
|
- {std: 11, cxx: 6 , bits: 64, vg: OFF, img: 18.04}
|
|
- {std: 11, cxx: 6 , bits: 32, vg: OFF, img: 18.04}
|
|
- {std: 11, cxx: 5 , bits: 64, vg: OFF, img: 18.04}
|
|
- {std: 11, cxx: 5 , bits: 32, vg: OFF, img: 18.04}
|
|
- {std: 11, cxx: 4.9, bits: 64, vg: OFF, img: 18.04}
|
|
- {std: 11, cxx: 4.9, bits: 32, vg: OFF, img: 18.04}
|
|
- {std: 11, cxx: 4.8, bits: 64, vg: OFF, img: 18.04}
|
|
- {std: 11, cxx: 4.8, bits: 32, vg: OFF, img: 18.04}
|
|
env:: load('share/env.yaml')
|
|
steps:
|
|
- :: checkout-manual
|
|
- name: install
|
|
run: c4core-install g++-${{matrix.cxx}}
|
|
- :: run-gcc-manual-with-flags('Debug' '-m${{matrix.bits}}')
|
|
- :: run-gcc-manual-with-flags('Release' '-O1 -DNDEBUG -m${{matrix.bits}}')
|
|
- :: run-gcc-manual-with-flags('Release' '-O2 -DNDEBUG -m${{matrix.bits}}')
|
|
- :: run-gcc-manual-with-flags('Release' '-O3 -DNDEBUG -m${{matrix.bits}}')
|
|
- :: run-gcc-manual-with-flags('Release' '-Os -DNDEBUG -m${{matrix.bits}}')
|
|
|
|
#----------------------------------------------------------------------------
|
|
gccsan:
|
|
:: setup-job('gcc' 'gccsan')
|
|
name: gccsan/${{matrix.bt}}/${{matrix.cxx}}/c++${{matrix.std}}
|
|
:: runs-on-docker-c4core('22.04')
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include::
|
|
? for
|
|
san qw(asan lsan tsan ubsan)
|
|
std [11 14 17 20]
|
|
: ! { std:: std, cxx: g++-14, bt:: san, bitlinks: static64 }
|
|
env:: load('share/env.yaml')
|
|
steps:: checkout-action-docker + install-cxx + run-steps
|
|
|
|
#----------------------------------------------------------------------------
|
|
arm:
|
|
:: setup-job('gcc' 'arm') + runs-on-docker-c4core('18.04')
|
|
name: arm/c++${{matrix.std}}/${{matrix.bt}}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
item =:
|
|
\({:std %1, :bt %2, :cxx 'arm-linux-gnueabihf-gcc',
|
|
:toolchain 'ext/c4core/cmake/Toolchain-Arm-ubuntu.cmake'})
|
|
include:
|
|
# these jobs take much longer, so run only one bitlink pair per job to
|
|
# profit from parallelism
|
|
- ! item(11 'Debug')
|
|
- ! item(11 'Release')
|
|
- ! item(14 'Debug')
|
|
- ! item(14 'Release')
|
|
- ! item(17 'Debug')
|
|
- ! item(17 'Release')
|
|
env:: -{'TOOLCHAIN' '${{matrix.toolchain}}'} + load('share/env.yaml')
|
|
steps:
|
|
- :: checkout-manual
|
|
- name: install gcc-arm-linux-gnueabihf
|
|
run:
|
|
c4core-install arm-linux-gnueabihf;
|
|
c4core-install qemu
|
|
- name: show info
|
|
run: source .github/setenv.sh && c4_show_info
|
|
- name: configure---------------------------------------------------
|
|
run: source .github/setenv.sh && c4_cfg_test arm
|
|
- name: build
|
|
run: source .github/setenv.sh && c4_build_test arm
|
|
- name: run
|
|
run: source .github/setenv.sh && c4_run_test arm
|
|
- name: pack
|
|
run: source .github/setenv.sh && c4_package arm
|