Dmitrii Filippov | 3f49f91 | 2020-01-09 15:12:45 +0100 | [diff] [blame] | 1 | # 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 Zhou | 85b1346 | 2020-06-17 13:52:36 +0200 | [diff] [blame] | 13 | # 5. @plugins_npm (plugins/node_modules) - plugin dependencies for polygerrit plugins. |
| 14 | # The packages here are expected to be used in plugins. |
Dmitrii Filippov | 3f49f91 | 2020-01-09 15:12:45 +0100 | [diff] [blame] | 15 | # 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. |
| 18 | workspace( |
| 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 Zhou | 85b1346 | 2020-06-17 13:52:36 +0200 | [diff] [blame] | 25 | "@plugins_npm": ["plugins/node_modules"], |
Dmitrii Filippov | 3f49f91 | 2020-01-09 15:12:45 +0100 | [diff] [blame] | 26 | }, |
| 27 | ) |
David Ostrovsky | fa18907 | 2016-11-30 08:52:06 +0100 | [diff] [blame] | 28 | |
Logan Hanks | 784849c | 2018-09-12 14:35:10 -0700 | [diff] [blame] | 29 | load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") |
David Ostrovsky | 6dc8c42 | 2018-06-02 09:07:09 +0200 | [diff] [blame] | 30 | load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive", "http_file") |
David Pursehouse | fd0fcb2 | 2018-06-14 15:32:28 +0900 | [diff] [blame] | 31 | load("//tools/bzl:maven_jar.bzl", "GERRIT", "MAVEN_LOCAL", "maven_jar") |
Luca Milanesio | 6b19214 | 2017-01-26 14:24:53 +0000 | [diff] [blame] | 32 | load("//plugins:external_plugin_deps.bzl", "external_plugin_deps") |
Nasser Grainawi | a5c2f8fb | 2021-12-06 13:16:59 -0700 | [diff] [blame] | 33 | load("//tools:nongoogle.bzl", "declare_nongoogle_deps") |
Andrew Z Allen | 3384a69 | 2021-11-15 04:28:33 +0000 | [diff] [blame] | 34 | load("//tools:deps.bzl", "CAFFEINE_VERS", "java_dependencies") |
Han-Wen Nienhuys | 28e7a6d | 2016-09-21 15:03:54 +0200 | [diff] [blame] | 35 | |
Kasper Nilsson | 1ea918b | 2017-04-25 13:55:01 +0200 | [diff] [blame] | 36 | http_archive( |
David Ostrovsky | 001943d | 2020-12-20 21:36:25 +0100 | [diff] [blame] | 37 | name = "rbe_jdk11", |
David Ostrovsky | 65951c5 | 2020-03-28 18:23:20 +0100 | [diff] [blame] | 38 | sha256 = "5939e2a4e56d1fc53b6c44c6db97ee068c9f4bd18e86c762f6ab8b4fff5e294b", |
| 39 | strip_prefix = "rbe_autoconfig-3.0.0", |
David Ostrovsky | 22e6e98 | 2021-05-22 11:26:40 +0200 | [diff] [blame] | 40 | urls = [ |
David Ostrovsky | 65951c5 | 2020-03-28 18:23:20 +0100 | [diff] [blame] | 41 | "https://gerrit-bazel.storage.googleapis.com/rbe_autoconfig/v3.0.0.tar.gz", |
| 42 | "https://github.com/davido/rbe_autoconfig/archive/v3.0.0.tar.gz", |
David Ostrovsky | 22e6e98 | 2021-05-22 11:26:40 +0200 | [diff] [blame] | 43 | ], |
David Ostrovsky | 001943d | 2020-12-20 21:36:25 +0100 | [diff] [blame] | 44 | ) |
Han-Wen Nienhuys | 9c15e2b | 2019-05-16 16:59:33 +0200 | [diff] [blame] | 45 | |
| 46 | http_archive( |
David Ostrovsky | 9eeddbc | 2020-02-02 15:40:12 +0100 | [diff] [blame] | 47 | name = "com_google_protobuf", |
David Ostrovsky | baae1eb | 2022-02-12 15:56:33 +0100 | [diff] [blame] | 48 | sha256 = "3bd7828aa5af4b13b99c191e8b1e884ebfa9ad371b0ce264605d347f135d2568", |
| 49 | strip_prefix = "protobuf-3.19.4", |
Luca Milanesio | d849fb4 | 2020-04-23 15:25:19 +0100 | [diff] [blame] | 50 | urls = [ |
David Ostrovsky | baae1eb | 2022-02-12 15:56:33 +0100 | [diff] [blame] | 51 | "https://github.com/protocolbuffers/protobuf/archive/v3.19.4.tar.gz", |
Luca Milanesio | d849fb4 | 2020-04-23 15:25:19 +0100 | [diff] [blame] | 52 | ], |
Kasper Nilsson | 1ea918b | 2017-04-25 13:55:01 +0200 | [diff] [blame] | 53 | ) |
| 54 | |
David Ostrovsky | 9eeddbc | 2020-02-02 15:40:12 +0100 | [diff] [blame] | 55 | load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps") |
| 56 | |
| 57 | protobuf_deps() |
| 58 | |
Dmitrii Filippov | 3f49f91 | 2020-01-09 15:12:45 +0100 | [diff] [blame] | 59 | http_archive( |
| 60 | name = "build_bazel_rules_nodejs", |
David Ostrovsky | f2c9a3d | 2022-02-12 14:53:31 +0100 | [diff] [blame] | 61 | sha256 = "c077680a307eb88f3e62b0b662c2e9c6315319385bc8c637a861ffdbed8ca247", |
| 62 | urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/5.1.0/rules_nodejs-5.1.0.tar.gz"], |
| 63 | ) |
| 64 | |
| 65 | load("@build_bazel_rules_nodejs//:repositories.bzl", "build_bazel_rules_nodejs_dependencies") |
| 66 | |
| 67 | build_bazel_rules_nodejs_dependencies() |
| 68 | |
| 69 | # This is required just because we have a dependency on @bazel/concatjs. |
| 70 | # We don't actually use any of this web_testing stuff. |
| 71 | # TODO: Remove this dependency. |
| 72 | http_archive( |
| 73 | name = "io_bazel_rules_webtesting", |
| 74 | sha256 = "e9abb7658b6a129740c0b3ef6f5a2370864e102a5ba5ffca2cea565829ed825a", |
| 75 | urls = [ |
| 76 | "https://github.com/bazelbuild/rules_webtesting/releases/download/0.3.5/rules_webtesting.tar.gz", |
| 77 | ], |
| 78 | ) |
| 79 | |
| 80 | # TODO: Remove this, see comments on `io_bazel_rules_webtesting`. |
| 81 | load("@io_bazel_rules_webtesting//web:repositories.bzl", "web_test_repositories") |
| 82 | |
| 83 | # TODO: Remove this, see comments on `io_bazel_rules_webtesting`. |
| 84 | web_test_repositories() |
| 85 | |
| 86 | # TODO: Remove this, see comments on `io_bazel_rules_webtesting`. |
| 87 | load("@io_bazel_rules_webtesting//web/versioned:browsers-0.3.3.bzl", "browser_repositories") |
| 88 | |
| 89 | # TODO: Remove this, see comments on `io_bazel_rules_webtesting`. |
| 90 | browser_repositories( |
| 91 | chromium = True, |
| 92 | firefox = True, |
Dmitrii Filippov | 3f49f91 | 2020-01-09 15:12:45 +0100 | [diff] [blame] | 93 | ) |
| 94 | |
Dmitrii Filippov | af1b1ba | 2021-01-08 21:00:29 +0100 | [diff] [blame] | 95 | http_archive( |
| 96 | name = "rules_pkg", |
| 97 | sha256 = "038f1caa773a7e35b3663865ffb003169c6a71dc995e39bf4815792f385d837d", |
| 98 | urls = [ |
| 99 | "https://mirror.bazel.build/github.com/bazelbuild/rules_pkg/releases/download/0.4.0/rules_pkg-0.4.0.tar.gz", |
| 100 | "https://github.com/bazelbuild/rules_pkg/releases/download/0.4.0/rules_pkg-0.4.0.tar.gz", |
| 101 | ], |
| 102 | ) |
| 103 | |
| 104 | load("@rules_pkg//:deps.bzl", "rules_pkg_dependencies") |
| 105 | |
| 106 | rules_pkg_dependencies() |
| 107 | |
Logan Hanks | 784849c | 2018-09-12 14:35:10 -0700 | [diff] [blame] | 108 | # Golang support for PolyGerrit local dev server. |
| 109 | http_archive( |
| 110 | name = "io_bazel_rules_go", |
David Ostrovsky | 9f419eb | 2022-02-12 16:13:20 +0100 | [diff] [blame] | 111 | sha256 = "d6b2513456fe2229811da7eb67a444be7785f5323c6708b38d851d2b51e54d83", |
Ole Rehmsen | 038ab17 | 2019-06-18 09:35:42 +0200 | [diff] [blame] | 112 | urls = [ |
David Ostrovsky | 9f419eb | 2022-02-12 16:13:20 +0100 | [diff] [blame] | 113 | "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.30.0/rules_go-v0.30.0.zip", |
| 114 | "https://github.com/bazelbuild/rules_go/releases/download/v0.30.0/rules_go-v0.30.0.zip", |
Ole Rehmsen | 038ab17 | 2019-06-18 09:35:42 +0200 | [diff] [blame] | 115 | ], |
Logan Hanks | 784849c | 2018-09-12 14:35:10 -0700 | [diff] [blame] | 116 | ) |
| 117 | |
David Ostrovsky | 3de4a03 | 2019-03-03 20:34:12 +0100 | [diff] [blame] | 118 | load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies") |
Logan Hanks | 784849c | 2018-09-12 14:35:10 -0700 | [diff] [blame] | 119 | |
| 120 | go_rules_dependencies() |
| 121 | |
David Ostrovsky | 9f419eb | 2022-02-12 16:13:20 +0100 | [diff] [blame] | 122 | go_register_toolchains(version = "1.17.6") |
Logan Hanks | 784849c | 2018-09-12 14:35:10 -0700 | [diff] [blame] | 123 | |
| 124 | http_archive( |
| 125 | name = "bazel_gazelle", |
David Ostrovsky | 9f419eb | 2022-02-12 16:13:20 +0100 | [diff] [blame] | 126 | sha256 = "de69a09dc70417580aabf20a28619bb3ef60d038470c7cf8442fafcf627c21cb", |
David Ostrovsky | e8cf512 | 2020-06-04 07:18:31 +0200 | [diff] [blame] | 127 | urls = [ |
David Ostrovsky | 9f419eb | 2022-02-12 16:13:20 +0100 | [diff] [blame] | 128 | "https://mirror.bazel.build/github.com/bazelbuild/bazel-gazelle/releases/download/v0.24.0/bazel-gazelle-v0.24.0.tar.gz", |
| 129 | "https://github.com/bazelbuild/bazel-gazelle/releases/download/v0.24.0/bazel-gazelle-v0.24.0.tar.gz", |
David Ostrovsky | e8cf512 | 2020-06-04 07:18:31 +0200 | [diff] [blame] | 130 | ], |
Logan Hanks | 784849c | 2018-09-12 14:35:10 -0700 | [diff] [blame] | 131 | ) |
| 132 | |
| 133 | load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies", "go_repository") |
| 134 | |
| 135 | gazelle_dependencies() |
| 136 | |
| 137 | # Dependencies for PolyGerrit local dev server. |
| 138 | go_repository( |
Logan Hanks | 784849c | 2018-09-12 14:35:10 -0700 | [diff] [blame] | 139 | name = "com_github_howeyc_fsnotify", |
| 140 | commit = "441bbc86b167f3c1f4786afae9931403b99fdacf", |
| 141 | importpath = "github.com/howeyc/fsnotify", |
| 142 | ) |
| 143 | |
David Ostrovsky | 21a891c | 2020-12-19 12:57:06 +0100 | [diff] [blame] | 144 | register_toolchains("//tools:error_prone_warnings_toolchain_java11_definition") |
| 145 | |
| 146 | register_toolchains("//tools:error_prone_warnings_toolchain_java17_definition") |
| 147 | |
David Ostrovsky | 8bec855 | 2019-06-19 01:07:43 +0200 | [diff] [blame] | 148 | # JGit external repository consumed from git submodule |
| 149 | local_repository( |
| 150 | name = "jgit", |
| 151 | path = "modules/jgit", |
| 152 | ) |
| 153 | |
Andrew Z Allen | 3384a69 | 2021-11-15 04:28:33 +0000 | [diff] [blame] | 154 | java_dependencies() |
David Ostrovsky | 06c8604 | 2019-11-09 12:38:13 +0100 | [diff] [blame] | 155 | |
Marco Miller | 2cdbc4e | 2020-10-19 14:01:40 -0400 | [diff] [blame] | 156 | CAFFEINE_GUAVA_SHA256 = "6e48965614557ba4d3c55a197e20c38f23a20032ef8aace37e95ed64d2ebc9a6" |
David Ostrovsky | 9262cce | 2020-01-17 22:06:20 +0100 | [diff] [blame] | 157 | |
David Ostrovsky | 06c8604 | 2019-11-09 12:38:13 +0100 | [diff] [blame] | 158 | # TODO(davido): Rename guava.jar to caffeine-guava.jar on fetch to prevent potential |
David Pursehouse | 0461b43 | 2020-05-17 10:44:00 +0900 | [diff] [blame] | 159 | # naming collision between caffeine guava adapter and guava library itself. |
David Ostrovsky | 06c8604 | 2019-11-09 12:38:13 +0100 | [diff] [blame] | 160 | # Remove this renaming procedure, once this upstream issue is fixed: |
| 161 | # https://github.com/ben-manes/caffeine/issues/364. |
| 162 | http_file( |
| 163 | name = "caffeine-guava-renamed", |
David Ostrovsky | 9262cce | 2020-01-17 22:06:20 +0100 | [diff] [blame] | 164 | canonical_id = "caffeine-guava-" + CAFFEINE_VERS + ".jar-" + CAFFEINE_GUAVA_SHA256, |
David Ostrovsky | 06c8604 | 2019-11-09 12:38:13 +0100 | [diff] [blame] | 165 | downloaded_file_path = "caffeine-guava-" + CAFFEINE_VERS + ".jar", |
David Ostrovsky | 9262cce | 2020-01-17 22:06:20 +0100 | [diff] [blame] | 166 | sha256 = CAFFEINE_GUAVA_SHA256, |
David Ostrovsky | 06c8604 | 2019-11-09 12:38:13 +0100 | [diff] [blame] | 167 | urls = [ |
| 168 | "https://repo1.maven.org/maven2/com/github/ben-manes/caffeine/guava/" + |
| 169 | CAFFEINE_VERS + |
| 170 | "/guava-" + |
| 171 | CAFFEINE_VERS + |
| 172 | ".jar", |
| 173 | ], |
| 174 | ) |
| 175 | |
Han-Wen Nienhuys | f37b820 | 2019-04-17 17:19:55 +0200 | [diff] [blame] | 176 | declare_nongoogle_deps() |
David Ostrovsky | b81b4f7 | 2016-05-21 19:55:01 +0200 | [diff] [blame] | 177 | |
David Ostrovsky | f2c9a3d | 2022-02-12 14:53:31 +0100 | [diff] [blame] | 178 | load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "yarn_install") |
| 179 | |
| 180 | node_repositories( |
| 181 | node_version = "16.13.2", |
| 182 | yarn_version = "1.22.17", |
| 183 | ) |
David Ostrovsky | ffa5cce | 2020-06-27 11:00:10 +0200 | [diff] [blame] | 184 | |
| 185 | yarn_install( |
| 186 | name = "npm", |
David Ostrovsky | f2c9a3d | 2022-02-12 14:53:31 +0100 | [diff] [blame] | 187 | exports_directories_only = False, |
David Ostrovsky | 6cb69ef | 2020-11-21 09:30:20 +0100 | [diff] [blame] | 188 | frozen_lockfile = False, |
David Ostrovsky | ffa5cce | 2020-06-27 11:00:10 +0200 | [diff] [blame] | 189 | package_json = "//:package.json", |
Ben Rohlfs | a935bd0 | 2021-08-03 15:48:59 +0200 | [diff] [blame] | 190 | package_path = "", |
David Ostrovsky | f2c9a3d | 2022-02-12 14:53:31 +0100 | [diff] [blame] | 191 | symlink_node_modules = True, |
David Ostrovsky | ffa5cce | 2020-06-27 11:00:10 +0200 | [diff] [blame] | 192 | yarn_lock = "//:yarn.lock", |
| 193 | ) |
| 194 | |
| 195 | yarn_install( |
| 196 | name = "ui_npm", |
Dmitrii Filippov | ba3dc7a | 2021-06-28 14:42:15 +0200 | [diff] [blame] | 197 | args = [ |
| 198 | "--prod", |
| 199 | # By default, yarn install all optional dependencies. |
| 200 | # In some cases, it installs a lot of additional dependencies which |
| 201 | # are not required (for example, "resemblejs" has one optional |
| 202 | # dependencies "canvas" that leads to tens of additional dependencies). |
| 203 | # Each additional dependency requires a license even if it is not used |
| 204 | # in our code. We want to ensure that all optional dependencies are |
| 205 | # explicitly added to package.json. |
| 206 | "--ignore-optional", |
| 207 | ], |
David Ostrovsky | f2c9a3d | 2022-02-12 14:53:31 +0100 | [diff] [blame] | 208 | exports_directories_only = False, |
David Ostrovsky | 6cb69ef | 2020-11-21 09:30:20 +0100 | [diff] [blame] | 209 | frozen_lockfile = False, |
David Ostrovsky | ffa5cce | 2020-06-27 11:00:10 +0200 | [diff] [blame] | 210 | package_json = "//:polygerrit-ui/app/package.json", |
Ben Rohlfs | a935bd0 | 2021-08-03 15:48:59 +0200 | [diff] [blame] | 211 | package_path = "polygerrit-ui/app", |
David Ostrovsky | f2c9a3d | 2022-02-12 14:53:31 +0100 | [diff] [blame] | 212 | symlink_node_modules = True, |
David Ostrovsky | ffa5cce | 2020-06-27 11:00:10 +0200 | [diff] [blame] | 213 | yarn_lock = "//:polygerrit-ui/app/yarn.lock", |
| 214 | ) |
| 215 | |
| 216 | yarn_install( |
| 217 | name = "ui_dev_npm", |
David Ostrovsky | f2c9a3d | 2022-02-12 14:53:31 +0100 | [diff] [blame] | 218 | exports_directories_only = False, |
David Ostrovsky | 6cb69ef | 2020-11-21 09:30:20 +0100 | [diff] [blame] | 219 | frozen_lockfile = False, |
David Ostrovsky | ffa5cce | 2020-06-27 11:00:10 +0200 | [diff] [blame] | 220 | package_json = "//:polygerrit-ui/package.json", |
Ben Rohlfs | a935bd0 | 2021-08-03 15:48:59 +0200 | [diff] [blame] | 221 | package_path = "polygerrit-ui", |
David Ostrovsky | f2c9a3d | 2022-02-12 14:53:31 +0100 | [diff] [blame] | 222 | symlink_node_modules = True, |
David Ostrovsky | ffa5cce | 2020-06-27 11:00:10 +0200 | [diff] [blame] | 223 | yarn_lock = "//:polygerrit-ui/yarn.lock", |
| 224 | ) |
| 225 | |
| 226 | yarn_install( |
| 227 | name = "tools_npm", |
David Ostrovsky | f2c9a3d | 2022-02-12 14:53:31 +0100 | [diff] [blame] | 228 | exports_directories_only = False, |
David Ostrovsky | 6cb69ef | 2020-11-21 09:30:20 +0100 | [diff] [blame] | 229 | frozen_lockfile = False, |
David Ostrovsky | ffa5cce | 2020-06-27 11:00:10 +0200 | [diff] [blame] | 230 | package_json = "//:tools/node_tools/package.json", |
Ben Rohlfs | a935bd0 | 2021-08-03 15:48:59 +0200 | [diff] [blame] | 231 | package_path = "tools/node_tools", |
David Ostrovsky | f2c9a3d | 2022-02-12 14:53:31 +0100 | [diff] [blame] | 232 | symlink_node_modules = True, |
David Ostrovsky | ffa5cce | 2020-06-27 11:00:10 +0200 | [diff] [blame] | 233 | yarn_lock = "//:tools/node_tools/yarn.lock", |
| 234 | ) |
| 235 | |
| 236 | yarn_install( |
| 237 | name = "plugins_npm", |
| 238 | args = ["--prod"], |
David Ostrovsky | f2c9a3d | 2022-02-12 14:53:31 +0100 | [diff] [blame] | 239 | exports_directories_only = False, |
David Ostrovsky | 6cb69ef | 2020-11-21 09:30:20 +0100 | [diff] [blame] | 240 | frozen_lockfile = False, |
David Ostrovsky | ffa5cce | 2020-06-27 11:00:10 +0200 | [diff] [blame] | 241 | package_json = "//:plugins/package.json", |
Ben Rohlfs | a935bd0 | 2021-08-03 15:48:59 +0200 | [diff] [blame] | 242 | package_path = "plugins", |
David Ostrovsky | f2c9a3d | 2022-02-12 14:53:31 +0100 | [diff] [blame] | 243 | symlink_node_modules = True, |
David Ostrovsky | ffa5cce | 2020-06-27 11:00:10 +0200 | [diff] [blame] | 244 | yarn_lock = "//:plugins/yarn.lock", |
| 245 | ) |
| 246 | |
Luca Milanesio | 6b19214 | 2017-01-26 14:24:53 +0000 | [diff] [blame] | 247 | external_plugin_deps() |