diff --git a/.github/workflows/build-gems.yml b/.github/workflows/build-gems.yml new file mode 100644 index 0000000000..0d9fb44c6c --- /dev/null +++ b/.github/workflows/build-gems.yml @@ -0,0 +1,52 @@ +name: Build gems +on: + push: + branches: [main] + tags: ["*"] + paths-ignore: + - "*.md" + - "docs/**" + pull_request: + +jobs: + ci-data: + runs-on: ubuntu-latest + outputs: + result: ${{ steps.fetch.outputs.result }} + steps: + - uses: oxidize-rb/actions/fetch-ci-data@v1 + id: fetch + with: + supported-ruby-platforms: | + exclude: [arm-linux] + stable-ruby-versions: | + exclude: [head] + + cross-gem: + name: Compile native gem for ${{ matrix.ruby-platform }} + runs-on: ubuntu-latest + needs: ci-data + strategy: + fail-fast: false + matrix: + ruby-platform: ${{ fromJSON(needs.ci-data.outputs.result).supported-ruby-platforms }} + steps: + - uses: actions/checkout@v4 + + - uses: oxidize-rb/actions/setup-ruby-and-rust@v1 + with: + ruby-version: "3.2" + bundler-cache: true + cargo-cache: true + cargo-vendor: true + cache-version: v2-${{ matrix.ruby-platform }} + + - name: Set vars + id: vars + run: | + echo "rb-sys-version=$(bundle exec ruby -rrb_sys -e 'puts RbSys::VERSION')" >> $GITHUB_OUTPUT + - uses: oxidize-rb/cross-gem-action@main + with: + version: ${{ steps.vars.outputs.rb-sys-version }} + platform: ${{ matrix.ruby-platform }} + ruby-versions: ${{ join(fromJSON(needs.ci-data.outputs.result).stable-ruby-versions, ', ') }} diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 89218e0422..335629130b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -34,10 +34,10 @@ jobs: ruby-version: "3.2" bundler-cache: true - run: ./bin/setup - - run: rake check:type + - run: bundle exec rake check:type - run: sudo apt-get install clang-format - run: ./tools/clang-format-diff.sh - - run: rake check:bindgen + - run: bundle exec rake check:bindgen - run: git diff --exit-code build-builder-image: diff --git a/Gemfile b/Gemfile index b1f12da929..c503a8ce32 100644 --- a/Gemfile +++ b/Gemfile @@ -7,7 +7,7 @@ gemspec group :development do gem "rake" gem "rake-compiler" - gem "rb_sys", "~> 0.9.63" + gem "rb_sys", "0.9.85" end group :check do diff --git a/tasks/gem.rake b/tasks/gem.rake index b051a8272a..9f92b28602 100644 --- a/tasks/gem.rake +++ b/tasks/gem.rake @@ -10,7 +10,10 @@ end begin require "rb_sys/extensiontask" - RbSys::ExtensionTask.new("ruby_wasm") { |ext| ext.lib_dir = "lib/ruby_wasm" } + gemspec = Gem::Specification.load("ruby_wasm.gemspec") + RbSys::ExtensionTask.new("ruby_wasm", gemspec) do |ext| + ext.lib_dir = "lib/ruby_wasm" + end rescue LoadError => e task :compile do $stderr.puts "Skipping compilation of ruby_wasm extension: #{e.message}"