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 .",