Merge changes from topic "gitiles-source-submodule" * changes: Mark war-provided libraries as neverlink inside the Gerrit tree Make webassets packaging repo-path independent
diff --git a/lib/BUILD b/lib/BUILD index bd8b90a..3fd40f7 100644 --- a/lib/BUILD +++ b/lib/BUILD
@@ -1,9 +1,20 @@ load("@rules_java//java:defs.bzl", "java_library") +load("//lib:provided.bzl", "provided_java_library") package( default_visibility = ["//visibility:public"], ) +# True when Gitiles is built inside the Gerrit source tree; Gerrit sets +# --@com_googlesource_gerrit_bazlets//flags:in_gerrit_tree=true in its .bazelrc. +# Standalone Gitiles never sets it, so it defaults to false. +config_setting( + name = "in_gerrit_tree", + flag_values = {"@com_googlesource_gerrit_bazlets//flags:in_gerrit_tree": "true"}, + visibility = ["//visibility:public"], +) + +# Libraries that are NOT shipped in gerrit.war; the Gitiles plugin bundles them. [java_library( name = local_name, exports = [coord], @@ -11,18 +22,11 @@ ("autolink", "@external_deps//:org_nibor_autolink_autolink"), ("commonmark", "@external_deps//:org_commonmark_commonmark"), ("commons-codec", "@external_deps//:commons_codec_commons_codec"), - ("commons-io", "@external_deps//:commons_io_commons_io"), - ("commons-lang3", "@external_deps//:org_apache_commons_commons_lang3"), - ("commons-text", "@external_deps//:org_apache_commons_commons_text"), ("cm-autolink", "@external_deps//:org_commonmark_commonmark_ext_autolink"), ("gfm-strikethrough", "@external_deps//:org_commonmark_commonmark_ext_gfm_strikethrough"), ("gfm-tables", "@external_deps//:org_commonmark_commonmark_ext_gfm_tables"), ("cm-yaml-front-matter", "@external_deps//:org_commonmark_commonmark_ext_yaml_front_matter"), - ("html-types", "@external_deps//:com_google_common_html_types_types"), - ("jsr305", "@external_deps//:com_google_code_findbugs_jsr305"), ("servlet-api", "@external_deps//:javax_servlet_javax_servlet_api"), - ("gson", "@external_deps//:com_google_code_gson_gson"), - ("guava", "@external_deps//:com_google_guava_guava"), ("guava-failureaccess", "@external_deps//:com_google_guava_failureaccess"), ("ow2-asm", "@external_deps//:org_ow2_asm_asm"), ("ow2-asm-analysis", "@external_deps//:org_ow2_asm_asm_analysis"), @@ -31,13 +35,28 @@ ("ow2-asm-util", "@external_deps//:org_ow2_asm_asm_util"), ]] +# Libraries already shipped in gerrit.war: linked standalone, neverlink in-tree. +[provided_java_library( + name = local_name, + exports = [coord], +) for local_name, coord in [ + ("commons-io", "@external_deps//:commons_io_commons_io"), + ("commons-lang3", "@external_deps//:org_apache_commons_commons_lang3"), + ("commons-text", "@external_deps//:org_apache_commons_commons_text"), + ("html-types", "@external_deps//:com_google_common_html_types_types"), + ("jsr305", "@external_deps//:com_google_code_findbugs_jsr305"), + ("gson", "@external_deps//:com_google_code_gson_gson"), + ("guava", "@external_deps//:com_google_guava_guava"), + ("errorprone-annotations", "@external_deps//:com_google_errorprone_error_prone_annotations"), +]] + java_library( name = "prettify", visibility = ["//visibility:public"], exports = ["@java-prettify"], ) -java_library( +provided_java_library( name = "slf4j-api", exports = ["@external_deps//:org_slf4j_slf4j_api"], ) @@ -50,9 +69,8 @@ ], ) -java_library( +provided_java_library( name = "jgit", - visibility = ["//visibility:public"], exports = ["@jgit//org.eclipse.jgit:jgit"], runtime_deps = [ ":slf4j-api", @@ -60,9 +78,8 @@ ], ) -java_library( +provided_java_library( name = "jgit-archive", - visibility = ["//visibility:public"], exports = ["@jgit//org.eclipse.jgit.archive:jgit-archive"], runtime_deps = [":jgit"], ) @@ -75,9 +92,8 @@ runtime_deps = [":jgit"], ) -java_library( +provided_java_library( name = "jgit-servlet", - visibility = ["//visibility:public"], exports = ["@jgit//org.eclipse.jgit.http.server.ee8:jgit-servlet-ee8"], runtime_deps = [":jgit"], ) @@ -91,9 +107,3 @@ name = "commons-compress", exports = ["@external_deps//:org_apache_commons_commons_compress"], ) - -java_library( - name = "errorprone-annotations", - visibility = ["//visibility:public"], - exports = ["@external_deps//:com_google_errorprone_error_prone_annotations"], -)
diff --git a/lib/flogger/BUILD b/lib/flogger/BUILD index 57c6e5a..e48dd33 100644 --- a/lib/flogger/BUILD +++ b/lib/flogger/BUILD
@@ -1,8 +1,7 @@ -load("@rules_java//java:defs.bzl", "java_library") +load("//lib:provided.bzl", "provided_java_library") -java_library( +provided_java_library( name = "flogger", - visibility = ["//visibility:public"], exports = [ "@external_deps//:ch_qos_reload4j_reload4j", "@external_deps//:com_google_flogger_flogger",
diff --git a/lib/provided.bzl b/lib/provided.bzl new file mode 100644 index 0000000..89d3712 --- /dev/null +++ b/lib/provided.bzl
@@ -0,0 +1,29 @@ +"""Wrapper for libraries that Gerrit already ships in gerrit.war. + +Standalone Gitiles links these and bundles them into gitiles.war as usual. +When Gitiles is built inside the Gerrit tree +(--@com_googlesource_gerrit_bazlets//flags:in_gerrit_tree=true), they are +switched to neverlink, so the Gitiles Gerrit plugin does not re-package +classes that gerrit.war already provides on the runtime classpath. +""" + +load("@rules_java//java:defs.bzl", "java_library") + +def provided_java_library(name, exports, runtime_deps = []): + """java_library that is linked standalone but neverlink inside Gerrit. + + Args: + name: target name; consumers depend on this directly. + exports: exported libraries (as for java_library). + runtime_deps: runtime deps (only relevant to the standalone build). + """ + java_library( + name = name, + exports = exports, + runtime_deps = runtime_deps, + neverlink = select({ + "//lib:in_gerrit_tree": 1, + "//conditions:default": 0, + }), + visibility = ["//visibility:public"], + )
diff --git a/lib/soy/BUILD b/lib/soy/BUILD index 3b08e29..ca6fdb4 100644 --- a/lib/soy/BUILD +++ b/lib/soy/BUILD
@@ -1,10 +1,10 @@ -load("@rules_java//java:defs.bzl", "java_library") +load("//lib:provided.bzl", "provided_java_library") package( default_visibility = ["//visibility:public"], ) -java_library( +provided_java_library( name = "soy", exports = [ "@external_deps//:com_google_template_soy",
diff --git a/resources/com/google/gitiles/BUILD b/resources/com/google/gitiles/BUILD index c5df3e1..a75a935 100644 --- a/resources/com/google/gitiles/BUILD +++ b/resources/com/google/gitiles/BUILD
@@ -18,7 +18,12 @@ outs = ["webassets.zip"], cmd = " && ".join([ "o=$$PWD/$@", - "tar cf - $(SRCS) | tar -C $$TMP/ --strip-components=1 -xf -", + "mkdir -p $$TMP/com/google/gitiles", + "for f in $(SRCS); do " + + "rel=$${f#*resources/com/google/gitiles/}; " + + "mkdir -p $$TMP/com/google/gitiles/$$(dirname $$rel); " + + "cp $$f $$TMP/com/google/gitiles/$$rel; " + + "done", "cd $$TMP/com/google/gitiles/", "mv static +static", "zip -qr $$o .",