Skip to content

Commit fdcf4ce

Browse files
Add ruby versioning support (#1)
* Use specified toolchain for ruby binaries instead of host default * Support autodetection of ruby platform * Implement ruby versioning scheme based on flag settings * Cleaning up toolchain registration * Fixed broken tests in bin/test-suite * Responding to review comments * Consolidate version settings, add some testing * Ran buildifier * Rename main branch for CI
1 parent 019aab1 commit fdcf4ce

File tree

26 files changed

+454
-134
lines changed

26 files changed

+454
-134
lines changed

.github/workflows/tests.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ name: Tests
33
on:
44
push:
55
branches:
6-
- master
6+
- main
77
pull_request:
88
branches:
9-
- master
9+
- main
1010

1111
jobs:
1212
test-suite:

README.adoc

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -97,12 +97,7 @@ git_repository(
9797
branch = "master"
9898
)
9999
100-
load(
101-
"@rules_ruby//ruby:deps.bzl",
102-
"rules_ruby_dependencies",
103-
"rules_ruby_select_sdk",
104-
)
105-
100+
load("@rules_ruby//ruby:deps.bzl", "rules_ruby_dependencies")
106101
rules_ruby_dependencies()
107102
108103
#———————————————————————————————————————————————————————————————————————
@@ -113,7 +108,8 @@ rules_ruby_dependencies()
113108
load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace")
114109
bazel_skylib_workspace()
115110
116-
rules_ruby_select_sdk(version = "3.0.2")
111+
load("@rules_ruby//ruby:deps.bzl", "rules_ruby_register_toolchains")
112+
rules_ruby_register_toolchains(["ruby-3.0"])
117113
118114
#———————————————————————————————————————————————————————————————————————
119115
# Now, load the ruby_bundle rule & install gems specified in the Gemfile
@@ -486,8 +482,7 @@ ruby_bundle(
486482
excludes = {},
487483
srcs = [],
488484
vendor_cache = False,
489-
ruby_sdk = "@org_ruby_lang_ruby_toolchain",
490-
ruby_interpreter = "@org_ruby_lang_ruby_toolchain//:ruby",
485+
ruby_interpreter = "@rules_ruby//ruby/runtime:interpreter",
491486
)
492487
----
493488

WORKSPACE

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
workspace(name = "rules_ruby")
22

3-
load("@//ruby:deps.bzl", "rules_ruby_dependencies", "rules_ruby_select_sdk")
3+
load("@//ruby:deps.bzl", "rules_ruby_dependencies")
44

55
rules_ruby_dependencies()
66

@@ -12,7 +12,12 @@ load("@bazel_skylib//lib:versions.bzl", "versions")
1212

1313
versions.check("3.4.1")
1414

15-
rules_ruby_select_sdk("3.0.2")
15+
load("@rules_ruby//ruby:deps.bzl", "rules_ruby_register_toolchains")
16+
17+
rules_ruby_register_toolchains([
18+
"ruby-3.0",
19+
"jruby-9.2",
20+
])
1621

1722
local_repository(
1823
name = "rules_ruby_ruby_tests_testdata_another_workspace",

bin/test-suite

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,6 @@ export BashMatic__Expr="
3232
[[ -f ${HOME}/.bashmatic/init.sh ]] && source ${HOME}/.bashmatic/init.sh;
3333
set -e
3434
"
35-
export Bazel__BuildSteps="
36-
bazel ${BAZEL_OPTS} info; echo; echo
37-
bazel ${BAZEL_OPTS} build ${BAZEL_BUILD_OPTS} -- //... ; echo; echo
38-
bazel ${BAZEL_OPTS} test ${BAZEL_BUILD_OPTS} ${BAZEL_TEST_OPTS} -- //... ; echo; echo
39-
"
4035
deps.start-clock
4136

4237
run.set-all abort-on-error show-output-on
@@ -162,22 +157,33 @@ test.buildifier() {
162157
test.simple-script() {
163158
__test.exec simple-script "
164159
cd examples/simple_script
165-
${Bazel__BuildSteps}
166-
echo run :bin; bazel ${BAZEL_OPTS} run ${BAZEL_BUILD_OPTS} :bin
167-
echo run :rubocop; bazel ${BAZEL_OPTS} run ${BAZEL_BUILD_OPTS} :rubocop
160+
bazel ${BAZEL_OPTS} info; echo; echo
161+
bazel ${BAZEL_OPTS} build ${BAZEL_BASE_BUILD_OPTS} -- //... ; echo; echo
162+
bazel ${BAZEL_OPTS} test ${BAZEL_BASE_BUILD_OPTS} ${BAZEL_TEST_OPTS} -- //... ; echo; echo
163+
echo run :bin; bazel ${BAZEL_OPTS} run ${BAZEL_BASE_BUILD_OPTS} :bin
164+
echo run :rubocop; bazel ${BAZEL_OPTS} run ${BAZEL_BASE_BUILD_OPTS} :rubocop
168165
"
169166
}
170167

171168
# Builds and runs workspace inside examples/simple_script
172169
test.example-gem() {
173170
__test.exec example-gem "
174171
cd examples/example_gem
175-
echo bazel ${BAZEL_OPTS} build ...:all; bazel ${BAZEL_OPTS} build ...:all
172+
echo bazel ${BAZEL_OPTS} build ...:all
173+
bazel ${BAZEL_OPTS} build --@rules_ruby//ruby/runtime:version=ruby-3.0 ...:all
176174
"
177175
}
178176

179177
test.workspace() {
180-
__test.exec workspace "${Bazel__BuildSteps}"
178+
__test.exec workspace "
179+
bazel ${BAZEL_OPTS} info; echo; echo
180+
bazel ${BAZEL_OPTS} build ${BAZEL_BUILD_OPTS} -- //... ; echo; echo
181+
bazel ${BAZEL_OPTS} test ${BAZEL_BUILD_OPTS} ${BAZEL_TEST_OPTS} -- //... ; echo; echo
182+
bazel ${BAZEL_OPTS} build ${BAZEL_BUILD_OPTS} --@rules_ruby//ruby/runtime:version=ruby-3.0 -- //... ; echo; echo
183+
bazel ${BAZEL_OPTS} test ${BAZEL_BUILD_OPTS} --@rules_ruby//ruby/runtime:version=ruby-3.0 ${BAZEL_TEST_OPTS} -- //... ; echo; echo
184+
bazel ${BAZEL_OPTS} build ${BAZEL_BUILD_OPTS} --@rules_ruby//ruby/runtime:version=jruby-9.2 -- //... ; echo; echo
185+
bazel ${BAZEL_OPTS} test ${BAZEL_BUILD_OPTS} --@rules_ruby//ruby/runtime:version=jruby-9.2 ${BAZEL_TEST_OPTS} -- //... ; echo; echo
186+
"
181187
}
182188

183189
# Private

examples/example_gem/WORKSPACE

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,13 @@ local_repository(
77
path = "../..",
88
)
99

10-
load(
11-
"@rules_ruby//ruby:deps.bzl",
12-
"rules_ruby_dependencies",
13-
"rules_ruby_select_sdk",
14-
)
10+
load("@rules_ruby//ruby:deps.bzl", "rules_ruby_dependencies")
1511

1612
rules_ruby_dependencies()
1713

18-
rules_ruby_select_sdk("3.0.2")
14+
load("@rules_ruby//ruby:deps.bzl", "rules_ruby_register_toolchains")
15+
16+
rules_ruby_register_toolchains(["ruby-3.0"])
1917

2018
load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace")
2119

examples/simple_rails_api/WORKSPACE

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,13 @@ local_repository(
77
path = "../..",
88
)
99

10-
load(
11-
"@rules_ruby//ruby:deps.bzl",
12-
"rules_ruby_dependencies",
13-
"rules_ruby_select_sdk",
14-
)
10+
load("@rules_ruby//ruby:deps.bzl", "rules_ruby_dependencies")
1511

1612
rules_ruby_dependencies()
1713

18-
rules_ruby_select_sdk(version = "3.0.2")
14+
load("@rules_ruby//ruby:deps.bzl", "rules_ruby_register_toolchains")
15+
16+
rules_ruby_register_toolchains(["ruby-3.0"])
1917

2018
load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace")
2119

examples/simple_script/WORKSPACE

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,11 @@ local_repository(
77
path = "../..",
88
)
99

10-
load(
11-
"@rules_ruby//ruby:deps.bzl",
12-
"rules_ruby_dependencies",
13-
"rules_ruby_select_sdk",
14-
)
10+
load("@rules_ruby//ruby:deps.bzl", "rules_ruby_dependencies", "rules_ruby_register_toolchains")
1511

1612
rules_ruby_dependencies()
1713

18-
rules_ruby_select_sdk(version = "3.0.2")
14+
rules_ruby_register_toolchains(["ruby-3.0"])
1915

2016
load("@rules_ruby//ruby:defs.bzl", "ruby_bundle")
2117

examples/simple_script_vendored/WORKSPACE

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,11 @@ local_repository(
1010
path = "../..",
1111
)
1212

13-
load(
14-
"@rules_ruby//ruby:deps.bzl",
15-
"rules_ruby_dependencies",
16-
"rules_ruby_select_sdk",
17-
)
13+
load("@rules_ruby//ruby:deps.bzl", "rules_ruby_dependencies", "rules_ruby_register_toolchains")
1814

1915
rules_ruby_dependencies()
2016

21-
rules_ruby_select_sdk(version = "2.7.1")
17+
rules_ruby_register_toolchains(["ruby-2.7.1"])
2218

2319
load("@rules_ruby//ruby:defs.bzl", "ruby_bundle")
2420

ruby/deps.bzl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ load(
55
)
66
load(
77
"@rules_ruby//ruby/private:sdk.bzl",
8-
_rules_ruby_select_sdk = "rules_ruby_select_sdk",
8+
_rules_ruby_register_toolchains = "rules_ruby_register_toolchains",
99
)
1010

1111
rules_ruby_dependencies = _rules_ruby_dependencies
12-
rules_ruby_select_sdk = _rules_ruby_select_sdk
12+
rules_ruby_register_toolchains = _rules_ruby_register_toolchains

ruby/private/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
exports_files(
22
[
33
"binary_wrapper.tpl",
4+
"binary_runner.tpl",
45
],
56
visibility = ["//visibility:public"],
67
)

0 commit comments

Comments
 (0)