diff --git a/.github/workflows/sharedgc-macos.yml b/.github/workflows/sharedgc-macos.yml deleted file mode 100644 index 80daf65e863333..00000000000000 --- a/.github/workflows/sharedgc-macos.yml +++ /dev/null @@ -1,212 +0,0 @@ -name: Shared GC (macOS) -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: - make: - strategy: - matrix: - include: - - test_task: check - gc_name: 'mmtk' - build: 'debug' - configure: '--with-shared-gc=/Users/runner/ruby_gc' - os: macos-14 - - test_task: check - gc_name: 'mmtk' - build: 'release' - configure: '--with-shared-gc=/Users/runner/ruby_gc' - os: macos-14 - fail-fast: false - - env: - GITPULLOPTIONS: --no-tags origin ${{ github.ref }} - - 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@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 - 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 - clean: true - dummy-files: ${{ matrix.test_task == 'check' }} - # Set fetch-depth: 0 so that Launchable can receive commits information. - fetch-depth: 10 - - - name: make sure that kern.coredump=1 - run: | - sysctl -n kern.coredump - sudo sysctl -w kern.coredump=1 - sudo chmod -R +rwx /cores/ - - - name: Delete unused SDKs - # To free up disk space to not run out during the run - run: | - sudo rm -rf ~/.dotnet - sudo rm -rf /Library/Android - sudo rm -rf /Library/Developer/CoreSimulator - continue-on-error: true - - - name: Run configure - env: - configure: ${{ matrix.configure }} ${ruby_configure_args} - run: ../src/configure -C --disable-install-doc ${{ env.configure }} - - - uses: actions-rust-lang/setup-rust-toolchain@v1 - - name: Build MMTK Ruby lib - run: | - cd ../src/gc/mmtk - cargo build ${{ matrix.build != 'debug' && format('--{0}', matrix.build) || format('') }} - echo "RUST_LOG=" >> $GITHUB_ENV - echo "EXCLUDES=../src/test/.excludes-mmtk" >> $GITHUB_ENV - if: ${{ matrix.gc_name == 'mmtk' }} - - - name: Build shared GC - run: | - echo "RUBY_GC_LIBRARY=${{ matrix.gc_name }}" >> $GITHUB_ENV - make shared-gc SHARED_GC=${{ matrix.gc_name }} MMTK_BUILD=${{ matrix.build }} - - - name: Verify MMTk bindgen - run: | - cd ../src/gc/mmtk - cargo install --force cbindgen@0.26.0 - cbindgen --config cbindgen.toml --output ../mmtk.h - if read -n1 -d '' < <(git diff ../mmtk.h); then - git diff ../mmtk.h - exit 1 - fi - if: ${{ matrix.gc_name == 'mmtk' }} - - - run: make prepare-gems - if: ${{ matrix.test_task == 'test-bundled-gems' }} - - - run: make - - - run: | - make golf - case "${{ matrix.configure }}" in - *'--enable-shared'*) - make runnable - ./bin/goruby -veh - ;; - *) - ./goruby -veh - ;; - esac - - - name: Set test options for skipped tests - run: | - set -x - TESTS="$(echo "${{ matrix.skipped_tests }}" | sed 's| |$$/ -n!/|g;s|^|-n!/|;s|$|$$/|')" - echo "TESTS=${TESTS}" >> $GITHUB_ENV - if: ${{ matrix.test_task == 'check' && matrix.skipped_tests }} - - - name: Set up Launchable - uses: ./.github/actions/launchable/setup - with: - os: ${{ matrix.os }} - test-opts: ${{ matrix.test_opts }} - launchable-token: ${{ secrets.LAUNCHABLE_TOKEN }} - builddir: build - srcdir: src - continue-on-error: true - - - name: Set extra test options - run: | - echo "TESTS=$TESTS ${{ matrix.test_opts }}" >> $GITHUB_ENV - echo "RUBY_TEST_TIMEOUT_SCALE=10" >> $GITHUB_ENV # With --repeat-count=2, flaky test by timeout occurs frequently for some reason - if: matrix.test_opts - - - name: make ${{ matrix.test_task }} - run: | - ulimit -c unlimited - make -s ${{ matrix.test_task }} ${TESTS:+TESTS="$TESTS"} - timeout-minutes: 60 - env: - RUBY_TESTOPTS: '-q --tty=no' - TEST_BUNDLED_GEMS_ALLOW_FAILURES: 'typeprof' - PRECHECK_BUNDLED_GEMS: 'no' - - - name: make skipped tests - run: | - make -s test-all TESTS="${TESTS//-n!\//-n/}" - env: - GNUMAKEFLAGS: '' - RUBY_TESTOPTS: '-v --tty=no' - PRECHECK_BUNDLED_GEMS: 'no' - if: ${{ matrix.test_task == 'check' && matrix.skipped_tests }} - continue-on-error: ${{ matrix.continue-on-skipped_tests || false }} - - - uses: ./.github/actions/slack - with: - label: ${{ matrix.os }} / ${{ matrix.test_task }} - SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot - if: ${{ failure() }} - - - name: Resolve job ID - id: job_id - uses: actions/github-script@main - env: - matrix: ${{ toJson(matrix) }} - with: - script: | - const { data: workflow_run } = await github.rest.actions.listJobsForWorkflowRun({ - owner: context.repo.owner, - repo: context.repo.repo, - run_id: context.runId - }); - const matrix = JSON.parse(process.env.matrix); - const job_name = `${context.job}${matrix ? ` (${Object.values(matrix).join(", ")})` : ""}`; - return workflow_run.jobs.find((job) => job.name === job_name).id; - - result: - if: ${{ always() }} - name: ${{ github.workflow }} result - runs-on: macos-latest - needs: [make] - steps: - - run: exit 1 - working-directory: - if: ${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') }} - -defaults: - run: - working-directory: build diff --git a/.github/workflows/sharedgc-ubuntu.yml b/.github/workflows/sharedgc.yml similarity index 85% rename from .github/workflows/sharedgc-ubuntu.yml rename to .github/workflows/sharedgc.yml index 181044d880e49c..b48f4a76111b94 100644 --- a/.github/workflows/sharedgc-ubuntu.yml +++ b/.github/workflows/sharedgc.yml @@ -24,6 +24,7 @@ jobs: make: strategy: matrix: + os: [macos-latest, ubuntu-latest] gc_name: ['default', 'mmtk'] build: ['debug', 'release'] mmtk_plan: ['MarkSweep', 'Immix'] @@ -43,7 +44,7 @@ jobs: GITPULLOPTIONS: --no-tags origin ${{ github.ref }} RUBY_DEBUG: ci - runs-on: ${{ matrix.os || 'ubuntu-22.04' }} + runs-on: ${{ matrix.os }} if: >- ${{!(false @@ -61,14 +62,19 @@ jobs: sparse-checkout-cone-mode: false sparse-checkout: /.github - - uses: ./.github/actions/setup/ubuntu - with: - arch: ${{ matrix.arch }} + - name: Install libraries (macOS) + uses: ./.github/actions/setup/macos + if: ${{ contains(matrix.os, 'macos') }} + + - name: Install libraries (Ubuntu) + uses: ./.github/actions/setup/ubuntu + if: ${{ contains(matrix.os, 'ubuntu') }} - uses: ruby/setup-ruby@a6e6f86333f0a2523ece813039b8b4be04560854 # v1.190.0 with: ruby-version: '3.0' bundler: none + if: ${{ contains(matrix.os, 'ubuntu') }} - uses: ./.github/actions/setup/directories with: @@ -80,10 +86,25 @@ jobs: # Set fetch-depth: 10 so that Launchable can receive commits information. fetch-depth: 10 + - name: make sure that kern.coredump=1 + run: | + sysctl -n kern.coredump + sudo sysctl -w kern.coredump=1 + sudo chmod -R +rwx /cores/ + if: ${{ contains(matrix.os, 'macos') }} + + - name: Delete unused SDKs + # To free up disk space to not run out during the run + run: | + sudo rm -rf ~/.dotnet + sudo rm -rf /Library/Android + sudo rm -rf /Library/Developer/CoreSimulator + continue-on-error: true + if: ${{ contains(matrix.os, 'macos') }} + - name: Run configure env: - arch: ${{ matrix.arch }} - configure: ${{ matrix.configure }} + configure: ${{ matrix.configure }} ${ruby_configure_args} run: >- $SETARCH ../src/configure -C --disable-install-doc ${configure:-cppflags=-DRUBY_DEBUG} ${arch:+--target=$arch-$OSTYPE --host=$arch-$OSTYPE}