diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..d068932 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,96 @@ +name: Test +on: + push: + pull_request: + +permissions: + contents: read + +jobs: + check: + strategy: + fail-fast: false + matrix: + gc: + - mmtk_plan: MarkSweep + mmtk_build: release + - mmtk_plan: MarkSweep + mmtk_build: debug + timeout: 120 + os: [macos-latest, ubuntu-latest] + + env: + GITPULLOPTIONS: --no-tags origin ${{ github.ref }} + RUBY_DEBUG: ci + + runs-on: ${{ matrix.os }} + + 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@v4 + + - name: Install libraries (macOS) + if: ${{ contains(matrix.os, 'macos') }} + run: | + brew install --quiet gmp libffi openssl@3 zlib autoconf automake libtool + + - name: Install libraries (Ubuntu) + if: ${{ contains(matrix.os, 'ubuntu') }} + run: | + sudo apt-get install -qq -y \ + ${arch:+cross}build-essential${arch/:/-} \ + libssl-dev${arch} libyaml-dev${arch} libreadline6-dev${arch} \ + zlib1g-dev${arch} libncurses5-dev${arch} libffi-dev${arch} + + - uses: actions-rust-lang/setup-rust-toolchain@v1 + - name: Set MMTk environment variables + run: | + if [[ ${{ matrix.gc.mmtk_build }} == debug ]]; then + echo 'RUST_LOG=' >> $GITHUB_ENV + echo 'RUBY_TEST_TIMEOUT_SCALE=20' >> $GITHUB_ENV + echo 'SYNTAX_SUGGEST_TIMEOUT=60' >> $GITHUB_ENV + fi + echo 'EXCLUDES=./test/.excludes-mmtk' >> $GITHUB_ENV + echo 'MSPECOPT=-B./spec/mmtk.mspec' >> $GITHUB_ENV + echo 'MMTK_PLAN=${{ matrix.gc.mmtk_plan }}' >> $GITHUB_ENV + + - uses: actions/checkout@v4 + with: + repository: ruby/ruby + path: ruby + + - name: Build Ruby + working-directory: ruby + run: | + bash autogen.sh + ./configure \ + --prefix=$PWD/install \ + --disable-install-doc \ + --with-modular-gc=$GITHUB_WORKSPACE/ruby_gc + make -j + make install + echo "$PWD/install" >> $GITHUB_PATH + + - name: MMTk shared GC + run: | + bundle install + bundle exec rake install:${{ matrix.gc.mmtk_build }} + echo "RUBY_GC_LIBRARY=mmtk" >> $GITHUB_ENV + + - name: Run Ruby tests + run: >- + make -s check + timeout-minutes: ${{ matrix.gc.timeout || 40 }} + working-directory: ruby + env: + RUBY_TESTOPTS: '-q --tty=no' + TEST_BUNDLED_GEMS_ALLOW_FAILURES: 'typeprof' + PRECHECK_BUNDLED_GEMS: 'no' diff --git a/gc/mmtk/Cargo.lock b/gc/mmtk/Cargo.lock index 637b98f..4abd431 100644 --- a/gc/mmtk/Cargo.lock +++ b/gc/mmtk/Cargo.lock @@ -432,7 +432,7 @@ dependencies = [ [[package]] name = "mmtk" version = "0.30.0" -source = "git+https://github.com/mmtk/mmtk-core.git?rev=ec745353a8de72b645613e0fef3ab7f5f1ad9bd1#ec745353a8de72b645613e0fef3ab7f5f1ad9bd1" +source = "git+https://github.com/mmtk/mmtk-core.git?rev=68bf1b638263b250b12e55ef25bf8d09b01ca0b0#68bf1b638263b250b12e55ef25bf8d09b01ca0b0" dependencies = [ "atomic", "atomic-traits", @@ -468,7 +468,7 @@ dependencies = [ [[package]] name = "mmtk-macros" version = "0.30.0" -source = "git+https://github.com/mmtk/mmtk-core.git?rev=ec745353a8de72b645613e0fef3ab7f5f1ad9bd1#ec745353a8de72b645613e0fef3ab7f5f1ad9bd1" +source = "git+https://github.com/mmtk/mmtk-core.git?rev=68bf1b638263b250b12e55ef25bf8d09b01ca0b0#68bf1b638263b250b12e55ef25bf8d09b01ca0b0" dependencies = [ "proc-macro-error", "proc-macro2", diff --git a/gc/mmtk/Cargo.toml b/gc/mmtk/Cargo.toml index 92ca66d..fd2beb1 100644 --- a/gc/mmtk/Cargo.toml +++ b/gc/mmtk/Cargo.toml @@ -26,7 +26,7 @@ features = ["is_mmtk_object", "object_pinning", "sticky_immix_non_moving_nursery # Uncomment the following lines to use mmtk-core from the official repository. git = "https://github.com/mmtk/mmtk-core.git" -rev = "ec745353a8de72b645613e0fef3ab7f5f1ad9bd1" +rev = "68bf1b638263b250b12e55ef25bf8d09b01ca0b0" # Uncomment the following line to use mmtk-core from a local repository. # path = "../../../mmtk-core"