Skip to content

feat: add option to force use of custom futex implementation #480

feat: add option to force use of custom futex implementation

feat: add option to force use of custom futex implementation #480

Workflow file for this run

name: libvsync actions
on: [push, pull_request]
jobs:
###########################################################################
Run-Tests:
strategy:
matrix:
config: ["-DLIBVSYNC_ADDRESS_SANITIZER=on", "-DLIBVSYNC_ADDRESS_SANITIZER=off"]
dir: ["test", "verify"]
os: [ubuntu-22.04, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Check out repository code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Configure Testing
run: cmake -S. -Bbuild ${{ matrix.config }}
- name: Build Tests
run: cmake --build build/${{ matrix.dir }}
- name: Run Tests
run: ctest --test-dir build/${{ matrix.dir }} --output-on-failure
###########################################################################
Run-Checks:
runs-on: ubuntu-22.04
container: ghcr.io/open-s4c/vsyncer-ci:sha-76569f0d2ee9a688da95b8025116b3a202e67321
strategy:
matrix:
test-dir: [ {p: "test", c: "spinlock"}, {p: "test", c: "quack"}, {p: "test", c: "queue"},
{p: "verify", c: "unbounded_queue"}, {p: "verify", c: "listset"} ,
{p: "verify", c: "stack"}, {p: "verify", c: "thread"}, {p: "verify", c: "simpleht"},
{p: "verify", c: "bitmap"}, {p: "verify", c: "treeset"}, {p: "verify", c: "pool"},
{p: "verify", c: "cachedq"}, {p: "verify", c: "chaselev"} , {p: "verify", c: "priority_queue"},
{p: "verify", c: "skiplist"}, {p: "verify", c: "smr"}, {p: "verify", c: "bbq"},
{p: "verify", c: "mpsc"}
]
steps:
- name: Print vsyncer version
run: vsyncer version
- name: Check out repository code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Configure Verification
run: cmake -S. -Bbuild -DVSYNCER_CHECK=ON -DVSYNCER_CHECK_FULL=OFF
- name: Build Verification Clients for ${{ matrix.test-dir }}
run: cmake --build build/${{ matrix.test-dir.p }}/${{ matrix.test-dir.c }}
- name: Run Verification
run: ctest --test-dir build/${{ matrix.test-dir.p }}/${{ matrix.test-dir.c }} -R check* --output-on-failure
- name: Upload vsyncer report
uses: actions/upload-artifact@v4
if: always()
with:
name: check-report-${{ matrix.test-dir.c }}
path: build/logs
###########################################################################
libvsync-Install:
runs-on: ubuntu-22.04
steps:
- name: Check out repository code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Configure without tests
run: cmake -S. -Bbuild -DLIBVSYNC_ENABLE_TESTS=OFF
- name: Build
run: cmake --build build -j
- name: Install
run: sudo cmake --install build
###########################################################################
Run-Format-Markdown-Checks:
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
target: [clang-format-apply, vatomic-generate, cmake-format-apply, markdown]
steps:
- name: Download and Install doxygen & mdox for markdown check
if: matrix.target == 'markdown'
run: |
sudo apt update && sudo apt install -y doxygen curl
sudo curl -L -o /usr/local/bin/mdox https://github.com/db7/mdox/releases/download/v0.1/mdox-v0.1-linux-amd64
sudo chmod +x /usr/local/bin/mdox
- name: Install cmake-format for cmake-format-check
if: matrix.target == 'cmake-format-apply'
run: pip install cmakelang
- name: Check out repository code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Configure
run: cmake -S. -Bbuild
- name: Run ${{ matrix.target }}
run: cmake --build build --target ${{ matrix.target }}
- name: Check things match expectation
run: cmake --build build --target diff-check ||
(echo "Run 'make ${{ matrix.target }}' and commit" && false)
###########################################################################
Generate-Report:
runs-on: ubuntu-22.04
needs: Run-Checks
steps:
- uses: actions/download-artifact@v4
with:
pattern: check-report-*
path: build/logs
- name: merge reports
run: |
CSV_FILES=( $(find . -type f -name "*.csv") )
cat "${CSV_FILES[0]}" | head -n 1 > verification_report.csv
cat "${CSV_FILES[@]}" | grep -E --invert '^#' >> verification_report.csv
cat verification_report.csv
- name: check skipped
run: |
if grep -q 'internalError' verification_report.csv; then echo "ERROR: Skipped checks were detected"; exit 1; fi
- name: upload final report
uses: actions/upload-artifact@v4
if: always()
with:
name: verification_report.csv
path: .