about summary refs log tree commit diff
path: root/third_party/gerrit
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/gerrit')
-rw-r--r--third_party/gerrit/0001-Syntax-highlight-nix.patch37
-rw-r--r--third_party/gerrit/0001-Use-detzip-in-download_bower.py.patch25
-rw-r--r--third_party/gerrit/0002-Syntax-highlight-nix.patch24
-rw-r--r--third_party/gerrit/0002-Syntax-highlight-rules.pl.patch37
-rw-r--r--third_party/gerrit/0003-Add-titles-to-CLs-over-HTTP.patch (renamed from third_party/gerrit/0004-Add-titles-to-CLs-over-HTTP.patch)62
-rw-r--r--third_party/gerrit/0003-Syntax-highlight-rules.pl.patch46
-rw-r--r--third_party/gerrit/0005-When-using-local-fonts-always-assume-Gerrit-is-mount.patch26
-rw-r--r--third_party/gerrit/0006-Always-use-Google-Fonts.patch28
-rw-r--r--third_party/gerrit/default.nix58
9 files changed, 137 insertions, 206 deletions
diff --git a/third_party/gerrit/0001-Syntax-highlight-nix.patch b/third_party/gerrit/0001-Syntax-highlight-nix.patch
new file mode 100644
index 0000000000..bdc3fd3b55
--- /dev/null
+++ b/third_party/gerrit/0001-Syntax-highlight-nix.patch
@@ -0,0 +1,37 @@
+From 084e4f92fb58f7cd85303ba602fb3c40133c8fcc Mon Sep 17 00:00:00 2001
+From: Luke Granger-Brown <git@lukegb.com>
+Date: Thu, 2 Jul 2020 23:02:32 +0100
+Subject: [PATCH 1/3] Syntax highlight nix
+
+---
+ .../app/embed/diff/gr-syntax-layer/gr-syntax-layer-worker.ts     | 1 +
+ resources/com/google/gerrit/server/mime/mime-types.properties    | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/polygerrit-ui/app/embed/diff/gr-syntax-layer/gr-syntax-layer-worker.ts b/polygerrit-ui/app/embed/diff/gr-syntax-layer/gr-syntax-layer-worker.ts
+index a9f88bdd81..385249f280 100644
+--- a/polygerrit-ui/app/embed/diff/gr-syntax-layer/gr-syntax-layer-worker.ts
++++ b/polygerrit-ui/app/embed/diff/gr-syntax-layer/gr-syntax-layer-worker.ts
+@@ -93,6 +93,7 @@ const LANGUAGE_MAP = new Map<string, string>([
+   ['text/x-vhdl', 'vhdl'],
+   ['text/x-yaml', 'yaml'],
+   ['text/vbscript', 'vbscript'],
++  ['text/x-nix', 'nix'],
+ ]);
+ 
+ const CLASS_PREFIX = 'gr-diff gr-syntax gr-syntax-';
+diff --git a/resources/com/google/gerrit/server/mime/mime-types.properties b/resources/com/google/gerrit/server/mime/mime-types.properties
+index 2f9561ba2e..739818ec05 100644
+--- a/resources/com/google/gerrit/server/mime/mime-types.properties
++++ b/resources/com/google/gerrit/server/mime/mime-types.properties
+@@ -149,6 +149,7 @@ mscin = text/x-mscgen
+ msgenny = text/x-msgenny
+ nb = text/x-mathematica
+ nginx.conf = text/x-nginx-conf
++nix = text/x-nix
+ nsh = text/x-nsis
+ nsi = text/x-nsis
+ nt = text/n-triples
+-- 
+2.37.3
+
diff --git a/third_party/gerrit/0001-Use-detzip-in-download_bower.py.patch b/third_party/gerrit/0001-Use-detzip-in-download_bower.py.patch
deleted file mode 100644
index 7d197795b7..0000000000
--- a/third_party/gerrit/0001-Use-detzip-in-download_bower.py.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 621cadcc1dd71e9397c21cf8cf0f1aae4f6f7057 Mon Sep 17 00:00:00 2001
-From: Luke Granger-Brown <git@lukegb.com>
-Date: Thu, 2 Jul 2020 23:02:09 +0100
-Subject: [PATCH 1/7] Use detzip in download_bower.py
-
----
- tools/js/download_bower.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/tools/js/download_bower.py b/tools/js/download_bower.py
-index d541b565a9..ffdae60f95 100755
---- a/tools/js/download_bower.py
-+++ b/tools/js/download_bower.py
-@@ -110,7 +110,7 @@ def main():
-                 args.b, '--quiet', 'install', '%s#%s' % (args.p, args.v)))
-         bc = os.path.join(cwd, 'bower_components')
-         subprocess.check_call(
--            ['zip', '-q', '--exclude', '.bower.json', '-r', cached, args.n],
-+            ['detzip', '--exclude', '.bower.json', cached, args.n],
-             cwd=bc)
- 
-         if args.s:
--- 
-2.32.0
-
diff --git a/third_party/gerrit/0002-Syntax-highlight-nix.patch b/third_party/gerrit/0002-Syntax-highlight-nix.patch
deleted file mode 100644
index 256da0a3c9..0000000000
--- a/third_party/gerrit/0002-Syntax-highlight-nix.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 924647c354576ade0dc46fdf30596967f58bb4c6 Mon Sep 17 00:00:00 2001
-From: Luke Granger-Brown <git@lukegb.com>
-Date: Thu, 2 Jul 2020 23:02:32 +0100
-Subject: [PATCH 2/7] Syntax highlight nix
-
----
- .../app/elements/diff/gr-syntax-layer/gr-syntax-layer.ts         | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/polygerrit-ui/app/elements/diff/gr-syntax-layer/gr-syntax-layer.ts b/polygerrit-ui/app/elements/diff/gr-syntax-layer/gr-syntax-layer.ts
-index 081d28d749..2762ccc625 100644
---- a/polygerrit-ui/app/elements/diff/gr-syntax-layer/gr-syntax-layer.ts
-+++ b/polygerrit-ui/app/elements/diff/gr-syntax-layer/gr-syntax-layer.ts
-@@ -99,6 +99,7 @@ const LANGUAGE_MAP = new Map<string, string>([
-   ['text/x-vhdl', 'vhdl'],
-   ['text/x-yaml', 'yaml'],
-   ['text/vbscript', 'vbscript'],
-+  ['application/x-mix-transfer', 'nix'],
- ]);
- const ASYNC_DELAY = 10;
- 
--- 
-2.32.0
-
diff --git a/third_party/gerrit/0002-Syntax-highlight-rules.pl.patch b/third_party/gerrit/0002-Syntax-highlight-rules.pl.patch
new file mode 100644
index 0000000000..4b91e2c354
--- /dev/null
+++ b/third_party/gerrit/0002-Syntax-highlight-rules.pl.patch
@@ -0,0 +1,37 @@
+From aedf8ac8fa5113843bcd83ff85e2d9f3bffdb16c Mon Sep 17 00:00:00 2001
+From: Luke Granger-Brown <git@lukegb.com>
+Date: Thu, 2 Jul 2020 23:02:43 +0100
+Subject: [PATCH 2/3] Syntax highlight rules.pl
+
+---
+ .../app/embed/diff/gr-syntax-layer/gr-syntax-layer-worker.ts     | 1 +
+ resources/com/google/gerrit/server/mime/mime-types.properties    | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/polygerrit-ui/app/embed/diff/gr-syntax-layer/gr-syntax-layer-worker.ts b/polygerrit-ui/app/embed/diff/gr-syntax-layer/gr-syntax-layer-worker.ts
+index 385249f280..7cb3068494 100644
+--- a/polygerrit-ui/app/embed/diff/gr-syntax-layer/gr-syntax-layer-worker.ts
++++ b/polygerrit-ui/app/embed/diff/gr-syntax-layer/gr-syntax-layer-worker.ts
+@@ -68,6 +68,7 @@ const LANGUAGE_MAP = new Map<string, string>([
+   ['text/x-perl', 'perl'],
+   ['text/x-pgsql', 'pgsql'], // postgresql
+   ['text/x-php', 'php'],
++  ['text/x-prolog', 'prolog'],
+   ['text/x-properties', 'properties'],
+   ['text/x-protobuf', 'protobuf'],
+   ['text/x-puppet', 'puppet'],
+diff --git a/resources/com/google/gerrit/server/mime/mime-types.properties b/resources/com/google/gerrit/server/mime/mime-types.properties
+index 739818ec05..58eb727bf9 100644
+--- a/resources/com/google/gerrit/server/mime/mime-types.properties
++++ b/resources/com/google/gerrit/server/mime/mime-types.properties
+@@ -200,6 +200,7 @@ rq = application/sparql-query
+ rs = text/x-rustsrc
+ rss = application/xml
+ rst = text/x-rst
++rules.pl = text/x-prolog
+ README.md = text/x-gfm
+ s = text/x-gas
+ sas = text/x-sas
+-- 
+2.37.3
+
diff --git a/third_party/gerrit/0004-Add-titles-to-CLs-over-HTTP.patch b/third_party/gerrit/0003-Add-titles-to-CLs-over-HTTP.patch
index 8e78e5f535..c4edee3a40 100644
--- a/third_party/gerrit/0004-Add-titles-to-CLs-over-HTTP.patch
+++ b/third_party/gerrit/0003-Add-titles-to-CLs-over-HTTP.patch
@@ -1,30 +1,30 @@
-From 32bf13d8316f93828d2ff47ccfca38d4e7a634b1 Mon Sep 17 00:00:00 2001
+From f49c50ca9a84ca374b7bd91c171bbea0457f2c7a Mon Sep 17 00:00:00 2001
 From: Luke Granger-Brown <git@lukegb.com>
 Date: Thu, 2 Jul 2020 23:03:02 +0100
-Subject: [PATCH 4/7] Add titles to CLs over HTTP
+Subject: [PATCH 3/3] Add titles to CLs over HTTP
 
 ---
  .../gerrit/httpd/raw/IndexHtmlUtil.java       | 13 +++-
  .../google/gerrit/httpd/raw/IndexServlet.java |  8 ++-
- .../google/gerrit/httpd/raw/StaticModule.java |  6 +-
+ .../google/gerrit/httpd/raw/StaticModule.java |  5 +-
  .../gerrit/httpd/raw/TitleComputer.java       | 67 +++++++++++++++++++
  .../gerrit/httpd/raw/PolyGerritIndexHtml.soy  |  4 +-
- 5 files changed, 90 insertions(+), 8 deletions(-)
+ 5 files changed, 89 insertions(+), 8 deletions(-)
  create mode 100644 java/com/google/gerrit/httpd/raw/TitleComputer.java
 
 diff --git a/java/com/google/gerrit/httpd/raw/IndexHtmlUtil.java b/java/com/google/gerrit/httpd/raw/IndexHtmlUtil.java
-index 8d52f5ad50..a9cfceb3b6 100644
+index 72bfe40c3b..439bd73b44 100644
 --- a/java/com/google/gerrit/httpd/raw/IndexHtmlUtil.java
 +++ b/java/com/google/gerrit/httpd/raw/IndexHtmlUtil.java
-@@ -39,6 +39,7 @@ import java.util.Arrays;
- import java.util.Collections;
+@@ -41,6 +41,7 @@ import java.util.Collections;
  import java.util.HashMap;
+ import java.util.HashSet;
  import java.util.Map;
 +import java.util.Optional;
  import java.util.Set;
  import java.util.function.Function;
  
-@@ -60,13 +61,14 @@ public class IndexHtmlUtil {
+@@ -62,13 +63,14 @@ public class IndexHtmlUtil {
        String faviconPath,
        Map<String, String[]> urlParameterMap,
        Function<String, SanitizedContent> urlInScriptTagOrdainer,
@@ -38,35 +38,35 @@ index 8d52f5ad50..a9cfceb3b6 100644
                  canonicalURL, cdnPath, faviconPath, urlParameterMap, urlInScriptTagOrdainer))
 -        .putAll(dynamicTemplateData(gerritApi, requestedURL));
 +        .putAll(dynamicTemplateData(gerritApi, requestedURL, titleComputer));
-     Set<String> enabledExperiments = experimentFeatures.getEnabledExperimentFeatures();
- 
-     if (!enabledExperiments.isEmpty()) {
-@@ -77,7 +79,9 @@ public class IndexHtmlUtil {
+     Set<String> enabledExperiments = new HashSet<>();
+     enabledExperiments.addAll(experimentFeatures.getEnabledExperimentFeatures());
+     // Add all experiments enabled through url
+@@ -81,7 +83,8 @@ public class IndexHtmlUtil {
  
    /** Returns dynamic parameters of {@code index.html}. */
    public static ImmutableMap<String, Object> dynamicTemplateData(
 -      GerritApi gerritApi, String requestedURL) throws RestApiException, URISyntaxException {
-+      GerritApi gerritApi,
-+      String requestedURL,
-+      TitleComputer titleComputer) throws RestApiException, URISyntaxException {
++      GerritApi gerritApi, String requestedURL, TitleComputer titleComputer)
++                throws RestApiException, URISyntaxException {
      ImmutableMap.Builder<String, Object> data = ImmutableMap.builder();
      Map<String, SanitizedContent> initialData = new HashMap<>();
      Server serverApi = gerritApi.config().server();
-@@ -128,6 +132,9 @@ public class IndexHtmlUtil {
-       // Don't render data
+@@ -129,6 +132,10 @@ public class IndexHtmlUtil {
      }
  
+     data.put("gerritInitialData", initialData);
++
 +    Optional<String> title = titleComputer.computeTitle(requestedURL);
 +    title.ifPresent(s -> data.put("title", s));
 +
-     data.put("gerritInitialData", initialData);
      return data.build();
    }
+ 
 diff --git a/java/com/google/gerrit/httpd/raw/IndexServlet.java b/java/com/google/gerrit/httpd/raw/IndexServlet.java
-index 3f2c2028ae..7861c007df 100644
+index fcb821e5ae..e1464b992b 100644
 --- a/java/com/google/gerrit/httpd/raw/IndexServlet.java
 +++ b/java/com/google/gerrit/httpd/raw/IndexServlet.java
-@@ -46,13 +46,15 @@ public class IndexServlet extends HttpServlet {
+@@ -48,13 +48,15 @@ public class IndexServlet extends HttpServlet {
    private final ExperimentFeatures experimentFeatures;
    private final SoySauce soySauce;
    private final Function<String, SanitizedContent> urlOrdainer;
@@ -83,7 +83,7 @@ index 3f2c2028ae..7861c007df 100644
      this.canonicalUrl = canonicalUrl;
      this.cdnPath = cdnPath;
      this.faviconPath = faviconPath;
-@@ -67,6 +69,7 @@ public class IndexServlet extends HttpServlet {
+@@ -69,6 +71,7 @@ public class IndexServlet extends HttpServlet {
          (s) ->
              UnsafeSanitizedContentOrdainer.ordainAsSafe(
                  s, SanitizedContent.ContentKind.TRUSTED_RESOURCE_URI);
@@ -91,33 +91,31 @@ index 3f2c2028ae..7861c007df 100644
    }
  
    @Override
-@@ -85,7 +88,8 @@ public class IndexServlet extends HttpServlet {
+@@ -86,7 +89,8 @@ public class IndexServlet extends HttpServlet {
                faviconPath,
                parameterMap,
                urlOrdainer,
--              requestUrl);
-+              requestUrl,
+-              getRequestUrl(req));
++              getRequestUrl(req),
 +              titleComputer);
        renderer = soySauce.renderTemplate("com.google.gerrit.httpd.raw.Index").setData(templateData);
      } catch (URISyntaxException | RestApiException e) {
        throw new IOException(e);
 diff --git a/java/com/google/gerrit/httpd/raw/StaticModule.java b/java/com/google/gerrit/httpd/raw/StaticModule.java
-index bb1eb92525..6b20c504d2 100644
+index 15dcf42e0e..9f56bf33ce 100644
 --- a/java/com/google/gerrit/httpd/raw/StaticModule.java
 +++ b/java/com/google/gerrit/httpd/raw/StaticModule.java
-@@ -224,11 +224,13 @@ public class StaticModule extends ServletModule {
+@@ -241,10 +241,11 @@ public class StaticModule extends ServletModule {
          @CanonicalWebUrl @Nullable String canonicalUrl,
          @GerritServerConfig Config cfg,
          GerritApi gerritApi,
 -        ExperimentFeatures experimentFeatures) {
 +        ExperimentFeatures experimentFeatures,
 +        TitleComputer titleComputer) {
-       String cdnPath =
-           options.useDevCdn() ? options.devCdn() : cfg.getString("gerrit", null, "cdnPath");
+       String cdnPath = options.devCdn().orElse(cfg.getString("gerrit", null, "cdnPath"));
        String faviconPath = cfg.getString("gerrit", null, "faviconPath");
 -      return new IndexServlet(canonicalUrl, cdnPath, faviconPath, gerritApi, experimentFeatures);
-+      return new IndexServlet(canonicalUrl, cdnPath, faviconPath, gerritApi,
-+          experimentFeatures, titleComputer);
++      return new IndexServlet(canonicalUrl, cdnPath, faviconPath, gerritApi, experimentFeatures, titleComputer);
      }
  
      @Provides
@@ -195,7 +193,7 @@ index 0000000000..8fd2053ad0
 +  }
 +}
 diff --git a/resources/com/google/gerrit/httpd/raw/PolyGerritIndexHtml.soy b/resources/com/google/gerrit/httpd/raw/PolyGerritIndexHtml.soy
-index 11717fb8a4..1ae9046360 100644
+index dbfef44dfe..347ee75aab 100644
 --- a/resources/com/google/gerrit/httpd/raw/PolyGerritIndexHtml.soy
 +++ b/resources/com/google/gerrit/httpd/raw/PolyGerritIndexHtml.soy
 @@ -33,10 +33,12 @@
@@ -213,5 +211,5 @@ index 11717fb8a4..1ae9046360 100644
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0">{\n}
  
 -- 
-2.32.0
+2.37.3
 
diff --git a/third_party/gerrit/0003-Syntax-highlight-rules.pl.patch b/third_party/gerrit/0003-Syntax-highlight-rules.pl.patch
deleted file mode 100644
index 02bb3397ea..0000000000
--- a/third_party/gerrit/0003-Syntax-highlight-rules.pl.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From be348f64eda257ae0af1f89552548d3e8eca3688 Mon Sep 17 00:00:00 2001
-From: Luke Granger-Brown <git@lukegb.com>
-Date: Thu, 2 Jul 2020 23:02:43 +0100
-Subject: [PATCH 3/7] Syntax highlight rules.pl
-
----
- .../diff/gr-syntax-layer/gr-syntax-layer.ts         | 13 ++++++++++++-
- 1 file changed, 12 insertions(+), 1 deletion(-)
-
-diff --git a/polygerrit-ui/app/elements/diff/gr-syntax-layer/gr-syntax-layer.ts b/polygerrit-ui/app/elements/diff/gr-syntax-layer/gr-syntax-layer.ts
-index 2762ccc625..598e14589f 100644
---- a/polygerrit-ui/app/elements/diff/gr-syntax-layer/gr-syntax-layer.ts
-+++ b/polygerrit-ui/app/elements/diff/gr-syntax-layer/gr-syntax-layer.ts
-@@ -103,6 +103,10 @@ const LANGUAGE_MAP = new Map<string, string>([
- ]);
- const ASYNC_DELAY = 10;
- 
-+const FILENAME_OVERRIDES = new Map<string, string>([
-+  ['rules.pl', 'prolog'],
-+]);
-+
- const CLASS_SAFELIST = new Set<string>([
-   'gr-diff gr-syntax gr-syntax-attr',
-   'gr-diff gr-syntax gr-syntax-attribute',
-@@ -241,10 +245,17 @@ export class GrSyntaxLayer implements DiffLayer {
-     }
-   }
- 
-+  _basename(filename: string): string {
-+    const pieces = filename.split(/\//);
-+    return pieces[pieces.length-1];
-+  }
-+
-   _getLanguage(metaInfo: DiffFileMetaInfo) {
-     // The Gerrit API provides only content-type, but for other users of
-     // gr-diff it may be more convenient to specify the language directly.
--    return metaInfo.language ?? LANGUAGE_MAP.get(metaInfo.content_type);
-+    return metaInfo.language ??
-+        FILENAME_OVERRIDES.get(this._basename(metaInfo.name)) ??
-+        LANGUAGE_MAP.get(metaInfo.content_type);
-   }
- 
-   /**
--- 
-2.32.0
-
diff --git a/third_party/gerrit/0005-When-using-local-fonts-always-assume-Gerrit-is-mount.patch b/third_party/gerrit/0005-When-using-local-fonts-always-assume-Gerrit-is-mount.patch
deleted file mode 100644
index b664ea0ea6..0000000000
--- a/third_party/gerrit/0005-When-using-local-fonts-always-assume-Gerrit-is-mount.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From bd7db44cabb6de64f03adbaf5e24c73e022a8932 Mon Sep 17 00:00:00 2001
-From: Luke Granger-Brown <git@lukegb.com>
-Date: Sat, 11 Jul 2020 00:45:57 +0000
-Subject: [PATCH 5/7] When using local fonts, always assume Gerrit is mounted
- at the root.
-
----
- polygerrit-ui/app/rollup.config.js | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/polygerrit-ui/app/rollup.config.js b/polygerrit-ui/app/rollup.config.js
-index d93b5eab39..c862c9bbae 100644
---- a/polygerrit-ui/app/rollup.config.js
-+++ b/polygerrit-ui/app/rollup.config.js
-@@ -50,7 +50,7 @@ const importLocalFontMetaUrlResolver = function() {
-     name: 'import-meta-url-resolver',
-     resolveImportMeta: function (property, data) {
-       if(property === 'url' && data.moduleId.endsWith('/@polymer/font-roboto-local/roboto.js')) {
--        return 'new URL("..", document.baseURI).href';
-+        return 'new URL("/", document.baseURI).href';
-       }
-       return null;
-     }
--- 
-2.32.0
-
diff --git a/third_party/gerrit/0006-Always-use-Google-Fonts.patch b/third_party/gerrit/0006-Always-use-Google-Fonts.patch
deleted file mode 100644
index 5b817d0b55..0000000000
--- a/third_party/gerrit/0006-Always-use-Google-Fonts.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From d71f51afe12a280b92831070a583b15c8b6bc2f4 Mon Sep 17 00:00:00 2001
-From: Luke Granger-Brown <git@lukegb.com>
-Date: Sat, 11 Jul 2020 00:46:13 +0000
-Subject: [PATCH 6/7] Always use Google Fonts.
-
-We're not a corporate, and we're not behind the GFW. Always use Google Fonts,
-because even though we no longer get the caching benefits (boo, browsers),
-it is still a better geographically-distributed CDN.
----
- java/com/google/gerrit/httpd/raw/IndexHtmlUtil.java | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/java/com/google/gerrit/httpd/raw/IndexHtmlUtil.java b/java/com/google/gerrit/httpd/raw/IndexHtmlUtil.java
-index a9cfceb3b6..9c287c6e45 100644
---- a/java/com/google/gerrit/httpd/raw/IndexHtmlUtil.java
-+++ b/java/com/google/gerrit/httpd/raw/IndexHtmlUtil.java
-@@ -184,7 +184,7 @@ public class IndexHtmlUtil {
-     if (urlParameterMap.containsKey("ce")) {
-       data.put("polyfillCE", "true");
-     }
--    if (urlParameterMap.containsKey("gf")) {
-+    if (/* urlParameterMap.containsKey("gf") || */ true) {
-       data.put("useGoogleFonts", "true");
-     }
- 
--- 
-2.32.0
-
diff --git a/third_party/gerrit/default.nix b/third_party/gerrit/default.nix
index f886a0426d..a137946264 100644
--- a/third_party/gerrit/default.nix
+++ b/third_party/gerrit/default.nix
@@ -1,10 +1,6 @@
 { depot, pkgs, ... }:
 
 let
-  detzip = depot.nix.buildGo.program {
-    name = "detzip";
-    srcs = [ ./detzip.go ];
-  };
   bazelRunScript = pkgs.writeShellScriptBin "bazel-run" ''
     yarn config set cache-folder "$bazelOut/external/yarn_cache"
     export HOME="$bazelOut/external/home"
@@ -14,11 +10,10 @@ let
   bazelTop = pkgs.buildFHSUserEnv {
     name = "bazel";
     targetPkgs = pkgs: [
-      (pkgs.bazel.override { enableNixHacks = true; })
-      detzip
-      pkgs.jdk11_headless
+      (pkgs.bazel_5.override { enableNixHacks = true; })
+      pkgs.jdk17_headless
       pkgs.zlib
-      pkgs.python
+      pkgs.python3
       pkgs.curl
       pkgs.nodejs
       pkgs.yarn
@@ -28,7 +23,7 @@ let
     runScript = "/bin/bazel-run";
   };
   bazel = bazelTop // { override = x: bazelTop; };
-  version = "3.4.0";
+  version = "3.9.1";
 in
 pkgs.lib.makeOverridable pkgs.buildBazelPackage {
   pname = "gerrit";
@@ -36,33 +31,31 @@ pkgs.lib.makeOverridable pkgs.buildBazelPackage {
 
   src = pkgs.fetchgit {
     url = "https://gerrit.googlesource.com/gerrit";
-    rev = "471c1c15a7bc294d10e246df43812942b5ac8a13";
+    rev = "620a819cbf3c64fff7a66798822775ad42c91d8e";
     branchName = "v${version}";
-    sha256 = "sha256:0ayj0bcsxjln8qydkj9j7yiqibmjgd3bcpqvgsdzdx072wzx01c0";
+    sha256 = "sha256:1mdxbgnx3mpxand4wq96ic38bb4yh45q271h40jrk7dk23sgmz02";
     fetchSubmodules = true;
   };
 
   patches = [
-    ./0001-Use-detzip-in-download_bower.py.patch
-    ./0002-Syntax-highlight-nix.patch
-    ./0003-Syntax-highlight-rules.pl.patch
-    ./0004-Add-titles-to-CLs-over-HTTP.patch
-    ./0005-When-using-local-fonts-always-assume-Gerrit-is-mount.patch
-    ./0006-Always-use-Google-Fonts.patch
+    ./0001-Syntax-highlight-nix.patch
+    ./0002-Syntax-highlight-rules.pl.patch
+    ./0003-Add-titles-to-CLs-over-HTTP.patch
   ];
 
-  bazelTarget = "release api-skip-javadoc";
+  bazelTargets = [ "release" "api-skip-javadoc" ];
   inherit bazel;
 
   bazelFlags = [
     "--repository_cache="
     "--disk_cache="
   ];
+
   removeRulesCC = false;
   fetchConfigured = true;
 
   fetchAttrs = {
-    sha256 = "sha256:16a1lbz40bc7217ldwf7x8yzlzxc714h965ldjnmfbvi3jq3hk6y";
+    sha256 = "sha256:119mqli75c9fy05ddrlh2brjxb354yvv1ijjkk1y1yqcaqppwwb8";
     preBuild = ''
       rm .bazelversion
     '';
@@ -87,7 +80,7 @@ pkgs.lib.makeOverridable pkgs.buildBazelPackage {
       # Removing top-level symlinks along with their markers.
       # This is needed because they sometimes point to temporary paths (?).
       # For example, in Tensorflow-gpu build:
-      # platforms -> NIX_BUILD_TOP/tmp/install/35282f5123611afa742331368e9ae529/_embedded_binaries/platforms
+      #sha256:06bmzbcb9717s4b016kcbn8nr9pgaz04i8bnzg7ybkbdwpl8vxvv"; platforms -> NIX_BUILD_TOP/tmp/install/35282f5123611afa742331368e9ae529/_embedded_binaries/platforms
       find $bazelOut/external -maxdepth 1 -type l | while read symlink; do
         name="$(basename "$symlink")"
         rm -rf "$symlink" "$bazelOut/external/@$name.marker"
@@ -103,13 +96,17 @@ pkgs.lib.makeOverridable pkgs.buildBazelPackage {
       echo '${bazel.name}' > $bazelOut/external/.nix-bazel-version
 
       # Gerrit fixups:
-      # Remove polymer-bridges and ba-linkify, they're in-repo
-      rm -rf $bazelOut/external/yarn_cache/v6/npm-polymer-bridges-*
-      rm -rf $bazelOut/external/yarn_cache/v6/npm-ba-linkify-*
       # Normalize permissions on .yarn-{tarball,metadata} files
-      find $bazelOut/external/yarn_cache \( -name .yarn-tarball.tgz -or -name .yarn-metadata.json \) -exec chmod 644 {} +
+      test -d $bazelOut/external/yarn_cache && find $bazelOut/external/yarn_cache \( -name .yarn-tarball.tgz -or -name .yarn-metadata.json \) -exec chmod 644 {} +
+
+      mkdir $bazelOut/_bits/
+      find . -name node_modules -prune -print | while read d; do
+        echo "$d" "$(dirname $d)"
+        mkdir -p $bazelOut/_bits/$(dirname $d)
+        cp -R "$d" "$bazelOut/_bits/$(dirname $d)/node_modules"
+      done
 
-      (cd $bazelOut/ && tar czf $out --sort=name --mtime='@1' --owner=0 --group=0 --numeric-owner external/)
+      (cd $bazelOut/ && tar czf $out --sort=name --mtime='@1' --owner=0 --group=0 --numeric-owner external/ _bits/)
 
       runHook postInstall
     '';
@@ -118,6 +115,15 @@ pkgs.lib.makeOverridable pkgs.buildBazelPackage {
   buildAttrs = {
     preConfigure = ''
       rm .bazelversion
+
+      [ "$(ls -A $bazelOut/_bits)" ] && cp -R $bazelOut/_bits/* ./ || true
+    '';
+    postPatch = ''
+      # Disable all errorprone checks, since we might be using a different version.
+      sed -i \
+        -e '/-Xep:/d' \
+        -e '/-XepExcludedPaths:/a "-XepDisableAllChecks",' \
+        tools/BUILD
     '';
     installPhase = ''
       mkdir -p "$out"/webapps/ "$out"/share/api/
@@ -147,4 +153,6 @@ pkgs.lib.makeOverridable pkgs.buildBazelPackage {
       "webhooks"
     ];
   };
+
+  meta.ci.targets = [ "deps" ];
 }