aboutsummaryrefslogtreecommitdiff
path: root/kotlin/jvm/internal_do_not_use/util/run_deploy_jar.bzl
blob: 14c784b26a48df10442065e9e578989e3201ea0b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# Copyright 2022 Google LLC. 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.

"""kt_run_deploy_jar"""

# go/keep-sorted start
load("//:visibility.bzl", "RULES_KOTLIN")
load("//bazel:stubs.bzl", "BASE_JVMOPTS")
# go/keep-sorted end

def kt_run_deploy_jar(
        ctx,
        java_runtime,
        deploy_jar,
        inputs,
        args = [],
        deploy_jsa = None,
        **kwargs):
    """An analogue to ctx.actions.run for _deploy.jar executables."""

    java_args = ctx.actions.args()
    java_inputs = []
    if deploy_jsa:
        java_args.add("-Xshare:auto")
        java_args.add(deploy_jsa, format = "-XX:SharedArchiveFile=%s")
        java_args.add("-XX:-VerifySharedSpaces")
        java_args.add("-XX:-ValidateSharedClassPaths")
        java_inputs.append(deploy_jsa)
    java_args.add("-jar", deploy_jar)
    java_inputs.append(deploy_jar)

    java_depset = depset(direct = java_inputs, transitive = [java_runtime[DefaultInfo].files])
    if type(inputs) == "depset":
        all_inputs = depset(transitive = [java_depset, inputs])
    else:
        all_inputs = depset(direct = inputs, transitive = [java_depset])

    ctx.actions.run(
        executable = str(java_runtime[java_common.JavaRuntimeInfo].java_executable_exec_path),
        inputs = all_inputs,
        arguments = BASE_JVMOPTS + [java_args] + args,
        **kwargs
    )