diff options
Diffstat (limited to 'kotlin/internal/repositories/repositories.bzl')
-rw-r--r-- | kotlin/internal/repositories/repositories.bzl | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/kotlin/internal/repositories/repositories.bzl b/kotlin/internal/repositories/repositories.bzl new file mode 100644 index 0000000..3faa13c --- /dev/null +++ b/kotlin/internal/repositories/repositories.bzl @@ -0,0 +1,78 @@ +# Copyright 2018 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""This file contains the Kotlin compiler repository definitions. It should not be loaded directly by client workspaces. +""" +load("@bazel_tools//tools/build_defs/repo:http.bzl", _http_file="http_file", _http_archive="http_archive") +load("//kotlin/internal:defs.bzl", "KT_COMPILER_REPO") +load("//kotlin/internal/repositories:compiler_releases.bzl", "KOTLIN_COMPILER_RELEASES", "KOTLIN_CURRENT_RELEASE") +load("//third_party/jvm:workspace.bzl", _maven_dependencies="maven_dependencies") + +_BAZEL_JAVA_LAUNCHER_VERSION = "0.8.1" + +def github_archive(name, repo, commit, build_file_content = None): + if build_file_content: + _http_archive( + name = name, + strip_prefix = "%s-%s" % (repo.split("/")[1], commit), + url = "https://github.com/%s/archive/%s.zip" % (repo, commit), + type = "zip", + build_file_content = build_file_content, + ) + else: + _http_archive( + name = name, + strip_prefix = "%s-%s" % (repo.split("/")[1], commit), + url = "https://github.com/%s/archive/%s.zip" % (repo, commit), + type = "zip", + ) + +def _compiler_repositories(kotlin_release_version): + """ + Prime the compiler repository. + + This function should not be called directly instead `kotlin_repositories` from `//kotlin:kotlin.bzl` should be + called to ensure common deps are loaded. + """ + release=KOTLIN_COMPILER_RELEASES[kotlin_release_version] + if not release: + fail('"%s" not a valid kotlin release, current release is "%s"' % (kotlin_release_version, KOTLIN_CURRENT_RELEASE)) + + _http_archive( + name = KT_COMPILER_REPO, + url = release["url"], + sha256 = release["sha256"], + build_file= "@io_bazel_rules_kotlin//kotlin/internal/repositories:BUILD.com_github_jetbrains_kotlin", + strip_prefix = "kotlinc", + ) + + _http_file( + name = "kt_java_stub_template", + urls = [("https://raw.githubusercontent.com/bazelbuild/bazel/" + + _BAZEL_JAVA_LAUNCHER_VERSION + + "/src/main/java/com/google/devtools/build/lib/bazel/rules/java/" + + "java_stub_template.txt")], + sha256 = "86660ee7d5b498ccf611a1e000564f45268dbf301e0b2b08c984dcecc6513f6e", + ) + +def kotlin_repositories( + kotlin_release_version=KOTLIN_CURRENT_RELEASE +): + """Call this in the WORKSPACE file to setup the Kotlin rules. + + Args: + kotlin_release_version: The kotlin compiler release version. If this is not set the latest release version is + chosen by default. + """ + _maven_dependencies() + _compiler_repositories(kotlin_release_version) |