From b9400254a699f85ff9d9afe36676f9bf010738fc Mon Sep 17 00:00:00 2001 From: David Ostrovsky Date: Wed, 17 May 2017 08:08:06 +0200 Subject: [PATCH] Bazel: Allow plugins to non-transitively depend on prolog rules Some plugins, most notably owners-plugin, depend on prolog:common rule. Given that this rule transitively depends on gerrit-server:server rule, and this rule depends on virtually whole gerrit build graph, the final plugin artifact contains effectively the whole gerrit war file content. To fix that we expose prolog:common in plugin API. Moreover, adjust prolog_cafe_library to not transitively depend on prolog runtime library. We can do it, because gerrit-server already depends on it, so that it's included in gerrit war anyway. This change allows the owners-plugin to de-duplicate its size from 45 MB to 1.5 MB only. Change-Id: I8d7198a911c2da444c1822509988eda7d369af77 --- gerrit-plugin-api/BUILD | 1 + lib/prolog/BUILD | 7 +++++++ lib/prolog/prolog.bzl | 2 +- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/gerrit-plugin-api/BUILD b/gerrit-plugin-api/BUILD index ebc561955b..2e768ee664 100644 --- a/gerrit-plugin-api/BUILD +++ b/gerrit-plugin-api/BUILD @@ -19,6 +19,7 @@ EXPORTS = [ "//gerrit-extension-api:api", "//gerrit-gwtexpui:server", "//gerrit-reviewdb:server", + "//gerrit-server/src/main/prolog:common", "//lib/commons:lang", "//lib/commons:lang3", "//lib/dropwizard:dropwizard-core", diff --git a/lib/prolog/BUILD b/lib/prolog/BUILD index 875f13569d..f6b4c5f900 100644 --- a/lib/prolog/BUILD +++ b/lib/prolog/BUILD @@ -5,6 +5,13 @@ java_library( exports = ["@prolog_runtime//jar"], ) +java_library( + name = "runtime-neverlink", + data = ["//lib:LICENSE-prologcafe"], + visibility = ["//visibility:public"], + exports = ["@prolog_runtime//jar:neverlink"], +) + java_library( name = "compiler", data = ["//lib:LICENSE-prologcafe"], diff --git a/lib/prolog/prolog.bzl b/lib/prolog/prolog.bzl index cae85ad555..0e87c01ffa 100644 --- a/lib/prolog/prolog.bzl +++ b/lib/prolog/prolog.bzl @@ -31,6 +31,6 @@ def prolog_cafe_library( native.java_library( name = name, srcs = [':' + name + '__pl2j'], - deps = ['//lib/prolog:runtime'] + deps, + deps = ['//lib/prolog:runtime-neverlink'] + deps, **kwargs )