Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Validate repository Scala version against scala_config #1436

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,14 @@ http_archive(
load("@io_bazel_rules_scala//:scala_config.bzl", "scala_config")
scala_config()

load("@io_bazel_rules_scala//scala:scala.bzl", "scala_repositories")
scala_repositories()
load("//scala:scala.bzl", "rules_scala_setup", "rules_scala_toolchain_deps_repositories")

# loads other rules Rules Scala depends on
rules_scala_setup()

# loads Maven deps like Scala compiler and standard libs, on production projects you should consider
# defining a custom deps toolchains to use your project libs instead
rules_scala_toolchain_deps_repositories(fetch_sources = True)

load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies", "rules_proto_toolchains")
rules_proto_dependencies()
Expand Down
6 changes: 4 additions & 2 deletions WORKSPACE
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,11 @@ load("@io_bazel_rules_scala//:scala_config.bzl", "scala_config")

scala_config()

load("//scala:scala.bzl", "scala_repositories")
load("//scala:scala.bzl", "rules_scala_setup", "rules_scala_toolchain_deps_repositories")

scala_repositories(fetch_sources = True)
rules_scala_setup()

rules_scala_toolchain_deps_repositories(fetch_sources = True)

load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies", "rules_proto_toolchains")

Expand Down
21 changes: 16 additions & 5 deletions scala/private/macros/scala_repositories.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,18 @@ ARTIFACT_IDS = [
"io_bazel_rules_scala_scala_library_2",
]

def rules_scala_toolchain_deps_repositories(
maven_servers = _default_maven_server_urls(),
overriden_artifacts = {},
fetch_sources = False):
repositories(
for_artifact_ids = ARTIFACT_IDS,
maven_servers = maven_servers,
fetch_sources = fetch_sources,
overriden_artifacts = overriden_artifacts,
validate_scala_version = True,
)

def scala_repositories(
maven_servers = _default_maven_server_urls(),
overriden_artifacts = {},
Expand All @@ -69,9 +81,8 @@ def scala_repositories(
rules_scala_setup()

if load_jar_deps:
repositories(
for_artifact_ids = ARTIFACT_IDS,
maven_servers = maven_servers,
fetch_sources = fetch_sources,
overriden_artifacts = overriden_artifacts,
rules_scala_toolchain_deps_repositories(
maven_servers,
overriden_artifacts,
fetch_sources,
)
4 changes: 4 additions & 0 deletions scala/scala.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ load(
)
load(
"@io_bazel_rules_scala//scala/private:macros/scala_repositories.bzl",
_rules_scala_setup = "rules_scala_setup",
_rules_scala_toolchain_deps_repositories = "rules_scala_toolchain_deps_repositories",
_scala_repositories = "scala_repositories",
)
load(
Expand Down Expand Up @@ -65,5 +67,7 @@ scala_library_suite = _scala_library_suite
scala_macro_library = _scala_macro_library
scala_repl = _scala_repl
scala_repositories = _scala_repositories
rules_scala_setup = _rules_scala_setup
rules_scala_toolchain_deps_repositories = _rules_scala_toolchain_deps_repositories
scala_test = _scala_test
scala_test_suite = _scala_test_suite
4 changes: 2 additions & 2 deletions test/shell/test_scala_config.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ runner=$(get_test_runner "${1:-local}")

test_classpath_contains_2_12() {
bazel aquery 'mnemonic("Javac", //src/java/io/bazel/rulesscala/scalac:scalac)' \
--repo_env=SCALA_VERSION=2.12.x \
--repo_env=SCALA_VERSION=2.12.14 \
| grep scala-library-2.12
}

test_classpath_contains_2_13() {
bazel aquery 'mnemonic("Javac", //src/java/io/bazel/rulesscala/scalac:scalac)' \
--repo_env=SCALA_VERSION=2.13.x \
--repo_env=SCALA_VERSION=2.13.6 \
| grep scala-library-2.13
}

Expand Down
45 changes: 39 additions & 6 deletions third_party/repositories/repositories.bzl
Original file line number Diff line number Diff line change
@@ -1,7 +1,23 @@
load("//third_party/repositories:scala_2_11.bzl", _artifacts_2_11 = "artifacts")
load("//third_party/repositories:scala_2_12.bzl", _artifacts_2_12 = "artifacts")
load("//third_party/repositories:scala_2_13.bzl", _artifacts_2_13 = "artifacts")
load("//third_party/repositories:scala_3_1.bzl", _artifacts_3_1 = "artifacts")
load(
"//third_party/repositories:scala_2_11.bzl",
_artifacts_2_11 = "artifacts",
_scala_version_2_11 = "scala_version",
)
load(
"//third_party/repositories:scala_2_12.bzl",
_artifacts_2_12 = "artifacts",
_scala_version_2_12 = "scala_version",
)
load(
"//third_party/repositories:scala_2_13.bzl",
_artifacts_2_13 = "artifacts",
_scala_version_2_13 = "scala_version",
)
load(
"//third_party/repositories:scala_3_1.bzl",
_artifacts_3_1 = "artifacts",
_scala_version_3_1 = "scala_version",
)
load(
"@io_bazel_rules_scala//scala:scala_cross_version.bzl",
"default_maven_server_urls",
Expand All @@ -10,7 +26,7 @@ load(
"@io_bazel_rules_scala//scala:scala_maven_import_external.bzl",
_scala_maven_import_external = "scala_maven_import_external",
)
load("@io_bazel_rules_scala_config//:config.bzl", "SCALA_MAJOR_VERSION")
load("@io_bazel_rules_scala_config//:config.bzl", "SCALA_MAJOR_VERSION", "SCALA_VERSION")

artifacts_by_major_scala_version = {
"2.11": _artifacts_2_11,
Expand All @@ -19,12 +35,29 @@ artifacts_by_major_scala_version = {
"3.1": _artifacts_3_1,
}

scala_version_by_major_scala_version = {
"2.11": _scala_version_2_11,
"2.12": _scala_version_2_12,
"2.13": _scala_version_2_13,
"3.1": _scala_version_3_1,
}

def repositories(
for_artifact_ids = [],
maven_servers = default_maven_server_urls(),
overriden_artifacts = {},
fetch_sources = True):
fetch_sources = True,
validate_scala_version = False):
major_scala_version = SCALA_MAJOR_VERSION

if validate_scala_version:
repository_scala_version = scala_version_by_major_scala_version[SCALA_MAJOR_VERSION]
default_version_matches = SCALA_VERSION == repository_scala_version

if not default_version_matches and len(overriden_artifacts) == 0:
version_message = "Scala config (%s) version does not match repository version (%s)"
fail(version_message % (SCALA_VERSION, repository_scala_version))

default_artifacts = artifacts_by_major_scala_version[major_scala_version]
artifacts = dict(default_artifacts.items() + overriden_artifacts.items())
for id in for_artifact_ids:
Expand Down
8 changes: 5 additions & 3 deletions third_party/repositories/scala_2_11.bzl
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
scala_version = "2.11.12"

artifacts = {
"io_bazel_rules_scala_scala_library": {
"artifact": "org.scala-lang:scala-library:2.11.12",
"artifact": "org.scala-lang:scala-library:%s" % scala_version,
"sha256": "0b3d6fd42958ee98715ba2ec5fe221f4ca1e694d7c981b0ae0cd68e97baf6dce",
},
"io_bazel_rules_scala_scala_compiler": {
"artifact": "org.scala-lang:scala-compiler:2.11.12",
"artifact": "org.scala-lang:scala-compiler:%s" % scala_version,
"sha256": "3e892546b72ab547cb77de4d840bcfd05c853e73390fed7370a8f19acb0735a0",
},
"io_bazel_rules_scala_scala_reflect": {
"artifact": "org.scala-lang:scala-reflect:2.11.12",
"artifact": "org.scala-lang:scala-reflect:%s" % scala_version,
"sha256": "6ba385b450a6311a15c918cf8688b9af9327c6104f0ecbd35933cfcd3095fe04",
},
"io_bazel_rules_scala_scalatest": {
Expand Down
8 changes: 5 additions & 3 deletions third_party/repositories/scala_2_12.bzl
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
scala_version = "2.12.14"

artifacts = {
"io_bazel_rules_scala_scala_library": {
"artifact": "org.scala-lang:scala-library:2.12.14",
"artifact": "org.scala-lang:scala-library:%s" % scala_version,
"sha256": "0451dce8322903a6c2aa7d31232b54daa72a61ced8ade0b4c5022442a3f6cb57",
},
"io_bazel_rules_scala_scala_compiler": {
"artifact": "org.scala-lang:scala-compiler:2.12.14",
"artifact": "org.scala-lang:scala-compiler:%s" % scala_version,
"sha256": "2a1b3fbf9c956073c8c5374098a6f987e3b8d76e34756ab985fc7d2ca37ee113",
},
"io_bazel_rules_scala_scala_reflect": {
"artifact": "org.scala-lang:scala-reflect:2.12.14",
"artifact": "org.scala-lang:scala-reflect:%s" % scala_version,
"sha256": "497f4603e9d19dc4fa591cd467de5e32238d240bbd955d3dac6390b270889522",
},
"io_bazel_rules_scala_scalatest": {
Expand Down
8 changes: 5 additions & 3 deletions third_party/repositories/scala_2_13.bzl
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
scala_version = "2.13.6"

artifacts = {
"io_bazel_rules_scala_scala_library": {
"artifact": "org.scala-lang:scala-library:2.13.6",
"artifact": "org.scala-lang:scala-library:%s" % scala_version,
"sha256": "f19ed732e150d3537794fd3fe42ee18470a3f707efd499ecd05a99e727ff6c8a",
},
"io_bazel_rules_scala_scala_compiler": {
"artifact": "org.scala-lang:scala-compiler:2.13.6",
"artifact": "org.scala-lang:scala-compiler:%s" % scala_version,
"sha256": "310d263d622a3d016913e94ee00b119d270573a5ceaa6b21312d69637fd9eec1",
},
"io_bazel_rules_scala_scala_reflect": {
"artifact": "org.scala-lang:scala-reflect:2.13.6",
"artifact": "org.scala-lang:scala-reflect:%s" % scala_version,
"sha256": "f713593809b387c60935bb9a940dfcea53bd0dbf8fdc8d10739a2896f8ac56fa",
},
"io_bazel_rules_scala_scala_parallel_collections": {
Expand Down
10 changes: 6 additions & 4 deletions third_party/repositories/scala_3_1.bzl
Original file line number Diff line number Diff line change
@@ -1,25 +1,27 @@
scala_version = "3.1.0"

artifacts = {
"io_bazel_rules_scala_scala_library_2": {
"artifact": "org.scala-lang:scala-library:2.13.5",
"sha256": "52aafeef8e0d104433329b1bc31463d1b4a9e2b8f24f85432c8cfaed9fad2587",
},
"io_bazel_rules_scala_scala_library": {
"artifact": "org.scala-lang:scala3-library_3:3.1.0",
"artifact": "org.scala-lang:scala3-library_3:%s" % scala_version,
"sha256": "5b513c97181d22c393cf32a51902fce27b9f698d246c7a92df7775f0bb04bec0",
"deps": [
"@io_bazel_rules_scala_scala_library_2",
],
},
"io_bazel_rules_scala_scala_compiler": {
"artifact": "org.scala-lang:scala3-compiler_3:3.1.0",
"artifact": "org.scala-lang:scala3-compiler_3:%s" % scala_version,
"sha256": "9a76c166c97db534afb51861d234430a732158bdb413d8e12425e8c72457db60",
},
"io_bazel_rules_scala_scala_interfaces": {
"artifact": "org.scala-lang:scala3-interfaces:3.1.0",
"artifact": "org.scala-lang:scala3-interfaces:%s" % scala_version,
"sha256": "0e344029ace7b1a846aa77e5cd452b7c8a28726b12b7c2baec0a70a038a686e9",
},
"io_bazel_rules_scala_scala_tasty_core": {
"artifact": "org.scala-lang:tasty-core_3:3.1.0",
"artifact": "org.scala-lang:tasty-core_3:%s" % scala_version,
"sha256": "80c9d1ac1630a22b3b62e0d482f91552397be22eac3ea0e61104c5ca67287647",
},
"io_bazel_rules_scala_scala_asm": {
Expand Down