Skip to content

[ruby/resolv] Check the second RegGetValue type #62

[ruby/resolv] Check the second RegGetValue type

[ruby/resolv] Check the second RegGetValue type #62

Workflow file for this run

name: ZJIT macOS
on:
push:
branches:
- master
paths-ignore:
- 'doc/**'
- '**/man/*'
- '**.md'
- '**.rdoc'
- '**/.document'
- '.*.yml'
pull_request:
types:
- opened
- synchronize
- reopened
# 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:
make:
strategy:
fail-fast: false
matrix:
include:
- test_task: 'check'
run_opts: '--zjit-call-threshold=1'
specopts: '-T --zjit-call-threshold=1'
configure: '--enable-zjit=dev'
- test_task: 'check'
run_opts: '--zjit-disable-hir-opt --zjit-call-threshold=1'
specopts: '-T --zjit-disable-hir-opt -T --zjit-call-threshold=1'
configure: '--enable-zjit=dev'
- test_task: 'zjit-check' # zjit-test + quick feedback of test_zjit.rb
configure: '--enable-yjit=dev --enable-zjit'
rust_version: "1.85.0"
- test_task: 'ruby'
hint: 'combo build test'
configure: '--enable-yjit --enable-zjit'
env:
GITPULLOPTIONS: --no-tags origin ${{ github.ref }}
RUN_OPTS: ${{ matrix.run_opts }}
SPECOPTS: ${{ matrix.specopts }}
TESTOPTS: ${{ matrix.testopts }}
ZJIT_RB_BUG: 1
runs-on: macos-14
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@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
sparse-checkout-cone-mode: false
sparse-checkout: /.github
- name: Install libraries
uses: ./.github/actions/setup/macos
- 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
rustup default ${{ matrix.rust_version }}
- uses: taiki-e/install-action@v2
with:
tool: nextest@0.9
if: ${{ matrix.test_task == 'zjit-check' }}
- name: Run configure
run: ../src/configure -C --disable-install-doc ${{ matrix.configure }}
- run: make
- name: Verify that --zjit-dump-disasm works
run: |
./miniruby --zjit-call-threshold=1 --zjit-dump-disasm -e0 | \
wc -l | \
ruby -ne 'raise "Disassembly seems broken in dev build (output has too few lines)" unless $_.to_i > 10'
if: ${{ contains(matrix.configure, 'jit=dev') }}
- name: Set ENV for ZJIT
run: |
echo "RUBY_CRASH_REPORT=$(pwd)/rb_crash_%p.txt" >> $GITHUB_ENV
- name: make ${{ matrix.test_task }}
run: |
set -x
make -s ${{ matrix.test_task }} ${TESTS:+TESTS="$TESTS"} \
RUN_OPTS="$RUN_OPTS" \
SPECOPTS="$SPECOPTS" \
TESTOPTS="$TESTOPTS"
timeout-minutes: 60
env:
RUBY_TESTOPTS: '-q --tty=no'
EXCLUDES: '../src/test/.excludes-zjit'
TEST_BUNDLED_GEMS_ALLOW_FAILURES: ''
SYNTAX_SUGGEST_TIMEOUT: '5'
PRECHECK_BUNDLED_GEMS: 'no'
continue-on-error: ${{ matrix.continue-on-test_task || false }}
- name: Dump crash logs
if: ${{ failure() }}
continue-on-error: true
run: |
tail --verbose --lines=+1 rb_crash_*.txt
exit 1
- 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: macos-14
needs: [make]
steps:
- run: exit 1
working-directory:
if: ${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') }}
# Separated from `make` job to avoid making it a required status check for now
ruby-bench:
strategy:
matrix:
include:
# Test --call-threshold=2 with 2 iterations in total
- ruby_opts: '--zjit-call-threshold=2'
bench_opts: '--warmup=1 --bench=1'
configure: '--enable-zjit=dev_nodebug' # --enable-zjit=dev is too slow
runs-on: macos-14
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@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- uses: ./.github/actions/setup/macos
- uses: ./.github/actions/setup/directories
with:
srcdir: src
builddir: build
makeup: true
- name: Run configure
run: ../src/configure -C --disable-install-doc --prefix="$(pwd)/install" ${{ matrix.configure }}
- run: make install
# setup/directories set MAKEFLAGS=-j4 for macOS, which randomly fails sqlite3.gem builds
- name: Unset MAKEFLAGS
run: echo "MAKEFLAGS=" >> "$GITHUB_ENV"
- name: Checkout ruby-bench
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
repository: ruby/ruby-bench
path: ruby-bench
- name: Run ruby-bench
run: ruby run_benchmarks.rb -e "zjit::../build/install/bin/ruby ${{ matrix.ruby_opts }}" ${{ matrix.bench_opts }}
working-directory: ruby-bench
- uses: ./.github/actions/slack
with:
label: ruby-bench ${{ matrix.bench_opts }} ${{ matrix.ruby_opts }}
SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
if: ${{ failure() }}
defaults:
run:
working-directory: build