chore(3p/gerrit_plugins): add machinery for compiling Gerrit plugins from source
This looks particularly obnoxious for the owners plugin, because it's actually two plugins with a common library in the same repo. Other plugins are much cleaner to deal with (hence the default for overlayPluginCmd). Change-Id: Ibb9588c8a29b63e8509436fcbb70054e89349712 Reviewed-on: https://cl.tvl.fyi/c/depot/+/1461 Tested-by: BuildkiteCI Reviewed-by: glittershark <grfn@gws.fyi>
This commit is contained in:
parent
2b7fe6f957
commit
e780435d09
4 changed files with 58 additions and 10 deletions
|
@ -68,6 +68,11 @@ in lib.fix (self: {
|
||||||
rapidcheck
|
rapidcheck
|
||||||
] ++ builtins.attrValues lisp;
|
] ++ builtins.attrValues lisp;
|
||||||
|
|
||||||
|
gerrit = with depot.third_party.gerrit_plugins; [
|
||||||
|
depot.third_party.gerrit
|
||||||
|
owners
|
||||||
|
];
|
||||||
|
|
||||||
lisp = with depot.lisp; [
|
lisp = with depot.lisp; [
|
||||||
dns
|
dns
|
||||||
klatre
|
klatre
|
||||||
|
|
6
third_party/gerrit/default.nix
vendored
6
third_party/gerrit/default.nix
vendored
|
@ -30,17 +30,17 @@ let
|
||||||
bazel = bazelTop // { override = x: bazelTop; };
|
bazel = bazelTop // { override = x: bazelTop; };
|
||||||
version = "3.2.2-1002-gea26b5ee7a";
|
version = "3.2.2-1002-gea26b5ee7a";
|
||||||
in
|
in
|
||||||
pkgs.buildBazelPackage {
|
pkgs.lib.makeOverridable pkgs.buildBazelPackage {
|
||||||
name = "gerrit-${version}";
|
name = "gerrit-${version}";
|
||||||
|
|
||||||
src = (pkgs.fetchgit {
|
src = pkgs.fetchgit {
|
||||||
url = "https://gerrit.googlesource.com/gerrit";
|
url = "https://gerrit.googlesource.com/gerrit";
|
||||||
rev = "ea26b5ee7a1c1e4042525d308678570101d4d4d6";
|
rev = "ea26b5ee7a1c1e4042525d308678570101d4d4d6";
|
||||||
sha256 = "1bndmk7namb81zkscmpvf8ygwrj0wh842xbj0irgbm5w2xwdzkch";
|
sha256 = "1bndmk7namb81zkscmpvf8ygwrj0wh842xbj0irgbm5w2xwdzkch";
|
||||||
fetchSubmodules = true;
|
fetchSubmodules = true;
|
||||||
deepClone = true;
|
deepClone = true;
|
||||||
leaveDotGit = true;
|
leaveDotGit = true;
|
||||||
});
|
};
|
||||||
patches = [
|
patches = [
|
||||||
./0001-Use-detzip-in-download_bower.py.patch
|
./0001-Use-detzip-in-download_bower.py.patch
|
||||||
./0002-Syntax-highlight-nix.patch
|
./0002-Syntax-highlight-nix.patch
|
||||||
|
|
28
third_party/gerrit_plugins/builder.nix
vendored
Normal file
28
third_party/gerrit_plugins/builder.nix
vendored
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
{ depot, pkgs, ... }:
|
||||||
|
{
|
||||||
|
buildGerritBazelPlugin = {
|
||||||
|
name,
|
||||||
|
src,
|
||||||
|
depsOutputHash,
|
||||||
|
overlayPluginCmd ? ''
|
||||||
|
cp -R "${src}" "$out/plugins/${name}"
|
||||||
|
'',
|
||||||
|
}: ((depot.third_party.gerrit.override {
|
||||||
|
name = "${name}.jar";
|
||||||
|
|
||||||
|
src = pkgs.runCommandLocal "${name}-src" {} ''
|
||||||
|
cp -R "${depot.third_party.gerrit.src}" "$out"
|
||||||
|
chmod +w "$out/plugins"
|
||||||
|
${overlayPluginCmd}
|
||||||
|
'';
|
||||||
|
|
||||||
|
bazelTarget = "//plugins/${name}";
|
||||||
|
}).overrideAttrs (super: {
|
||||||
|
deps = super.deps.overrideAttrs (superDeps: {
|
||||||
|
outputHash = depsOutputHash;
|
||||||
|
});
|
||||||
|
installPhase = ''
|
||||||
|
cp "bazel-bin/plugins/${name}/${name}.jar" "$out"
|
||||||
|
'';
|
||||||
|
}));
|
||||||
|
}
|
29
third_party/gerrit_plugins/default.nix
vendored
29
third_party/gerrit_plugins/default.nix
vendored
|
@ -1,10 +1,25 @@
|
||||||
{ pkgs, ... }:
|
{ depot, pkgs, ... }@args:
|
||||||
|
|
||||||
let inherit (pkgs) fetchurl;
|
let
|
||||||
in {
|
inherit (import ./builder.nix args) buildGerritBazelPlugin;
|
||||||
|
in
|
||||||
|
{
|
||||||
# https://gerrit.googlesource.com/plugins/owners
|
# https://gerrit.googlesource.com/plugins/owners
|
||||||
owners = fetchurl {
|
owners = buildGerritBazelPlugin rec {
|
||||||
url = "https://storage.googleapis.com/tazjins-data/tvl/owners_3.2.jar";
|
name = "owners";
|
||||||
sha256 = "1xw1q3g0353aw5jqxp69n85f8y57l2p51np37n8r34kzbn5r4iz7";
|
depsOutputHash = "0j60yn65kn27s7cjkj3z6irymq7j7rj3q5h3n6xfrs5inm4md2ad";
|
||||||
} // { name = "owners"; };
|
src = pkgs.fetchgit {
|
||||||
|
url = "https://gerrit.googlesource.com/plugins/owners";
|
||||||
|
rev = "17817c9e319073c03513f9d5177b6142b8fd567b";
|
||||||
|
sha256 = "1p089shybp50svckcq51d0hfisjvbggndmvmhh8pvzvi6w8n9d89";
|
||||||
|
deepClone = true;
|
||||||
|
leaveDotGit = true;
|
||||||
|
};
|
||||||
|
overlayPluginCmd = ''
|
||||||
|
chmod +w "$out" "$out/plugins/external_plugin_deps.bzl"
|
||||||
|
cp -R "${src}/owners" "$out/plugins/owners"
|
||||||
|
cp "${src}/external_plugin_deps.bzl" "$out/plugins/external_plugin_deps.bzl"
|
||||||
|
cp -R "${src}/owners-common" "$out/owners-common"
|
||||||
|
'';
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue