From 8db7354c442ec483c199db489dea84268e1de3f6 Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Thu, 16 Jan 2025 08:41:08 -0800 Subject: [PATCH 01/12] Use oxidize-rb/actions/cross-gem@v1 instead of oxidize-rb/cross-gem-action@main https://github.com/oxidize-rb/cross-gem-action has been archived in favor of https://github.com/oxidize-rb/actions/tree/main/cross-gem. --- .github/workflows/gem.yml | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/.github/workflows/gem.yml b/.github/workflows/gem.yml index d60f2f9..3a79cd1 100644 --- a/.github/workflows/gem.yml +++ b/.github/workflows/gem.yml @@ -39,25 +39,19 @@ jobs: id: transform_platform run: echo "cross_gem_platform=$(echo '${{ matrix.platform }}' | sed 's/-gnu$//')" >> $GITHUB_ENV - - uses: oxidize-rb/cross-gem-action@main + - uses: oxidize-rb/actions/cross-gem@v1 + id: cross-gem with: platform: ${{ env.cross_gem_action_platform }} - version: 'latest' - env: | - RUBY_CC_VERSION=3.4.0:3.3.5:3.2.0:3.1.0 - - - uses: actions/download-artifact@v3 - with: - name: cross-gem - path: pkg/ + ruby-versions: '3.1,3.2,3.3,3.4' - name: Display structure of built gems run: ls -R - working-directory: pkg/ + working-directory: ${{ steps.cross-gem.outputs.gem-path }} - name: Release gem if: startsWith(github.ref, 'refs/tags/v') - working-directory: pkg/ + working-directory: ${{ steps.cross-gem.outputs.gem-path }} env: RUBYGEMS_API_KEY: ${{secrets.RUBYGEMS_API_KEY}} run: | From 5d60c843237f002af941c8202ed1bd594712a9ae Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Thu, 16 Jan 2025 08:47:41 -0800 Subject: [PATCH 02/12] Test gem product --- .github/workflows/gem.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/gem.yml b/.github/workflows/gem.yml index 3a79cd1..0cb8a79 100644 --- a/.github/workflows/gem.yml +++ b/.github/workflows/gem.yml @@ -1,12 +1,11 @@ name: Build and release gem on: - workflow_dispatch: push: branches: - main - tags: - - 'v*' + + pull_request: jobs: native_gem: From 3ddf3eda5545e5a8a0ae8c16fe14a64bb9fcf83f Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Thu, 16 Jan 2025 08:57:57 -0800 Subject: [PATCH 03/12] Omit -gnu suffix --- .github/workflows/gem.yml | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/.github/workflows/gem.yml b/.github/workflows/gem.yml index 0cb8a79..fefca2d 100644 --- a/.github/workflows/gem.yml +++ b/.github/workflows/gem.yml @@ -14,11 +14,11 @@ jobs: strategy: matrix: platform: - - "aarch64-linux-gnu" + - "aarch64-linux" - "aarch64-linux-musl" - "arm64-darwin" - "x86_64-darwin" - - "x86_64-linux-gnu" + - "x86_64-linux" - "x86_64-linux-musl" - "x64-mingw32" - "x64-mingw-ucrt" @@ -34,14 +34,10 @@ jobs: cargo-cache: true cargo-vendor: true - - name: Transform platform name - id: transform_platform - run: echo "cross_gem_platform=$(echo '${{ matrix.platform }}' | sed 's/-gnu$//')" >> $GITHUB_ENV - - uses: oxidize-rb/actions/cross-gem@v1 id: cross-gem with: - platform: ${{ env.cross_gem_action_platform }} + platform: ${{ matrix.platform }} ruby-versions: '3.1,3.2,3.3,3.4' - name: Display structure of built gems From a3a37b62db2a51b114c3eed01041c5b2ad156656 Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Wed, 29 Jan 2025 21:05:56 -0800 Subject: [PATCH 04/12] Upgrade rb-sys and use RakeCompilerDock.ruby_cc_version --- .ruby-version | 2 +- Rakefile | 11 ++++------- y-rb.gemspec | 3 +-- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/.ruby-version b/.ruby-version index a9cadc6..408069a 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -ruby-3.2.0 +ruby-3.4.1 diff --git a/Rakefile b/Rakefile index 60db2d1..a1ae7be 100644 --- a/Rakefile +++ b/Rakefile @@ -2,11 +2,12 @@ require "bundler/gem_tasks" require "rubygems/package_task" +require "rake_compiler_dock" require "rake/testtask" require "rake/extensiontask" require "rb_sys" -cross_rubies = %w[3.4.0 3.3.5 3.2.0 3.1.0] +ruby_cc_version = RakeCompilerDock.ruby_cc_version(">= 3.1") cross_platforms = %w[ aarch64-linux-gnu aarch64-linux-musl @@ -41,15 +42,11 @@ namespace "gem" do cross_platforms.each do |plat| desc "Build the native gem for #{plat}" task plat => "prepare" do - require "rake_compiler_dock" - - # rbsys doesn't ship an alias -gnu image yet - rcd_plat = plat.gsub(/-gnu$/, '') - ENV["RCD_IMAGE"] = "rbsys/#{rcd_plat}:#{RbSys::VERSION}" + ENV["RCD_IMAGE"] = "rbsys/#{plat}:#{RbSys::VERSION}" RakeCompilerDock.sh <<~SH, platform: plat bundle && \ - RUBY_CC_VERSION="#{cross_rubies.join(":")}" \ + RUBY_CC_VERSION="#{ruby_cc_version}" rake native:#{plat} pkg/#{spec.full_name}-#{plat}.gem SH end diff --git a/y-rb.gemspec b/y-rb.gemspec index 03cc831..b3cb0c1 100644 --- a/y-rb.gemspec +++ b/y-rb.gemspec @@ -37,11 +37,10 @@ Gem::Specification.new do |spec| spec.metadata["rubygems_mfa_required"] = "true" spec.add_dependency "rake", "~> 13.2" - spec.add_dependency "rb_sys", "~> 0.9.86" + spec.add_dependency "rb_sys", "~> 0.9.109" spec.add_development_dependency "base64" spec.add_development_dependency "rake-compiler", "~> 1.2.1" - spec.add_development_dependency "rake-compiler-dock", "~> 1.9.1" spec.extensions = ["ext/yrb/extconf.rb"] end From 985dd2fec60350f9b7bda713aca779aec0cd5332 Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Wed, 29 Jan 2025 21:08:49 -0800 Subject: [PATCH 05/12] Add gnu to Linux aarch64 and x86_64 targets --- .github/workflows/gem.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/gem.yml b/.github/workflows/gem.yml index fefca2d..17c1d81 100644 --- a/.github/workflows/gem.yml +++ b/.github/workflows/gem.yml @@ -14,11 +14,11 @@ jobs: strategy: matrix: platform: - - "aarch64-linux" + - "aarch64-linux-gnu" - "aarch64-linux-musl" - "arm64-darwin" - "x86_64-darwin" - - "x86_64-linux" + - "x86_64-linux-gnu" - "x86_64-linux-musl" - "x64-mingw32" - "x64-mingw-ucrt" From a52c1cd0bfcb8668c12bf0201c095a970cea9175 Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Wed, 29 Jan 2025 21:15:08 -0800 Subject: [PATCH 06/12] Drop x64-mingw32 support As https://github.com/rake-compiler/rake-compiler-dock mentions: x64-mingw-ucrt should be used for Ruby 3.1 and later on windows. x64-mingw32 should be used for Ruby 3.0 and earlier. Since y-rb doesn't support Ruby 3.0 and earlier, drop support of this gem. --- .github/workflows/gem.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/gem.yml b/.github/workflows/gem.yml index 17c1d81..f23f592 100644 --- a/.github/workflows/gem.yml +++ b/.github/workflows/gem.yml @@ -20,7 +20,6 @@ jobs: - "x86_64-darwin" - "x86_64-linux-gnu" - "x86_64-linux-musl" - - "x64-mingw32" - "x64-mingw-ucrt" environment: "yrb-deploy" steps: From fabf59e0c72ca9dbc04ff7e4ceb0bade674be579 Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Wed, 29 Jan 2025 21:25:50 -0800 Subject: [PATCH 07/12] Update Cargo.lock We need to pull in the latest rb-sys version. --- Cargo.lock | 66 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 38 insertions(+), 28 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 93c53b8..858eb07 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -39,15 +39,15 @@ dependencies = [ [[package]] name = "bitflags" -version = "2.7.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1be3f42a67d6d345ecd59f675f3f012d6974981560836e938c22b424b85ce1be" +checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" [[package]] name = "bumpalo" -version = "3.16.0" +version = "3.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" [[package]] name = "byteorder" @@ -123,9 +123,9 @@ checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "js-sys" -version = "0.3.76" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ "once_cell", "wasm-bindgen", @@ -161,9 +161,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.24" +version = "0.4.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6ea2a48c204030ee31a7d7fc72c93294c92fe87ecb1789881c9543516e1a0d" +checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" [[package]] name = "magnus" @@ -286,18 +286,18 @@ dependencies = [ [[package]] name = "rb-sys" -version = "0.9.107" +version = "0.9.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56aaf81d9efc195606456e91896297ee5ab2002381539f8ed1ba6b4f2e467f3b" +checksum = "6cfdfe3935ea21d9d3b0251f3258ff8773d9525bc422e27847ca4c567214f0b0" dependencies = [ "rb-sys-build", ] [[package]] name = "rb-sys-build" -version = "0.9.107" +version = "0.9.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "035b513baded6df2b90a8559efb1973c47ba42e16c21c5f0863dd2aa4dbd6abe" +checksum = "23dd2fa891aed8ff298d6ee0301e4c704a5bf469fbc9e9a46d7c1af26f020ad1" dependencies = [ "bindgen", "lazy_static", @@ -349,11 +349,17 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +[[package]] +name = "rustversion" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" + [[package]] name = "ryu" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" [[package]] name = "seq-macro" @@ -383,9 +389,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.135" +version = "1.0.138" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b0d7ba2887406110130a978386c4e1befb98c674b4fba677954e4db976630d9" +checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949" dependencies = [ "itoa", "memchr", @@ -473,9 +479,9 @@ dependencies = [ [[package]] name = "unicode-ident" -version = "1.0.14" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" +checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034" [[package]] name = "wasi" @@ -485,20 +491,21 @@ checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" [[package]] name = "wasm-bindgen" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if", "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", "log", @@ -510,9 +517,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -520,9 +527,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", @@ -533,9 +540,12 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] [[package]] name = "windows-targets" From c52991a3763846645918f227e03cc7546fa10d3e Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Fri, 31 Jan 2025 10:33:05 -0800 Subject: [PATCH 08/12] Temporary use rbsys main image to validate --- Rakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Rakefile b/Rakefile index a1ae7be..aa4659e 100644 --- a/Rakefile +++ b/Rakefile @@ -42,7 +42,7 @@ namespace "gem" do cross_platforms.each do |plat| desc "Build the native gem for #{plat}" task plat => "prepare" do - ENV["RCD_IMAGE"] = "rbsys/#{plat}:#{RbSys::VERSION}" + ENV["RCD_IMAGE"] = "rbsys/#{plat}:main" RakeCompilerDock.sh <<~SH, platform: plat bundle && \ From 9ff0019dff8e35bce4a5aafcc81da8132a855bee Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Fri, 31 Jan 2025 20:47:46 -0800 Subject: [PATCH 09/12] Revert "Temporary use rbsys main image to validate" This reverts commit c52991a3763846645918f227e03cc7546fa10d3e. --- Rakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Rakefile b/Rakefile index aa4659e..a1ae7be 100644 --- a/Rakefile +++ b/Rakefile @@ -42,7 +42,7 @@ namespace "gem" do cross_platforms.each do |plat| desc "Build the native gem for #{plat}" task plat => "prepare" do - ENV["RCD_IMAGE"] = "rbsys/#{plat}:main" + ENV["RCD_IMAGE"] = "rbsys/#{plat}:#{RbSys::VERSION}" RakeCompilerDock.sh <<~SH, platform: plat bundle && \ From 098b645d7d70d60a697b1671d973292abae99628 Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Fri, 31 Jan 2025 20:48:07 -0800 Subject: [PATCH 10/12] Update to rb-sys v0.9.110 --- Cargo.lock | 8 ++++---- y-rb.gemspec | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 858eb07..c22411a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -286,18 +286,18 @@ dependencies = [ [[package]] name = "rb-sys" -version = "0.9.109" +version = "0.9.110" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cfdfe3935ea21d9d3b0251f3258ff8773d9525bc422e27847ca4c567214f0b0" +checksum = "56cf964f8e44115e50009921ea3d3791b6f74d1ae6d6ed37114fbe03a1cd7308" dependencies = [ "rb-sys-build", ] [[package]] name = "rb-sys-build" -version = "0.9.109" +version = "0.9.110" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23dd2fa891aed8ff298d6ee0301e4c704a5bf469fbc9e9a46d7c1af26f020ad1" +checksum = "161480347f56473107d4135643b6b1909331eec61445e113b256708a28b691c5" dependencies = [ "bindgen", "lazy_static", diff --git a/y-rb.gemspec b/y-rb.gemspec index b3cb0c1..a569251 100644 --- a/y-rb.gemspec +++ b/y-rb.gemspec @@ -37,7 +37,7 @@ Gem::Specification.new do |spec| spec.metadata["rubygems_mfa_required"] = "true" spec.add_dependency "rake", "~> 13.2" - spec.add_dependency "rb_sys", "~> 0.9.109" + spec.add_dependency "rb_sys", "~> 0.9.110" spec.add_development_dependency "base64" spec.add_development_dependency "rake-compiler", "~> 1.2.1" From 500d7b32e8aaa5d8b269a294104ed8e6f6314db6 Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Fri, 31 Jan 2025 20:55:30 -0800 Subject: [PATCH 11/12] Use pkg/ --- .github/workflows/gem.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/gem.yml b/.github/workflows/gem.yml index f23f592..f87f0c1 100644 --- a/.github/workflows/gem.yml +++ b/.github/workflows/gem.yml @@ -41,11 +41,11 @@ jobs: - name: Display structure of built gems run: ls -R - working-directory: ${{ steps.cross-gem.outputs.gem-path }} + working-directory: pkg/ - name: Release gem if: startsWith(github.ref, 'refs/tags/v') - working-directory: ${{ steps.cross-gem.outputs.gem-path }} + working-directory: pkg/ env: RUBYGEMS_API_KEY: ${{secrets.RUBYGEMS_API_KEY}} run: | From fb6f48bc79a135f6b738c3228b62a115de1db5c7 Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Fri, 31 Jan 2025 21:01:51 -0800 Subject: [PATCH 12/12] Tie version --- Rakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Rakefile b/Rakefile index a1ae7be..3e4de4e 100644 --- a/Rakefile +++ b/Rakefile @@ -7,7 +7,7 @@ require "rake/testtask" require "rake/extensiontask" require "rb_sys" -ruby_cc_version = RakeCompilerDock.ruby_cc_version(">= 3.1") +ruby_cc_version = RakeCompilerDock.ruby_cc_version([">= 3.1", "< 3.5"]) cross_platforms = %w[ aarch64-linux-gnu aarch64-linux-musl