Skip to content

Commit 40a667e

Browse files
liucijusBorja Lorente
authored andcommitted
Introduce Scala config (bazel-contrib#1133)
* Add scala config repository to store global configuration options * Fix example workspace * Add docs * Get bazel version directly * Remove unused skylib load
1 parent a561b1a commit 40a667e

File tree

19 files changed

+62
-93
lines changed

19 files changed

+62
-93
lines changed

README.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,11 @@ http_archive(
5454
sha256 = "8c48283aeb70e7165af48191b0e39b7434b0368718709d1bced5c3781787d8e7",
5555
)
5656

57-
load("@io_bazel_rules_scala//:version.bzl", "bazel_version")
58-
bazel_version(name = "bazel_version")
57+
# Stores Scala version and other configuration
58+
# 2.12 is a default version, other versions can be use by passing them explicitly:
59+
# scala_config(scala_version = "2.11.12")
60+
load("@io_bazel_rules_scala//:scala_config.bzl", "scala_config")
61+
scala_config()
5962

6063
load("@io_bazel_rules_scala//scala:toolchains.bzl", "scala_register_toolchains")
6164
scala_register_toolchains()

WORKSPACE

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,16 @@ load("@com_github_bazelbuild_buildtools//buildifier:deps.bzl", "buildifier_depen
2626

2727
buildifier_dependencies()
2828

29-
load("@io_bazel_rules_scala//:version.bzl", "bazel_version")
29+
load("@io_bazel_rules_scala//:scala_config.bzl", "scala_config")
3030

31-
bazel_version(name = "bazel_version")
31+
scala_config()
3232

33+
load("@io_bazel_rules_scala_config//:config.bzl", "SCALA_MAJOR_VERSION")
3334
load("//scala:scala.bzl", "scala_repositories")
3435

3536
scala_repositories(fetch_sources = True)
3637

37-
load("//scala:scala_cross_version.bzl", "default_maven_server_urls")
38+
load("//scala:scala_cross_version.bzl", "default_maven_server_urls", "scala_mvn_artifact")
3839
load("//scala:scala_maven_import_external.bzl", "scala_maven_import_external")
3940
load("//twitter_scrooge:twitter_scrooge.bzl", "twitter_scrooge")
4041

@@ -64,13 +65,6 @@ scalafmt_default_config()
6465

6566
scalafmt_repositories()
6667

67-
load(
68-
"//scala:scala_cross_version.bzl",
69-
"default_scala_major_version",
70-
"default_scala_version",
71-
"scala_mvn_artifact",
72-
)
73-
7468
MAVEN_SERVER_URLS = default_maven_server_urls()
7569

7670
# needed for the cross repo proto test
@@ -177,7 +171,7 @@ jvm_maven_import_external(
177171
name = "org_typelevel__cats_core",
178172
artifact = scala_mvn_artifact(
179173
"org.typelevel:cats-core:0.9.0",
180-
default_scala_major_version(),
174+
SCALA_MAJOR_VERSION,
181175
),
182176
artifact_sha256 = "3ca705cba9dc0632e60477d80779006f8c636c0e2e229dda3410a0c314c1ea1d",
183177
server_urls = MAVEN_SERVER_URLS,
@@ -207,5 +201,4 @@ repositories(
207201
"org_spire_math_kind_projector",
208202
],
209203
maven_servers = MAVEN_SERVER_URLS,
210-
scala_version = default_scala_version(),
211204
)

examples/testing/scalatest_repositories/WORKSPACE

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ local_repository(
1616
path = "../../..",
1717
)
1818

19-
load("@io_bazel_rules_scala//:version.bzl", "bazel_version")
19+
load("@io_bazel_rules_scala//:scala_config.bzl", "scala_config")
2020

21-
bazel_version(name = "bazel_version")
21+
scala_config()
2222

2323
load("@io_bazel_rules_scala//scala:scala.bzl", "scala_repositories")
2424

jmh/jmh.bzl

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,10 @@ load("//scala:scala.bzl", "scala_binary", "scala_library")
22
load(
33
"//scala:scala_cross_version.bzl",
44
"default_maven_server_urls",
5-
"default_scala_version",
65
)
76
load("//third_party/repositories:repositories.bzl", "repositories")
87

98
def jmh_repositories(
10-
scala_version = default_scala_version(),
119
maven_servers = default_maven_server_urls(),
1210
overriden_artifacts = {}):
1311
repositories(
@@ -21,7 +19,6 @@ def jmh_repositories(
2119
"io_bazel_rules_scala_org_apache_commons_commons_math3",
2220
],
2321
fetch_sources = False,
24-
scala_version = scala_version,
2522
maven_servers = maven_servers,
2623
overriden_artifacts = {},
2724
)

scala/private/macros/scala_repositories.bzl

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
22
load(
33
"@io_bazel_rules_scala//scala:scala_cross_version.bzl",
44
_default_maven_server_urls = "default_maven_server_urls",
5-
_default_scala_version = "default_scala_version",
65
)
76
load("//third_party/repositories:repositories.bzl", "repositories")
87

@@ -70,7 +69,6 @@ def rules_scala_setup():
7069
)
7170

7271
def scala_repositories(
73-
scala_version = _default_scala_version(),
7472
maven_servers = _default_maven_server_urls(),
7573
overriden_artifacts = {},
7674
fetch_sources = False):
@@ -89,7 +87,6 @@ def scala_repositories(
8987
maven_servers = _default_maven_server_urls(),
9088
fetch_sources = fetch_sources,
9189
overriden_artifacts = overriden_artifacts,
92-
scala_version = scala_version,
9390
)
9491

9592
native.bind(

scala/private/rule_impls.bzl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ load(
2020
_collect_plugin_paths = "collect_plugin_paths",
2121
)
2222
load(":resources.bzl", _resource_paths = "paths")
23-
load("@bazel_version//:def.bzl", "BAZEL_VERSION")
23+
load("@io_bazel_rules_scala_config//:config.bzl", "BAZEL_VERSION")
2424

2525
def expand_location(ctx, flags):
2626
if hasattr(ctx.attr, "data"):

scala/scala_cross_version.bzl

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,6 @@
1515
of abstracting over Scala major version (2.11, 2.12, etc) for dependency
1616
resolution."""
1717

18-
def default_scala_version():
19-
"""return the scala version for use in maven coordinates"""
20-
return "2.12.11"
21-
2218
def default_maven_server_urls():
2319
return [
2420
"https://repo.maven.apache.org/maven2",
@@ -36,12 +32,9 @@ def extract_major_version_underscore(scala_version):
3632
e.g. "2.11.11" -> "2_11" """
3733
return extract_major_version(scala_version).replace(".", "_")
3834

39-
def default_scala_major_version():
40-
return extract_major_version(default_scala_version())
41-
4235
def scala_mvn_artifact(
4336
artifact,
44-
major_scala_version = default_scala_major_version()):
37+
major_scala_version):
4538
"""Add scala version to maven artifact"""
4639
gav = artifact.split(":")
4740
groupid = gav[0]

scala/scalafmt/scalafmt_repositories.bzl

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
load(
22
"//scala:scala_cross_version.bzl",
33
_default_maven_server_urls = "default_maven_server_urls",
4-
_default_scala_version = "default_scala_version",
54
)
65
load("//third_party/repositories:repositories.bzl", "repositories")
76

@@ -15,7 +14,6 @@ def scalafmt_default_config(path = ".scalafmt.conf"):
1514
native.new_local_repository(name = "scalafmt_default", build_file_content = "\n".join(build), path = "")
1615

1716
def scalafmt_repositories(
18-
scala_version = _default_scala_version(),
1917
maven_servers = _default_maven_server_urls(),
2018
overriden_artifacts = {}):
2119
repositories(
@@ -45,6 +43,5 @@ def scalafmt_repositories(
4543
maven_servers = maven_servers,
4644
fetch_sources = True,
4745
overriden_artifacts = overriden_artifacts,
48-
scala_version = scala_version,
4946
)
5047
native.register_toolchains("@io_bazel_rules_scala//scala/scalafmt:scalafmt_toolchain")

scala_config.bzl

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
load("//scala:scala_cross_version.bzl", "extract_major_version")
2+
3+
def _default_scala_version():
4+
"""return the scala version for use in maven coordinates"""
5+
return "2.12.11"
6+
7+
def _store_config(repository_ctx):
8+
repository_ctx.file("BUILD", "exports_files(['def.bzl'])")
9+
10+
scala_version = repository_ctx.attr.scala_version
11+
scala_major_version = extract_major_version(scala_version)
12+
13+
config_file_content = "\n".join([
14+
"BAZEL_VERSION='" + native.bazel_version + "'",
15+
"SCALA_VERSION='" + scala_version + "'",
16+
"SCALA_MAJOR_VERSION='" + scala_major_version + "'",
17+
])
18+
19+
repository_ctx.file("config.bzl", config_file_content)
20+
21+
_config_repository = repository_rule(
22+
implementation = _store_config,
23+
attrs = {
24+
"scala_version": attr.string(
25+
mandatory = True,
26+
),
27+
},
28+
)
29+
30+
def scala_config(scala_version = _default_scala_version()):
31+
_config_repository(
32+
name = "io_bazel_rules_scala_config",
33+
scala_version = scala_version,
34+
)

scala_proto/private/scala_proto_default_repositories.bzl

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
11
load(
22
"//scala:scala_cross_version.bzl",
33
_default_maven_server_urls = "default_maven_server_urls",
4-
_default_scala_version = "default_scala_version",
5-
_scala_mvn_artifact = "scala_mvn_artifact",
64
)
75
load("//third_party/repositories:repositories.bzl", "repositories")
86

97
def scala_proto_default_repositories(
10-
scala_version = _default_scala_version(),
118
maven_servers = _default_maven_server_urls(),
129
overriden_artifacts = {}):
1310
repositories(
@@ -43,7 +40,6 @@ def scala_proto_default_repositories(
4340
"scala_proto_rules_opencensus_impl_core",
4441
"scala_proto_rules_opencensus_contrib_grpc_metrics",
4542
],
46-
scala_version = scala_version,
4743
maven_servers = maven_servers,
4844
fetch_sources = True,
4945
overriden_artifacts = overriden_artifacts,

0 commit comments

Comments
 (0)