-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
167 additions
and
174 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,177 +1,177 @@ | ||
name: YJIT Ubuntu | ||
on: | ||
push: | ||
paths-ignore: | ||
- 'doc/**' | ||
- '**/man' | ||
- '**.md' | ||
- '**.rdoc' | ||
- '**/.document' | ||
pull_request: | ||
paths-ignore: | ||
- 'doc/**' | ||
- '**/man' | ||
- '**.md' | ||
- '**.rdoc' | ||
- '**/.document' | ||
merge_group: | ||
paths-ignore: | ||
- 'doc/**' | ||
- '**/man' | ||
- '**.md' | ||
- '**.rdoc' | ||
- '**/.document' | ||
# name: YJIT Ubuntu | ||
# on: | ||
# push: | ||
# paths-ignore: | ||
# - 'doc/**' | ||
# - '**/man' | ||
# - '**.md' | ||
# - '**.rdoc' | ||
# - '**/.document' | ||
# pull_request: | ||
# paths-ignore: | ||
# - 'doc/**' | ||
# - '**/man' | ||
# - '**.md' | ||
# - '**.rdoc' | ||
# - '**/.document' | ||
# merge_group: | ||
# paths-ignore: | ||
# - 'doc/**' | ||
# - '**/man' | ||
# - '**.md' | ||
# - '**.rdoc' | ||
# - '**/.document' | ||
|
||
concurrency: | ||
group: ${{ github.workflow }} / ${{ startsWith(github.event_name, 'pull') && github.ref_name || github.sha }} | ||
cancel-in-progress: ${{ startsWith(github.event_name, 'pull') }} | ||
# 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 | ||
# permissions: | ||
# contents: read | ||
|
||
jobs: | ||
cargo: | ||
name: Rust cargo test | ||
# GitHub Action's image seems to already contain a Rust 1.58.0. | ||
runs-on: ubuntu-20.04 | ||
steps: | ||
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 | ||
# For now we can't run cargo test --offline because it complains about the | ||
# capstone dependency, even though the dependency is optional | ||
#- run: cargo test --offline | ||
- run: RUST_BACKTRACE=1 cargo test | ||
working-directory: yjit | ||
# Also compile and test with all features enabled | ||
- run: RUST_BACKTRACE=1 cargo test --all-features | ||
working-directory: yjit | ||
# Check that we can build in release mode too | ||
- run: cargo build --release | ||
working-directory: yjit | ||
lint: | ||
name: Rust lint | ||
# GitHub Action's image seems to already contain a Rust 1.58.0. | ||
runs-on: ubuntu-20.04 | ||
steps: | ||
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 | ||
# Check that we don't have linting errors in release mode, too | ||
- run: cargo clippy --all-targets --all-features | ||
working-directory: yjit | ||
make: | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
include: | ||
- test_task: "yjit-bindgen" | ||
hint: "To fix: use patch in logs" | ||
configure: "--with-gcc=clang-12 --enable-yjit=dev" | ||
# jobs: | ||
# cargo: | ||
# name: Rust cargo test | ||
# # GitHub Action's image seems to already contain a Rust 1.58.0. | ||
# runs-on: ubuntu-20.04 | ||
# steps: | ||
# - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 | ||
# # For now we can't run cargo test --offline because it complains about the | ||
# # capstone dependency, even though the dependency is optional | ||
# #- run: cargo test --offline | ||
# - run: RUST_BACKTRACE=1 cargo test | ||
# working-directory: yjit | ||
# # Also compile and test with all features enabled | ||
# - run: RUST_BACKTRACE=1 cargo test --all-features | ||
# working-directory: yjit | ||
# # Check that we can build in release mode too | ||
# - run: cargo build --release | ||
# working-directory: yjit | ||
# lint: | ||
# name: Rust lint | ||
# # GitHub Action's image seems to already contain a Rust 1.58.0. | ||
# runs-on: ubuntu-20.04 | ||
# steps: | ||
# - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 | ||
# # Check that we don't have linting errors in release mode, too | ||
# - run: cargo clippy --all-targets --all-features | ||
# working-directory: yjit | ||
# make: | ||
# strategy: | ||
# fail-fast: false | ||
# matrix: | ||
# include: | ||
# - test_task: "yjit-bindgen" | ||
# hint: "To fix: use patch in logs" | ||
# configure: "--with-gcc=clang-12 --enable-yjit=dev" | ||
|
||
- test_task: "check" | ||
# YJIT should be automatically built in release mode on x86-64 Linux with rustc present | ||
#configure: "--enable-yjit RUSTC='rustc +1.58.0'" | ||
configure: "RUSTC='rustc +1.58.0'" | ||
rust_version: "1.58.0" | ||
# - test_task: "check" | ||
# # YJIT should be automatically built in release mode on x86-64 Linux with rustc present | ||
# #configure: "--enable-yjit RUSTC='rustc +1.58.0'" | ||
# configure: "RUSTC='rustc +1.58.0'" | ||
# rust_version: "1.58.0" | ||
|
||
- test_task: "check" | ||
configure: "--enable-yjit=dev" | ||
# - test_task: "check" | ||
# configure: "--enable-yjit=dev" | ||
|
||
- test_task: "check" | ||
configure: "--enable-yjit=dev" | ||
yjit_opts: "--yjit-call-threshold=1 --yjit-verify-ctx" | ||
# - test_task: "check" | ||
# configure: "--enable-yjit=dev" | ||
# yjit_opts: "--yjit-call-threshold=1 --yjit-verify-ctx" | ||
|
||
- test_task: "test-all TESTS=--repeat-count=2" | ||
configure: "--enable-yjit=dev" | ||
# - test_task: "test-all TESTS=--repeat-count=2" | ||
# configure: "--enable-yjit=dev" | ||
|
||
- test_task: "test-bundled-gems" | ||
configure: "--enable-yjit=dev" | ||
# - test_task: "test-bundled-gems" | ||
# configure: "--enable-yjit=dev" | ||
|
||
- test_task: "yjit-bench" | ||
configure: "--enable-yjit=dev" | ||
yjit_bench_opts: "--yjit-stats" | ||
env: | ||
GITPULLOPTIONS: --no-tags origin ${{github.ref}} | ||
RUN_OPTS: ${{ matrix.yjit_opts }} | ||
YJIT_BENCH_OPTS: ${{ matrix.yjit_bench_opts }} | ||
RUBY_DEBUG: ci | ||
BUNDLE_JOBS: 8 # for yjit-bench | ||
RUST_BACKTRACE: 1 | ||
runs-on: ubuntu-20.04 | ||
if: ${{ !contains(github.event.head_commit.message, '[DOC]') && !contains(github.event.pull_request.labels.*.name, 'Documentation') }} | ||
steps: | ||
- run: mkdir build | ||
working-directory: | ||
- name: Install libraries | ||
run: | | ||
set -x | ||
sudo apt-get update -q || : | ||
sudo apt-get install --no-install-recommends -q -y build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev autoconf ruby | ||
- name: Install Rust | ||
if: ${{ matrix.rust_version }} | ||
run: rustup install ${{ matrix.rust_version }} --profile minimal | ||
- name: git config | ||
run: | | ||
git config --global advice.detachedHead 0 | ||
git config --global init.defaultBranch garbage | ||
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 | ||
with: | ||
path: src | ||
- uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 | ||
with: | ||
path: src/.downloaded-cache | ||
key: downloaded-cache | ||
- name: Fixed world writable dirs | ||
run: | | ||
chmod -v go-w $HOME $HOME/.config | ||
sudo chmod -R go-w /usr/share | ||
sudo bash -c 'IFS=:; for d in '"$PATH"'; do chmod -v go-w $d; done' || : | ||
- name: Set ENV | ||
run: | | ||
echo "GNUMAKEFLAGS=-j$((1 + $(nproc --all)))" >> $GITHUB_ENV | ||
- run: ./autogen.sh | ||
working-directory: src | ||
- 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 -j | ||
- name: Create dummy files in build dir | ||
run: | | ||
./miniruby -e '(("a".."z").to_a+("A".."Z").to_a+("0".."9").to_a+%w[foo bar test zzz]).each{|basename|File.write("#{basename}.rb", "raise %(do not load #{basename}.rb)")}' | ||
if: ${{ matrix.test_task == 'check' }} | ||
- name: Enable YJIT through ENV | ||
run: echo "RUBY_YJIT_ENABLE=1" >> $GITHUB_ENV | ||
# Check that the binary was built with YJIT | ||
- name: Check YJIT enabled | ||
run: ./miniruby --yjit -v | grep "+YJIT" | ||
- name: make ${{ matrix.test_task }} | ||
run: make -s -j ${{ matrix.test_task }} RUN_OPTS="$RUN_OPTS" YJIT_BENCH_OPTS="$YJIT_BENCH_OPTS" | ||
timeout-minutes: 60 | ||
env: | ||
RUBY_TESTOPTS: "-q --tty=no" | ||
TEST_BUNDLED_GEMS_ALLOW_FAILURES: "" | ||
PRECHECK_BUNDLED_GEMS: "no" | ||
SYNTAX_SUGGEST_TIMEOUT: "5" | ||
continue-on-error: ${{ matrix.test_task == 'yjit-bench' }} | ||
- name: Show ${{ github.event.pull_request.base.ref }} GitHub URL for yjit-bench comparison | ||
run: echo "https://github.com/${BASE_REPO}/commit/${BASE_SHA}" | ||
env: | ||
BASE_REPO: ${{ github.event.pull_request.base.repo.full_name }} | ||
BASE_SHA: ${{ github.event.pull_request.base.sha }} | ||
if: ${{ matrix.test_task == 'yjit-bench' && startsWith(github.event_name, 'pull') }} | ||
- uses: ruby/action-slack@0bd85c72233cdbb6a0fe01d37aaeff1d21b5fce1 # v3.2.1 | ||
with: | ||
payload: | | ||
{ | ||
"ci": "GitHub Actions", | ||
"env": "${{ github.workflow }} / ${{ matrix.test_task }} ${{ matrix.configure }}", | ||
"url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}", | ||
"commit": "${{ github.sha }}", | ||
"branch": "${{ github.ref_name }}" | ||
} | ||
env: | ||
SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot | ||
if: ${{ failure() && github.event_name == 'push' }} | ||
# - test_task: "yjit-bench" | ||
# configure: "--enable-yjit=dev" | ||
# yjit_bench_opts: "--yjit-stats" | ||
# env: | ||
# GITPULLOPTIONS: --no-tags origin ${{github.ref}} | ||
# RUN_OPTS: ${{ matrix.yjit_opts }} | ||
# YJIT_BENCH_OPTS: ${{ matrix.yjit_bench_opts }} | ||
# RUBY_DEBUG: ci | ||
# BUNDLE_JOBS: 8 # for yjit-bench | ||
# RUST_BACKTRACE: 1 | ||
# runs-on: ubuntu-20.04 | ||
# if: ${{ !contains(github.event.head_commit.message, '[DOC]') && !contains(github.event.pull_request.labels.*.name, 'Documentation') }} | ||
# steps: | ||
# - run: mkdir build | ||
# working-directory: | ||
# - name: Install libraries | ||
# run: | | ||
# set -x | ||
# sudo apt-get update -q || : | ||
# sudo apt-get install --no-install-recommends -q -y build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev autoconf ruby | ||
# - name: Install Rust | ||
# if: ${{ matrix.rust_version }} | ||
# run: rustup install ${{ matrix.rust_version }} --profile minimal | ||
# - name: git config | ||
# run: | | ||
# git config --global advice.detachedHead 0 | ||
# git config --global init.defaultBranch garbage | ||
# - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 | ||
# with: | ||
# path: src | ||
# - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 | ||
# with: | ||
# path: src/.downloaded-cache | ||
# key: downloaded-cache | ||
# - name: Fixed world writable dirs | ||
# run: | | ||
# chmod -v go-w $HOME $HOME/.config | ||
# sudo chmod -R go-w /usr/share | ||
# sudo bash -c 'IFS=:; for d in '"$PATH"'; do chmod -v go-w $d; done' || : | ||
# - name: Set ENV | ||
# run: | | ||
# echo "GNUMAKEFLAGS=-j$((1 + $(nproc --all)))" >> $GITHUB_ENV | ||
# - run: ./autogen.sh | ||
# working-directory: src | ||
# - 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 -j | ||
# - name: Create dummy files in build dir | ||
# run: | | ||
# ./miniruby -e '(("a".."z").to_a+("A".."Z").to_a+("0".."9").to_a+%w[foo bar test zzz]).each{|basename|File.write("#{basename}.rb", "raise %(do not load #{basename}.rb)")}' | ||
# if: ${{ matrix.test_task == 'check' }} | ||
# - name: Enable YJIT through ENV | ||
# run: echo "RUBY_YJIT_ENABLE=1" >> $GITHUB_ENV | ||
# # Check that the binary was built with YJIT | ||
# - name: Check YJIT enabled | ||
# run: ./miniruby --yjit -v | grep "+YJIT" | ||
# - name: make ${{ matrix.test_task }} | ||
# run: make -s -j ${{ matrix.test_task }} RUN_OPTS="$RUN_OPTS" YJIT_BENCH_OPTS="$YJIT_BENCH_OPTS" | ||
# timeout-minutes: 60 | ||
# env: | ||
# RUBY_TESTOPTS: "-q --tty=no" | ||
# TEST_BUNDLED_GEMS_ALLOW_FAILURES: "" | ||
# PRECHECK_BUNDLED_GEMS: "no" | ||
# SYNTAX_SUGGEST_TIMEOUT: "5" | ||
# continue-on-error: ${{ matrix.test_task == 'yjit-bench' }} | ||
# - name: Show ${{ github.event.pull_request.base.ref }} GitHub URL for yjit-bench comparison | ||
# run: echo "https://github.com/${BASE_REPO}/commit/${BASE_SHA}" | ||
# env: | ||
# BASE_REPO: ${{ github.event.pull_request.base.repo.full_name }} | ||
# BASE_SHA: ${{ github.event.pull_request.base.sha }} | ||
# if: ${{ matrix.test_task == 'yjit-bench' && startsWith(github.event_name, 'pull') }} | ||
# - uses: ruby/action-slack@0bd85c72233cdbb6a0fe01d37aaeff1d21b5fce1 # v3.2.1 | ||
# with: | ||
# payload: | | ||
# { | ||
# "ci": "GitHub Actions", | ||
# "env": "${{ github.workflow }} / ${{ matrix.test_task }} ${{ matrix.configure }}", | ||
# "url": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}", | ||
# "commit": "${{ github.sha }}", | ||
# "branch": "${{ github.ref_name }}" | ||
# } | ||
# env: | ||
# SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot | ||
# if: ${{ failure() && github.event_name == 'push' }} | ||
|
||
defaults: | ||
run: | ||
working-directory: build | ||
# defaults: | ||
# run: | ||
# working-directory: build |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters