From fd3229b7a7f456899cf22025cf4cd881266b61a0 Mon Sep 17 00:00:00 2001 From: Sushain Cherivirala Date: Tue, 23 Jul 2024 20:05:20 -0700 Subject: [PATCH] fix: use override Ruby toolchain consistently (#143) --- docs/rules.md | 3 ++- ruby/private/binary.bzl | 2 ++ ruby/private/gem_build.bzl | 4 ++++ ruby/private/gem_push.bzl | 2 ++ 4 files changed, 10 insertions(+), 1 deletion(-) diff --git a/docs/rules.md b/docs/rules.md index 0af4d91c..e697c10b 100644 --- a/docs/rules.md +++ b/docs/rules.md @@ -191,7 +191,7 @@ used by `rb_bundle_fetch()`. ## rb_gem_build
-rb_gem_build(name, deps, srcs, data, bundle_env, gemspec)
+rb_gem_build(name, deps, srcs, data, bundle_env, gemspec, ruby)
 
Builds a Ruby gem. @@ -281,6 +281,7 @@ $ bazel build :gem-build | data | List of runtime dependencies needed by a program that depends on this library. | List of labels | optional | `[]` | | bundle_env | List of bundle environment variables to set when building the library. | Dictionary: String -> String | optional | `{}` | | gemspec | Gemspec file to use for gem building. | Label | required | | +| ruby | Override Ruby toolchain to use when running the script. | Label | optional | `None` | diff --git a/ruby/private/binary.bzl b/ruby/private/binary.bzl index 7f4521f7..b2ce84de 100644 --- a/ruby/private/binary.bzl +++ b/ruby/private/binary.bzl @@ -138,6 +138,8 @@ def rb_binary_impl(ctx): transitive_srcs = get_transitive_srcs(ctx.files.srcs, ctx.attr.deps).to_list() ruby_toolchain = ctx.toolchains["@rules_ruby//ruby:toolchain_type"] + if ctx.attr.ruby != None: + ruby_toolchain = ctx.attr.ruby[platform_common.ToolchainInfo] tools = [ctx.file._runfiles_library] tools.extend(ruby_toolchain.files) diff --git a/ruby/private/gem_build.bzl b/ruby/private/gem_build.bzl index 379cc6ba..e5b44178 100644 --- a/ruby/private/gem_build.bzl +++ b/ruby/private/gem_build.bzl @@ -1,5 +1,6 @@ "Implementation details for rb_gem_build" +load("//ruby/private:binary.bzl", BINARY_ATTRS = "ATTRS") load("//ruby/private:library.bzl", LIBRARY_ATTRS = "ATTRS") load( "//ruby/private:providers.bzl", @@ -20,6 +21,8 @@ def _rb_gem_build_impl(ctx): bundle_env = get_bundle_env({}, ctx.attr.deps) java_toolchain = ctx.toolchains["@bazel_tools//tools/jdk:runtime_toolchain_type"] ruby_toolchain = ctx.toolchains["@rules_ruby//ruby:toolchain_type"] + if ctx.attr.ruby != None: + ruby_toolchain = ctx.attr.ruby[platform_common.ToolchainInfo] tools = [] tools.extend(ruby_toolchain.files) @@ -97,6 +100,7 @@ rb_gem_build = rule( _rb_gem_build_impl, attrs = dict( LIBRARY_ATTRS, + ruby = BINARY_ATTRS["ruby"], gemspec = attr.label( allow_single_file = [".gemspec"], mandatory = True, diff --git a/ruby/private/gem_push.bzl b/ruby/private/gem_push.bzl index c9259355..952473f6 100644 --- a/ruby/private/gem_push.bzl +++ b/ruby/private/gem_push.bzl @@ -7,6 +7,8 @@ def _rb_gem_push_impl(ctx): env = {} java_toolchain = ctx.toolchains["@bazel_tools//tools/jdk:runtime_toolchain_type"] ruby_toolchain = ctx.toolchains["@rules_ruby//ruby:toolchain_type"] + if ctx.attr.ruby != None: + ruby_toolchain = ctx.attr.ruby[platform_common.ToolchainInfo] srcs = [ctx.file.gem] tools = [ruby_toolchain.gem, ctx.file._runfiles_library]