chore(3p): gerrit: 3.4.0 -> 3.6.1

This change cannot be deployed OOTB: you must upgrade
by 3.5.2+ first, and run copy-approvals.

Change-Id: Ia2e49da4d801a21a3db59e2d5b054eeb46d7dc79
Reviewed-on: https://cl.tvl.fyi/c/depot/+/6505
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
This commit is contained in:
Luke Granger-Brown 2022-09-11 17:34:47 +01:00 committed by lukegb
parent 43a2eaa1b6
commit 19c0723045
12 changed files with 125 additions and 282 deletions

View file

@ -0,0 +1,37 @@
From fea4416001e5dd097d70166778fa55c6b20fae39 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 9938d3408d..f6f634ad31 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 5a08e66067..c0c092c712 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.36.0

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,37 @@
From ad3f389c20815f21ad932c0b295e861c6a21011c 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 f6f634ad31..36fd6090b4 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 c0c092c712..ee815b689d 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.36.0

View file

@ -1,22 +1,22 @@
From 32bf13d8316f93828d2ff47ccfca38d4e7a634b1 Mon Sep 17 00:00:00 2001 From 585077e751107729b7a2dd495a3b17c677a3f528 Mon Sep 17 00:00:00 2001
From: Luke Granger-Brown <git@lukegb.com> From: Luke Granger-Brown <git@lukegb.com>
Date: Thu, 2 Jul 2020 23:03:02 +0100 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 +++- .../gerrit/httpd/raw/IndexHtmlUtil.java | 13 +++-
.../google/gerrit/httpd/raw/IndexServlet.java | 8 ++- .../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/TitleComputer.java | 67 +++++++++++++++++++
.../gerrit/httpd/raw/PolyGerritIndexHtml.soy | 4 +- .../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 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 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 ce22ae8e59..952ba1fef4 100644
--- a/java/com/google/gerrit/httpd/raw/IndexHtmlUtil.java --- a/java/com/google/gerrit/httpd/raw/IndexHtmlUtil.java
+++ b/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; @@ -40,6 +40,7 @@ import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@ -24,7 +24,7 @@ index 8d52f5ad50..a9cfceb3b6 100644
import java.util.Set; import java.util.Set;
import java.util.function.Function; import java.util.function.Function;
@@ -60,13 +61,14 @@ public class IndexHtmlUtil { @@ -61,13 +62,14 @@ public class IndexHtmlUtil {
String faviconPath, String faviconPath,
Map<String, String[]> urlParameterMap, Map<String, String[]> urlParameterMap,
Function<String, SanitizedContent> urlInScriptTagOrdainer, Function<String, SanitizedContent> urlInScriptTagOrdainer,
@ -41,32 +41,32 @@ index 8d52f5ad50..a9cfceb3b6 100644
Set<String> enabledExperiments = experimentFeatures.getEnabledExperimentFeatures(); Set<String> enabledExperiments = experimentFeatures.getEnabledExperimentFeatures();
if (!enabledExperiments.isEmpty()) { if (!enabledExperiments.isEmpty()) {
@@ -77,7 +79,9 @@ public class IndexHtmlUtil { @@ -78,7 +80,8 @@ public class IndexHtmlUtil {
/** Returns dynamic parameters of {@code index.html}. */ /** Returns dynamic parameters of {@code index.html}. */
public static ImmutableMap<String, Object> dynamicTemplateData( public static ImmutableMap<String, Object> dynamicTemplateData(
- GerritApi gerritApi, String requestedURL) throws RestApiException, URISyntaxException { - GerritApi gerritApi, String requestedURL) throws RestApiException, URISyntaxException {
+ GerritApi gerritApi, + GerritApi gerritApi, String requestedURL, TitleComputer titleComputer)
+ String requestedURL, + throws RestApiException, URISyntaxException {
+ TitleComputer titleComputer) throws RestApiException, URISyntaxException {
ImmutableMap.Builder<String, Object> data = ImmutableMap.builder(); ImmutableMap.Builder<String, Object> data = ImmutableMap.builder();
Map<String, SanitizedContent> initialData = new HashMap<>(); Map<String, SanitizedContent> initialData = new HashMap<>();
Server serverApi = gerritApi.config().server(); Server serverApi = gerritApi.config().server();
@@ -128,6 +132,9 @@ public class IndexHtmlUtil { @@ -131,6 +134,10 @@ public class IndexHtmlUtil {
// Don't render data
} }
data.put("gerritInitialData", initialData);
+
+ Optional<String> title = titleComputer.computeTitle(requestedURL); + Optional<String> title = titleComputer.computeTitle(requestedURL);
+ title.ifPresent(s -> data.put("title", s)); + title.ifPresent(s -> data.put("title", s));
+ +
data.put("gerritInitialData", initialData);
return data.build(); return data.build();
} }
diff --git a/java/com/google/gerrit/httpd/raw/IndexServlet.java b/java/com/google/gerrit/httpd/raw/IndexServlet.java 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..36eb0c990c 100644
--- a/java/com/google/gerrit/httpd/raw/IndexServlet.java --- a/java/com/google/gerrit/httpd/raw/IndexServlet.java
+++ b/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 ExperimentFeatures experimentFeatures;
private final SoySauce soySauce; private final SoySauce soySauce;
private final Function<String, SanitizedContent> urlOrdainer; private final Function<String, SanitizedContent> urlOrdainer;
@ -83,7 +83,7 @@ index 3f2c2028ae..7861c007df 100644
this.canonicalUrl = canonicalUrl; this.canonicalUrl = canonicalUrl;
this.cdnPath = cdnPath; this.cdnPath = cdnPath;
this.faviconPath = faviconPath; this.faviconPath = faviconPath;
@@ -67,6 +69,7 @@ public class IndexServlet extends HttpServlet { @@ -69,6 +71,7 @@ public class IndexServlet extends HttpServlet {
(s) -> (s) ->
UnsafeSanitizedContentOrdainer.ordainAsSafe( UnsafeSanitizedContentOrdainer.ordainAsSafe(
s, SanitizedContent.ContentKind.TRUSTED_RESOURCE_URI); s, SanitizedContent.ContentKind.TRUSTED_RESOURCE_URI);
@ -91,33 +91,31 @@ index 3f2c2028ae..7861c007df 100644
} }
@Override @Override
@@ -85,7 +88,8 @@ public class IndexServlet extends HttpServlet { @@ -86,7 +89,8 @@ public class IndexServlet extends HttpServlet {
faviconPath, faviconPath,
parameterMap, parameterMap,
urlOrdainer, urlOrdainer,
- requestUrl); - getRequestUrl(req));
+ requestUrl, + getRequestUrl(req),
+ titleComputer); + titleComputer);
renderer = soySauce.renderTemplate("com.google.gerrit.httpd.raw.Index").setData(templateData); renderer = soySauce.renderTemplate("com.google.gerrit.httpd.raw.Index").setData(templateData);
} catch (URISyntaxException | RestApiException e) { } catch (URISyntaxException | RestApiException e) {
throw new IOException(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 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 8e8a9d27f0..a0fb168554 100644
--- a/java/com/google/gerrit/httpd/raw/StaticModule.java --- a/java/com/google/gerrit/httpd/raw/StaticModule.java
+++ b/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 { @@ -226,10 +226,11 @@ public class StaticModule extends ServletModule {
@CanonicalWebUrl @Nullable String canonicalUrl, @CanonicalWebUrl @Nullable String canonicalUrl,
@GerritServerConfig Config cfg, @GerritServerConfig Config cfg,
GerritApi gerritApi, GerritApi gerritApi,
- ExperimentFeatures experimentFeatures) { - ExperimentFeatures experimentFeatures) {
+ ExperimentFeatures experimentFeatures, + ExperimentFeatures experimentFeatures,
+ TitleComputer titleComputer) { + TitleComputer titleComputer) {
String cdnPath = String cdnPath = options.devCdn().orElse(cfg.getString("gerrit", null, "cdnPath"));
options.useDevCdn() ? options.devCdn() : cfg.getString("gerrit", null, "cdnPath");
String faviconPath = cfg.getString("gerrit", null, "faviconPath"); String faviconPath = cfg.getString("gerrit", null, "faviconPath");
- return new IndexServlet(canonicalUrl, cdnPath, faviconPath, gerritApi, experimentFeatures); - return new IndexServlet(canonicalUrl, cdnPath, faviconPath, gerritApi, experimentFeatures);
+ return new IndexServlet(canonicalUrl, cdnPath, faviconPath, gerritApi, + return new IndexServlet(canonicalUrl, cdnPath, faviconPath, gerritApi, experimentFeatures, titleComputer);
+ experimentFeatures, titleComputer);
} }
@Provides @Provides
@ -195,10 +193,10 @@ index 0000000000..8fd2053ad0
+ } + }
+} +}
diff --git a/resources/com/google/gerrit/httpd/raw/PolyGerritIndexHtml.soy b/resources/com/google/gerrit/httpd/raw/PolyGerritIndexHtml.soy 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 8c97a49e81..129092dc7e 100644
--- a/resources/com/google/gerrit/httpd/raw/PolyGerritIndexHtml.soy --- a/resources/com/google/gerrit/httpd/raw/PolyGerritIndexHtml.soy
+++ b/resources/com/google/gerrit/httpd/raw/PolyGerritIndexHtml.soy +++ b/resources/com/google/gerrit/httpd/raw/PolyGerritIndexHtml.soy
@@ -33,10 +33,12 @@ @@ -32,10 +32,12 @@
{@param? defaultDashboardHex: ?} {@param? defaultDashboardHex: ?}
{@param? dashboardQuery: ?} {@param? dashboardQuery: ?}
{@param? userIsAuthenticated: ?} {@param? userIsAuthenticated: ?}
@ -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} <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0">{\n}
-- --
2.32.0 2.36.0

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -1,10 +1,6 @@
{ depot, pkgs, ... }: { depot, pkgs, ... }:
let let
detzip = depot.nix.buildGo.program {
name = "detzip";
srcs = [ ./detzip.go ];
};
bazelRunScript = pkgs.writeShellScriptBin "bazel-run" '' bazelRunScript = pkgs.writeShellScriptBin "bazel-run" ''
yarn config set cache-folder "$bazelOut/external/yarn_cache" yarn config set cache-folder "$bazelOut/external/yarn_cache"
export HOME="$bazelOut/external/home" export HOME="$bazelOut/external/home"
@ -14,8 +10,7 @@ let
bazelTop = pkgs.buildFHSUserEnv { bazelTop = pkgs.buildFHSUserEnv {
name = "bazel"; name = "bazel";
targetPkgs = pkgs: [ targetPkgs = pkgs: [
(pkgs.bazel.override { enableNixHacks = true; }) (pkgs.bazel_5.override { enableNixHacks = true; })
detzip
pkgs.jdk11_headless pkgs.jdk11_headless
pkgs.zlib pkgs.zlib
pkgs.python pkgs.python
@ -28,7 +23,7 @@ let
runScript = "/bin/bazel-run"; runScript = "/bin/bazel-run";
}; };
bazel = bazelTop // { override = x: bazelTop; }; bazel = bazelTop // { override = x: bazelTop; };
version = "3.4.0"; version = "3.6.1";
in in
pkgs.lib.makeOverridable pkgs.buildBazelPackage { pkgs.lib.makeOverridable pkgs.buildBazelPackage {
pname = "gerrit"; pname = "gerrit";
@ -36,19 +31,16 @@ pkgs.lib.makeOverridable pkgs.buildBazelPackage {
src = pkgs.fetchgit { src = pkgs.fetchgit {
url = "https://gerrit.googlesource.com/gerrit"; url = "https://gerrit.googlesource.com/gerrit";
rev = "471c1c15a7bc294d10e246df43812942b5ac8a13"; rev = "028b90fc362051cc7005e540030e497320b83c92";
branchName = "v${version}"; branchName = "v${version}";
sha256 = "sha256:0ayj0bcsxjln8qydkj9j7yiqibmjgd3bcpqvgsdzdx072wzx01c0"; sha256 = "sha256:0rwmrix4h9jvgxr1gzp5f090g3xz3qlss3l1xvs2s6f3ynbxixa7";
fetchSubmodules = true; fetchSubmodules = true;
}; };
patches = [ patches = [
./0001-Use-detzip-in-download_bower.py.patch ./0001-Syntax-highlight-nix.patch
./0002-Syntax-highlight-nix.patch ./0002-Syntax-highlight-rules.pl.patch
./0003-Syntax-highlight-rules.pl.patch ./0003-Add-titles-to-CLs-over-HTTP.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
]; ];
bazelTarget = "release api-skip-javadoc"; bazelTarget = "release api-skip-javadoc";
@ -58,11 +50,12 @@ pkgs.lib.makeOverridable pkgs.buildBazelPackage {
"--repository_cache=" "--repository_cache="
"--disk_cache=" "--disk_cache="
]; ];
removeRulesCC = false; removeRulesCC = false;
fetchConfigured = true; fetchConfigured = true;
fetchAttrs = { fetchAttrs = {
sha256 = "sha256:1q4sclf18zzh8hsnccg1y7vqnhgavq62mqp4xx50zxfcnixfkpbx"; sha256 = "sha256:1ggp5zrj25g5jc6ny9y333q0g76a7s1544j1ps9j3xhra9vbc1vq";
preBuild = '' preBuild = ''
rm .bazelversion rm .bazelversion
''; '';
@ -103,9 +96,6 @@ pkgs.lib.makeOverridable pkgs.buildBazelPackage {
echo '${bazel.name}' > $bazelOut/external/.nix-bazel-version echo '${bazel.name}' > $bazelOut/external/.nix-bazel-version
# Gerrit fixups: # 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 # Normalize permissions on .yarn-{tarball,metadata} files
find $bazelOut/external/yarn_cache \( -name .yarn-tarball.tgz -or -name .yarn-metadata.json \) -exec chmod 644 {} + find $bazelOut/external/yarn_cache \( -name .yarn-tarball.tgz -or -name .yarn-metadata.json \) -exec chmod 644 {} +
@ -119,6 +109,13 @@ pkgs.lib.makeOverridable pkgs.buildBazelPackage {
preConfigure = '' preConfigure = ''
rm .bazelversion rm .bazelversion
''; '';
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 = '' installPhase = ''
mkdir -p "$out"/webapps/ "$out"/share/api/ mkdir -p "$out"/webapps/ "$out"/share/api/
cp bazel-bin/release.war "$out"/webapps/gerrit-${version}.war cp bazel-bin/release.war "$out"/webapps/gerrit-${version}.war

View file

@ -7,11 +7,11 @@ depot.nix.readTree.drvTargets {
# https://gerrit.googlesource.com/plugins/owners # https://gerrit.googlesource.com/plugins/owners
owners = buildGerritBazelPlugin rec { owners = buildGerritBazelPlugin rec {
name = "owners"; name = "owners";
depsOutputHash = "sha256:00nbqwr83wsqa6l67bv4ywv9795l1ibl0yv1kq5q811syrvk2xiz"; depsOutputHash = "sha256:129k0jz2pxfl3yvdd95wvvkcjjmmw6jy4g45ss1pgvb9dan0ca6j";
src = pkgs.fetchgit { src = pkgs.fetchgit {
url = "https://gerrit.googlesource.com/plugins/owners"; url = "https://gerrit.googlesource.com/plugins/owners";
rev = "99a9ab585532d172d141b4641dfc70081513dfc2"; rev = "070820d2df4f253c7c470f2cbe68da8043e163d0";
sha256 = "sha256:1xn9qb7q94jxfx7yq0zjqjm16gfyzzif13sak9x6j4f9r68frcd4"; sha256 = "sha256:0mw2fff3dca1xv2cvg9hsy5zw1h5gjidb5fh95x6yaj9g9lp0mxq";
}; };
overlayPluginCmd = '' overlayPluginCmd = ''
chmod +w "$out" "$out/plugins/external_plugin_deps.bzl" chmod +w "$out" "$out/plugins/external_plugin_deps.bzl"

View file

@ -1,69 +0,0 @@
diff --git a/src/main/java/com/googlesource/gerrit/plugins/oauth/CasApi.java b/src/main/java/com/googlesource/gerrit/plugins/oauth/CasApi.java
index 450549f..27310cd 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/oauth/CasApi.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/oauth/CasApi.java
@@ -15,7 +15,7 @@
package com.googlesource.gerrit.plugins.oauth;
import com.github.scribejava.core.builder.api.DefaultApi20;
-import com.github.scribejava.core.extractors.OAuth2AccessTokenExtractor;
+import com.github.scribejava.core.extractors.OAuth2AccessTokenJsonExtractor;
import com.github.scribejava.core.extractors.TokenExtractor;
import com.github.scribejava.core.model.OAuth2AccessToken;
import com.github.scribejava.core.oauth2.bearersignature.BearerSignature;
@@ -47,6 +47,6 @@ public class CasApi extends DefaultApi20 {
@Override
public TokenExtractor<OAuth2AccessToken> getAccessTokenExtractor() {
- return OAuth2AccessTokenExtractor.instance();
+ return OAuth2AccessTokenJsonExtractor.instance();
}
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/oauth/CasOAuthService.java b/src/main/java/com/googlesource/gerrit/plugins/oauth/CasOAuthService.java
index 5f3e4a1..fc5bc50 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/oauth/CasOAuthService.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/oauth/CasOAuthService.java
@@ -106,36 +106,14 @@ class CasOAuthService implements OAuthServiceProvider {
throw new IOException(String.format("CAS response missing id: %s", response.getBody()));
}
- JsonElement attrListJson = jsonObject.get("attributes");
- if (attrListJson == null) {
- throw new IOException(
- String.format("CAS response missing attributes: %s", response.getBody()));
- }
-
String email = null, name = null, login = null;
- if (attrListJson.isJsonArray()) {
- // It is possible for CAS to be configured to not return any attributes (email, name,
- // login),
- // in which case,
- // CAS returns an empty JSON object "attributes":{}, rather than "null" or an empty JSON
- // array
- // "attributes": []
-
- JsonArray attrJson = attrListJson.getAsJsonArray();
- for (JsonElement elem : attrJson) {
- if (elem == null || !elem.isJsonObject()) {
- throw new IOException(String.format("Invalid JSON '%s': not a JSON Object", elem));
- }
- JsonObject obj = elem.getAsJsonObject();
-
- String property = getStringElement(obj, "email");
- if (property != null) email = property;
- property = getStringElement(obj, "name");
- if (property != null) name = property;
- property = getStringElement(obj, "login");
- if (property != null) login = property;
- }
- }
+
+ String property = getStringElement(jsonObject, "mail");
+ if (property != null) email = property;
+ property = getStringElement(jsonObject, "displayName");
+ if (property != null) name = property;
+ property = getStringElement(jsonObject, "uid");
+ if (property != null) login = property;
return new OAuthUserInfo(
CAS_PROVIDER_PREFIX + id.getAsString(),

View file

@ -5,23 +5,15 @@ let
in in
buildGerritBazelPlugin rec { buildGerritBazelPlugin rec {
name = "oauth"; name = "oauth";
depsOutputHash = "sha256:0j86amkw54y177s522hc988hqg034fsrkywbsb9a7h14zwcqbran"; depsOutputHash = "sha256:14xw282ianq52y5cbcpxrlkfjjakcvh7igpkvs49hcgcb7v4rds8";
src = pkgs.fetchgit { src = pkgs.fetchgit {
url = "https://gerrit.googlesource.com/plugins/oauth"; url = "https://gerrit.googlesource.com/plugins/oauth";
rev = "4aa7322db5ec221b2419e12a9ec7af5b8c66659c"; rev = "f9bef7476bc99f7b1dc3fe2d52ec95cd7ac571dc";
sha256 = "1szra3pjl0axf4a7k96flpk7rhfvp37rdxay4gbglh939gzbba88"; sha256 = "08wf50bz7ash37mzlrxfy7hvmjsf6s4ncpcw5969hs9hjvjfj4dz";
}; };
overlayPluginCmd = '' overlayPluginCmd = ''
chmod +w "$out" "$out/plugins/external_plugin_deps.bzl" chmod +w "$out" "$out/plugins/external_plugin_deps.bzl"
cp -R "${src}" "$out/plugins/${name}" cp -R "${src}" "$out/plugins/${name}"
cp "${src}/external_plugin_deps.bzl" "$out/plugins/external_plugin_deps.bzl" cp "${src}/external_plugin_deps.bzl" "$out/plugins/external_plugin_deps.bzl"
''; '';
# The code in the OAuth repo expects CAS to return oauth2 access tokens as urlencoded.
# Our version of CAS returns them as JSON instead.
postPatch = ''
pushd plugins/oauth
patch -p1 <${./cas-6x.patch}
popd
'';
} }