From 0cd31de8bc1b6f815afb7debde76aae959f855c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gergely=20F=C3=A1bi=C3=A1n?= Date: Fri, 3 Jun 2022 12:15:41 +0200 Subject: [PATCH] phase_merge_jars: add separate merged output jars for external and internal dependencies *_external_deps_component.jar includes all external dependencies merged. *_internal_deps_component.jar includes all internal dependencies merged (excluding the current app jar). --- scala/private/common_outputs.bzl | 2 ++ scala/private/phases/phase_merge_jars.bzl | 15 +++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/scala/private/common_outputs.bzl b/scala/private/common_outputs.bzl index b48adcce84..828c80a721 100644 --- a/scala/private/common_outputs.bzl +++ b/scala/private/common_outputs.bzl @@ -3,6 +3,8 @@ common_outputs = { "jar": "%{name}.jar", "deploy_jar": "%{name}_deploy.jar", + "external_deps_component_jar": "%{name}_external_deps_component.jar", + "internal_deps_component_jar": "%{name}_internal_deps_component.jar", "manifest": "%{name}_MANIFEST.MF", "statsfile": "%{name}.statsfile", "diagnosticsfile": "%{name}.diagnosticsproto", diff --git a/scala/private/phases/phase_merge_jars.bzl b/scala/private/phases/phase_merge_jars.bzl index 695110ecd9..6cfa30d8e5 100644 --- a/scala/private/phases/phase_merge_jars.bzl +++ b/scala/private/phases/phase_merge_jars.bzl @@ -34,8 +34,23 @@ def merge_jars_to_output(ctx, output, jars): def phase_merge_jars(ctx, p): deploy_jar = ctx.outputs.deploy_jar + external_deps_component_jar = ctx.outputs.external_deps_component_jar + internal_deps_component_jar = ctx.outputs.internal_deps_component_jar + runtime_jars = p.compile.rjars + internal_jars = [] + external_jars = [] + for jar in runtime_jars.to_list(): + if jar.short_path.startswith("../"): + # External dependencies go here: + external_jars.append(jar) + elif jar != ctx.outputs.jar: + # Internal dependencies go here (except the currently built thin jar): + internal_jars.append(jar) + merge_jars_to_output(ctx, deploy_jar, runtime_jars) + merge_jars_to_output(ctx, external_deps_component_jar, external_jars) + merge_jars_to_output(ctx, internal_deps_component_jar, internal_jars) def _fileToPath(file): return file.path