Skip to content

Commit 61bb9bd

Browse files
Allow version-aware naming for artifact repositories (#1562)
For multiple `SCALA_VERSIONS` we will need to download artifacts for each version. Some naming collision avoidance is needed. Co-authored-by: mkuta <[email protected]>
1 parent a6b26df commit 61bb9bd

File tree

1 file changed

+20
-7
lines changed

1 file changed

+20
-7
lines changed

third_party/repositories/repositories.bzl

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,14 @@ load(
3131
load(
3232
"@io_bazel_rules_scala//scala:scala_cross_version.bzl",
3333
"default_maven_server_urls",
34+
"extract_major_version",
35+
"version_suffix",
3436
)
3537
load(
3638
"@io_bazel_rules_scala//scala:scala_maven_import_external.bzl",
3739
_scala_maven_import_external = "scala_maven_import_external",
3840
)
39-
load("@io_bazel_rules_scala_config//:config.bzl", "SCALA_MAJOR_VERSION", "SCALA_VERSION")
41+
load("@io_bazel_rules_scala_config//:config.bzl", "SCALA_VERSION")
4042

4143
artifacts_by_major_scala_version = {
4244
"2.11": _artifacts_2_11,
@@ -57,31 +59,42 @@ scala_version_by_major_scala_version = {
5759
}
5860

5961
def repositories(
62+
scala_version = None,
6063
for_artifact_ids = [],
6164
maven_servers = default_maven_server_urls(),
6265
overriden_artifacts = {},
6366
fetch_sources = True,
6467
validate_scala_version = False):
65-
major_scala_version = SCALA_MAJOR_VERSION
68+
"""
69+
Downloads given artifacts.
70+
71+
If `scala_version` is provided, artifacts will be downloaded for that Scala version.
72+
Also version-aware naming of repositories will be used (appending a suffix).
73+
Otherwise, the default Scala version is used and repository names have no suffix.
74+
"""
75+
76+
suffix = version_suffix(scala_version) if scala_version else ""
77+
scala_version = scala_version or SCALA_VERSION
78+
major_scala_version = extract_major_version(scala_version)
6679

6780
if validate_scala_version:
68-
repository_scala_version = scala_version_by_major_scala_version[SCALA_MAJOR_VERSION]
69-
default_version_matches = SCALA_VERSION == repository_scala_version
81+
repository_scala_version = scala_version_by_major_scala_version[major_scala_version]
82+
default_version_matches = scala_version == repository_scala_version
7083

7184
if not default_version_matches and len(overriden_artifacts) == 0:
7285
version_message = "Scala config (%s) version does not match repository version (%s)"
73-
fail(version_message % (SCALA_VERSION, repository_scala_version))
86+
fail(version_message % (scala_version, repository_scala_version))
7487

7588
default_artifacts = artifacts_by_major_scala_version[major_scala_version]
7689
artifacts = dict(default_artifacts.items() + overriden_artifacts.items())
7790
for id in for_artifact_ids:
7891
_scala_maven_import_external(
79-
name = id,
92+
name = id + suffix,
8093
artifact = artifacts[id]["artifact"],
8194
artifact_sha256 = artifacts[id]["sha256"],
8295
licenses = ["notice"],
8396
server_urls = maven_servers,
84-
deps = artifacts[id].get("deps", []),
97+
deps = [dep + suffix for dep in artifacts[id].get("deps", [])],
8598
runtime_deps = artifacts[id].get("runtime_deps", []),
8699
testonly_ = artifacts[id].get("testonly", False),
87100
fetch_sources = fetch_sources,

0 commit comments

Comments
 (0)