Run a basic CI for ZJIT without --zjit
This commit is contained in:
parent
a6e1a562e4
commit
f3b673d062
Notes:
git
2025-04-18 13:49:12 +00:00
153
.github/workflows/zjit-ubuntu.yml
vendored
Normal file
153
.github/workflows/zjit-ubuntu.yml
vendored
Normal file
@ -0,0 +1,153 @@
|
||||
name: ZJIT Ubuntu
|
||||
on:
|
||||
push:
|
||||
paths-ignore:
|
||||
- 'doc/**'
|
||||
- '**/man/*'
|
||||
- '**.md'
|
||||
- '**.rdoc'
|
||||
- '**/.document'
|
||||
- '.*.yml'
|
||||
pull_request:
|
||||
# Do not use paths-ignore for required status checks
|
||||
# https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/troubleshooting-required-status-checks#handling-skipped-but-required-checks
|
||||
merge_group:
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }} / ${{ startsWith(github.event_name, 'pull') && github.ref_name || github.sha }}
|
||||
cancel-in-progress: ${{ startsWith(github.event_name, 'pull') }}
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
cargo:
|
||||
name: cargo test
|
||||
|
||||
# GitHub Action's image seems to already contain a Rust 1.58.0.
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
if: >-
|
||||
${{!(false
|
||||
|| contains(github.event.head_commit.message, '[DOC]')
|
||||
|| contains(github.event.pull_request.title, '[DOC]')
|
||||
|| contains(github.event.pull_request.labels.*.name, 'Documentation')
|
||||
|| (github.event_name == 'push' && github.event.pull_request.user.login == 'dependabot[bot]')
|
||||
)}}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
|
||||
|
||||
- run: RUST_BACKTRACE=1 cargo test
|
||||
working-directory: zjit
|
||||
|
||||
make:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- test_task: 'zjit-bindgen'
|
||||
hint: 'To fix: use patch in logs'
|
||||
configure: '--with-gcc=clang-14 --enable-yjit=dev'
|
||||
libclang_path: '/usr/lib/llvm-14/lib/libclang.so.1'
|
||||
|
||||
- test_task: 'check'
|
||||
configure: '--enable-zjit=dev --disable-yjit'
|
||||
# Test without ZJIT for now
|
||||
#zjit_opts: '--zjit-call-threshold=1'
|
||||
|
||||
env:
|
||||
GITPULLOPTIONS: --no-tags origin ${{ github.ref }}
|
||||
RUN_OPTS: ${{ matrix.zjit_opts }}
|
||||
YJIT_BENCH_OPTS: ${{ matrix.yjit_bench_opts }}
|
||||
SPECOPTS: ${{ matrix.specopts }}
|
||||
RUBY_DEBUG: ci
|
||||
BUNDLE_JOBS: 8 # for yjit-bench
|
||||
RUST_BACKTRACE: 1
|
||||
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
if: >-
|
||||
${{!(false
|
||||
|| contains(github.event.head_commit.message, '[DOC]')
|
||||
|| contains(github.event.head_commit.message, 'Document')
|
||||
|| contains(github.event.pull_request.title, '[DOC]')
|
||||
|| contains(github.event.pull_request.title, 'Document')
|
||||
|| contains(github.event.pull_request.labels.*.name, 'Documentation')
|
||||
|| (github.event_name == 'push' && github.event.pull_request.user.login == 'dependabot[bot]')
|
||||
)}}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
|
||||
with:
|
||||
sparse-checkout-cone-mode: false
|
||||
sparse-checkout: /.github
|
||||
|
||||
- uses: ./.github/actions/setup/ubuntu
|
||||
|
||||
- uses: ruby/setup-ruby@a6e6f86333f0a2523ece813039b8b4be04560854 # v1.190.0
|
||||
with:
|
||||
ruby-version: '3.0'
|
||||
bundler: none
|
||||
|
||||
- uses: ./.github/actions/setup/directories
|
||||
with:
|
||||
srcdir: src
|
||||
builddir: build
|
||||
makeup: true
|
||||
dummy-files: ${{ matrix.test_task == 'check' }}
|
||||
# Set fetch-depth: 10 so that Launchable can receive commits information.
|
||||
fetch-depth: 10
|
||||
|
||||
- name: Install Rust
|
||||
if: ${{ matrix.rust_version }}
|
||||
run: rustup install ${{ matrix.rust_version }} --profile minimal
|
||||
|
||||
- name: Run configure
|
||||
run: ../src/configure -C --disable-install-doc --prefix=$(pwd)/install ${{ matrix.configure }}
|
||||
|
||||
- run: make incs
|
||||
|
||||
- run: make prepare-gems
|
||||
if: ${{ matrix.test_task == 'test-bundled-gems' }}
|
||||
|
||||
- run: make
|
||||
|
||||
# Check that the binary was built with ZJIT
|
||||
- name: Check ZJIT enabled
|
||||
run: ./miniruby --zjit -v | grep "+ZJIT"
|
||||
|
||||
- name: make ${{ matrix.test_task }}
|
||||
run: >-
|
||||
make -s ${{ matrix.test_task }} ${TESTS:+TESTS="$TESTS"}
|
||||
RUN_OPTS="$RUN_OPTS" MSPECOPT=--debug SPECOPTS="$SPECOPTS"
|
||||
YJIT_BENCH_OPTS="$YJIT_BENCH_OPTS" YJIT_BINDGEN_DIFF_OPTS="$YJIT_BINDGEN_DIFF_OPTS"
|
||||
timeout-minutes: 90
|
||||
env:
|
||||
RUBY_TESTOPTS: '-q --tty=no'
|
||||
TEST_BUNDLED_GEMS_ALLOW_FAILURES: 'typeprof'
|
||||
PRECHECK_BUNDLED_GEMS: 'no'
|
||||
SYNTAX_SUGGEST_TIMEOUT: '5'
|
||||
YJIT_BINDGEN_DIFF_OPTS: '--exit-code'
|
||||
LIBCLANG_PATH: ${{ matrix.libclang_path }}
|
||||
continue-on-error: ${{ matrix.continue-on-test_task || false }}
|
||||
|
||||
- uses: ./.github/actions/slack
|
||||
with:
|
||||
label: ${{ matrix.test_task }} ${{ matrix.configure }}
|
||||
SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
|
||||
if: ${{ failure() }}
|
||||
|
||||
result:
|
||||
if: ${{ always() }}
|
||||
name: ${{ github.workflow }} result
|
||||
runs-on: ubuntu-latest
|
||||
needs: [make]
|
||||
steps:
|
||||
- run: exit 1
|
||||
working-directory:
|
||||
if: ${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') }}
|
||||
|
||||
defaults:
|
||||
run:
|
||||
working-directory: build
|
Loading…
x
Reference in New Issue
Block a user