blob: 67bc7094b8292c9f4b841abf3f66e6ec2df12540 [file] [log] [blame]
Dmitrii Filippov3f49f912020-01-09 15:12:45 +01001# npm packages are split into different node_modules directories based on their usage.
2# 1. /node_modules (referenced as @npm) - contains packages to run tests, check code, etc...
3# It is expected that @npm is used ONLY to run tools. No packages from @npm are used by
4# other code in gerrit.
5# 2. @tools_npm (tools/node_tools/node_modules) - the tools/node_tools folder contains self-written tools
6# which are run for building and/or testing. The @tools_npm directory contains all the packages needed to
7# run this tools.
8# 3. @ui_npm (polygerrit-ui/app/node_modules) - packages with source code which are necessary to run polygerrit
9# and to bundle it. Only code from these packages can be included in the final bundle for polygerrit.
10# @ui_npm folder must not have devDependencies. All dev dependencies must be placed in @ui_dev_npm
11# 4. @ui_dev_npm (polygerrit-ui/node_modules) - devDependencies for polygerrit. The packages from these
12# folder can be used for testing, but must not be included in the final bundle.
Tao Zhou85b13462020-06-17 13:52:36 +020013# 5. @plugins_npm (plugins/node_modules) - plugin dependencies for polygerrit plugins.
14# The packages here are expected to be used in plugins.
Dmitrii Filippov3f49f912020-01-09 15:12:45 +010015# Note: separation between @ui_npm and @ui_dev_npm is necessary because with bazel we can't generate
16# two managed directories from the same package.json. At the same time we want to avoid accidental
17# usages of code from devDependencies in polygerrit bundle.
18workspace(
19 name = "gerrit",
20 managed_directories = {
21 "@npm": ["node_modules"],
22 "@ui_npm": ["polygerrit-ui/app/node_modules"],
23 "@ui_dev_npm": ["polygerrit-ui/node_modules"],
24 "@tools_npm": ["tools/node_tools/node_modules"],
Tao Zhou85b13462020-06-17 13:52:36 +020025 "@plugins_npm": ["plugins/node_modules"],
Dmitrii Filippov3f49f912020-01-09 15:12:45 +010026 },
27)
David Ostrovskyfa189072016-11-30 08:52:06 +010028
Logan Hanks784849c2018-09-12 14:35:10 -070029load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
David Ostrovsky6dc8c422018-06-02 09:07:09 +020030load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive", "http_file")
David Pursehousefd0fcb22018-06-14 15:32:28 +090031load("//tools/bzl:maven_jar.bzl", "GERRIT", "MAVEN_LOCAL", "maven_jar")
Luca Milanesio6b192142017-01-26 14:24:53 +000032load("//plugins:external_plugin_deps.bzl", "external_plugin_deps")
Nasser Grainawia5c2f8fb2021-12-06 13:16:59 -070033load("//tools:nongoogle.bzl", "declare_nongoogle_deps")
Andrew Z Allen3384a692021-11-15 04:28:33 +000034load("//tools:deps.bzl", "CAFFEINE_VERS", "java_dependencies")
Han-Wen Nienhuys28e7a6d2016-09-21 15:03:54 +020035
Kasper Nilsson1ea918b2017-04-25 13:55:01 +020036http_archive(
David Ostrovsky001943d2020-12-20 21:36:25 +010037 name = "rbe_jdk11",
David Ostrovsky22e6e982021-05-22 11:26:40 +020038 sha256 = "766796de71916118e528b9f4334c29c9c9b4e926227bf3264dee555e6a4306c8",
39 strip_prefix = "rbe_autoconfig-2.0.0",
40 urls = [
41 "https://gerrit-bazel.storage.googleapis.com/rbe_autoconfig/v2.0.0.tar.gz",
42 "https://github.com/davido/rbe_autoconfig/archive/v2.0.0.tar.gz",
43 ],
David Ostrovsky001943d2020-12-20 21:36:25 +010044)
Han-Wen Nienhuys9c15e2b2019-05-16 16:59:33 +020045
46http_archive(
David Ostrovsky9eeddbc2020-02-02 15:40:12 +010047 name = "com_google_protobuf",
David Ostrovsky55e2e362020-11-21 09:38:37 +010048 sha256 = "d0f5f605d0d656007ce6c8b5a82df3037e1d8fe8b121ed42e536f569dec16113",
49 strip_prefix = "protobuf-3.14.0",
Luca Milanesiod849fb42020-04-23 15:25:19 +010050 urls = [
David Ostrovsky55e2e362020-11-21 09:38:37 +010051 "https://github.com/protocolbuffers/protobuf/archive/v3.14.0.tar.gz",
Luca Milanesiod849fb42020-04-23 15:25:19 +010052 ],
Kasper Nilsson1ea918b2017-04-25 13:55:01 +020053)
54
David Ostrovsky9eeddbc2020-02-02 15:40:12 +010055load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
56
57protobuf_deps()
58
Dmitrii Filippov3f49f912020-01-09 15:12:45 +010059http_archive(
60 name = "build_bazel_rules_nodejs",
David Ostrovsky49944792021-05-13 08:07:35 +020061 sha256 = "10f534e1c80f795cffe1f2822becd4897754d18564612510c59b3c73544ae7c6",
62 urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/3.5.0/rules_nodejs-3.5.0.tar.gz"],
Dmitrii Filippov3f49f912020-01-09 15:12:45 +010063)
64
Dmitrii Filippovaf1b1ba2021-01-08 21:00:29 +010065http_archive(
66 name = "rules_pkg",
67 sha256 = "038f1caa773a7e35b3663865ffb003169c6a71dc995e39bf4815792f385d837d",
68 urls = [
69 "https://mirror.bazel.build/github.com/bazelbuild/rules_pkg/releases/download/0.4.0/rules_pkg-0.4.0.tar.gz",
70 "https://github.com/bazelbuild/rules_pkg/releases/download/0.4.0/rules_pkg-0.4.0.tar.gz",
71 ],
72)
73
74load("@rules_pkg//:deps.bzl", "rules_pkg_dependencies")
75
76rules_pkg_dependencies()
77
Logan Hanks784849c2018-09-12 14:35:10 -070078# Golang support for PolyGerrit local dev server.
79http_archive(
80 name = "io_bazel_rules_go",
David Ostrovsky9ee5c002021-02-13 11:20:49 +010081 sha256 = "4d838e2d70b955ef9dd0d0648f673141df1bc1d7ecf5c2d621dcc163f47dd38a",
Ole Rehmsen038ab172019-06-18 09:35:42 +020082 urls = [
David Ostrovsky9ee5c002021-02-13 11:20:49 +010083 "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.24.12/rules_go-v0.24.12.tar.gz",
84 "https://github.com/bazelbuild/rules_go/releases/download/v0.24.12/rules_go-v0.24.12.tar.gz",
Ole Rehmsen038ab172019-06-18 09:35:42 +020085 ],
Logan Hanks784849c2018-09-12 14:35:10 -070086)
87
David Ostrovsky3de4a032019-03-03 20:34:12 +010088load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies")
Logan Hanks784849c2018-09-12 14:35:10 -070089
90go_rules_dependencies()
91
92go_register_toolchains()
93
94http_archive(
95 name = "bazel_gazelle",
David Ostrovsky9ee5c002021-02-13 11:20:49 +010096 sha256 = "222e49f034ca7a1d1231422cdb67066b885819885c356673cb1f72f748a3c9d4",
David Ostrovskye8cf5122020-06-04 07:18:31 +020097 urls = [
David Ostrovsky9ee5c002021-02-13 11:20:49 +010098 "https://mirror.bazel.build/github.com/bazelbuild/bazel-gazelle/releases/download/v0.22.3/bazel-gazelle-v0.22.3.tar.gz",
99 "https://github.com/bazelbuild/bazel-gazelle/releases/download/v0.22.3/bazel-gazelle-v0.22.3.tar.gz",
David Ostrovskye8cf5122020-06-04 07:18:31 +0200100 ],
Logan Hanks784849c2018-09-12 14:35:10 -0700101)
102
103load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies", "go_repository")
104
105gazelle_dependencies()
106
107# Dependencies for PolyGerrit local dev server.
108go_repository(
Logan Hanks784849c2018-09-12 14:35:10 -0700109 name = "com_github_howeyc_fsnotify",
110 commit = "441bbc86b167f3c1f4786afae9931403b99fdacf",
111 importpath = "github.com/howeyc/fsnotify",
112)
113
David Ostrovsky21a891c2020-12-19 12:57:06 +0100114register_toolchains("//tools:error_prone_warnings_toolchain_java11_definition")
115
116register_toolchains("//tools:error_prone_warnings_toolchain_java17_definition")
117
David Ostrovsky8bec8552019-06-19 01:07:43 +0200118# JGit external repository consumed from git submodule
119local_repository(
120 name = "jgit",
121 path = "modules/jgit",
122)
123
Andrew Z Allen3384a692021-11-15 04:28:33 +0000124java_dependencies()
David Ostrovsky06c86042019-11-09 12:38:13 +0100125
Marco Miller2cdbc4e2020-10-19 14:01:40 -0400126CAFFEINE_GUAVA_SHA256 = "6e48965614557ba4d3c55a197e20c38f23a20032ef8aace37e95ed64d2ebc9a6"
David Ostrovsky9262cce2020-01-17 22:06:20 +0100127
David Ostrovsky06c86042019-11-09 12:38:13 +0100128# TODO(davido): Rename guava.jar to caffeine-guava.jar on fetch to prevent potential
David Pursehouse0461b432020-05-17 10:44:00 +0900129# naming collision between caffeine guava adapter and guava library itself.
David Ostrovsky06c86042019-11-09 12:38:13 +0100130# Remove this renaming procedure, once this upstream issue is fixed:
131# https://github.com/ben-manes/caffeine/issues/364.
132http_file(
133 name = "caffeine-guava-renamed",
David Ostrovsky9262cce2020-01-17 22:06:20 +0100134 canonical_id = "caffeine-guava-" + CAFFEINE_VERS + ".jar-" + CAFFEINE_GUAVA_SHA256,
David Ostrovsky06c86042019-11-09 12:38:13 +0100135 downloaded_file_path = "caffeine-guava-" + CAFFEINE_VERS + ".jar",
David Ostrovsky9262cce2020-01-17 22:06:20 +0100136 sha256 = CAFFEINE_GUAVA_SHA256,
David Ostrovsky06c86042019-11-09 12:38:13 +0100137 urls = [
138 "https://repo1.maven.org/maven2/com/github/ben-manes/caffeine/guava/" +
139 CAFFEINE_VERS +
140 "/guava-" +
141 CAFFEINE_VERS +
142 ".jar",
143 ],
144)
145
Han-Wen Nienhuysf37b8202019-04-17 17:19:55 +0200146declare_nongoogle_deps()
David Ostrovskyb81b4f72016-05-21 19:55:01 +0200147
David Ostrovskyffa5cce2020-06-27 11:00:10 +0200148load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install")
149
150yarn_install(
151 name = "npm",
David Ostrovsky6cb69ef2020-11-21 09:30:20 +0100152 frozen_lockfile = False,
David Ostrovskyffa5cce2020-06-27 11:00:10 +0200153 package_json = "//:package.json",
Ben Rohlfsa935bd02021-08-03 15:48:59 +0200154 package_path = "",
David Ostrovskyffa5cce2020-06-27 11:00:10 +0200155 yarn_lock = "//:yarn.lock",
156)
157
158yarn_install(
159 name = "ui_npm",
Dmitrii Filippovba3dc7a2021-06-28 14:42:15 +0200160 args = [
161 "--prod",
162 # By default, yarn install all optional dependencies.
163 # In some cases, it installs a lot of additional dependencies which
164 # are not required (for example, "resemblejs" has one optional
165 # dependencies "canvas" that leads to tens of additional dependencies).
166 # Each additional dependency requires a license even if it is not used
167 # in our code. We want to ensure that all optional dependencies are
168 # explicitly added to package.json.
169 "--ignore-optional",
170 ],
David Ostrovsky6cb69ef2020-11-21 09:30:20 +0100171 frozen_lockfile = False,
David Ostrovskyffa5cce2020-06-27 11:00:10 +0200172 package_json = "//:polygerrit-ui/app/package.json",
Ben Rohlfsa935bd02021-08-03 15:48:59 +0200173 package_path = "polygerrit-ui/app",
David Ostrovskyffa5cce2020-06-27 11:00:10 +0200174 yarn_lock = "//:polygerrit-ui/app/yarn.lock",
175)
176
177yarn_install(
178 name = "ui_dev_npm",
David Ostrovsky6cb69ef2020-11-21 09:30:20 +0100179 frozen_lockfile = False,
David Ostrovskyffa5cce2020-06-27 11:00:10 +0200180 package_json = "//:polygerrit-ui/package.json",
Ben Rohlfsa935bd02021-08-03 15:48:59 +0200181 package_path = "polygerrit-ui",
David Ostrovskyffa5cce2020-06-27 11:00:10 +0200182 yarn_lock = "//:polygerrit-ui/yarn.lock",
183)
184
185yarn_install(
186 name = "tools_npm",
David Ostrovsky6cb69ef2020-11-21 09:30:20 +0100187 frozen_lockfile = False,
David Ostrovskyffa5cce2020-06-27 11:00:10 +0200188 package_json = "//:tools/node_tools/package.json",
Ben Rohlfsa935bd02021-08-03 15:48:59 +0200189 package_path = "tools/node_tools",
David Ostrovskyffa5cce2020-06-27 11:00:10 +0200190 yarn_lock = "//:tools/node_tools/yarn.lock",
191)
192
193yarn_install(
194 name = "plugins_npm",
195 args = ["--prod"],
David Ostrovsky6cb69ef2020-11-21 09:30:20 +0100196 frozen_lockfile = False,
David Ostrovskyffa5cce2020-06-27 11:00:10 +0200197 package_json = "//:plugins/package.json",
Ben Rohlfsa935bd02021-08-03 15:48:59 +0200198 package_path = "plugins",
David Ostrovskyffa5cce2020-06-27 11:00:10 +0200199 yarn_lock = "//:plugins/yarn.lock",
200)
201
Luca Milanesio6b192142017-01-26 14:24:53 +0000202external_plugin_deps()