diff --git a/third_party/repositories/repositories.bzl b/third_party/repositories/repositories.bzl index 423247884..503098861 100644 --- a/third_party/repositories/repositories.bzl +++ b/third_party/repositories/repositories.bzl @@ -31,12 +31,14 @@ load( load( "@io_bazel_rules_scala//scala:scala_cross_version.bzl", "default_maven_server_urls", + "extract_major_version", + "version_suffix", ) 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", "SCALA_VERSION") +load("@io_bazel_rules_scala_config//:config.bzl", "SCALA_VERSION") artifacts_by_major_scala_version = { "2.11": _artifacts_2_11, @@ -57,31 +59,42 @@ scala_version_by_major_scala_version = { } def repositories( + scala_version = None, for_artifact_ids = [], maven_servers = default_maven_server_urls(), overriden_artifacts = {}, fetch_sources = True, validate_scala_version = False): - major_scala_version = SCALA_MAJOR_VERSION + """ + Downloads given artifacts. + + If `scala_version` is provided, artifacts will be downloaded for that Scala version. + Also version-aware naming of repositories will be used (appending a suffix). + Otherwise, the default Scala version is used and repository names have no suffix. + """ + + suffix = version_suffix(scala_version) if scala_version else "" + scala_version = scala_version or SCALA_VERSION + major_scala_version = extract_major_version(scala_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 + repository_scala_version = scala_version_by_major_scala_version[major_scala_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)) + 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: _scala_maven_import_external( - name = id, + name = id + suffix, artifact = artifacts[id]["artifact"], artifact_sha256 = artifacts[id]["sha256"], licenses = ["notice"], server_urls = maven_servers, - deps = artifacts[id].get("deps", []), + deps = [dep + suffix for dep in artifacts[id].get("deps", [])], runtime_deps = artifacts[id].get("runtime_deps", []), testonly_ = artifacts[id].get("testonly", False), fetch_sources = fetch_sources,