Skip to content

Commit c7d7853

Browse files
bazel: update rules_nodejs and migrate to rules_js (#1436)
This finishes the work started in #1388 by fixing CI. It avoids a breaking change by: * Using the latest rules_js 1.x.x version, instead of updating to rules_js 2 (which removes support for bazel 5). * Copying the contents of [rules_js_dependencies](https://github.com/aspect-build/rules_js/blob/main/js/repositories.bzl) instead of calling it, as the call would need to be added by users in their `WORKSPACE` files Context from the previous PR: > Bazel's Node.js dependency comes from [rules_nodejs](https://github.com/bazelbuild/rules_nodejs/). Previously, bazel/deps.bzl was using rules_nodejs 5.8.0, released in 2022 and only supported Node.js toolchains up to 18.12.1. > This PR bumps rules_nodejs to latest 6.1.1. It also replaces build_bazel_rules_nodejs with [rules_js](https://github.com/aspect-build/rules_js), since npm_install that bazel/emscripten_deps.bzl used was deprecated. The README of rules_nodejs now recommends migrating to rules_js for everything other than the Node.js toolchain: (bazel-contrib/rules_nodejs@371e8ca) > Impetus Our repo builds with Bazel and uses Emscripten and Node.js. Tried to upgrade Node.js 18 to Node.js 20 and saw that emsdk didn't support rules_nodejs 6+ in the same workspace. Similarly, it's not possible to update to rules_js v2 in a workspace that also references `emsdk`.
1 parent 6abe512 commit c7d7853

File tree

2 files changed

+41
-23
lines changed

2 files changed

+41
-23
lines changed

bazel/deps.bzl

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,30 @@ def deps():
2222
)
2323
maybe(
2424
http_archive,
25-
name = "rules_nodejs",
26-
sha256 = "08337d4fffc78f7fe648a93be12ea2fc4e8eb9795a4e6aa48595b66b34555626",
27-
urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/5.8.0/rules_nodejs-core-5.8.0.tar.gz"],
25+
name = "aspect_rules_js",
26+
strip_prefix = "rules_js-1.42.0",
27+
sha256 = "5a00869efaeb308245f8132a671fe86524bdfc4f8bfd1976d26f862b316dc3c9",
28+
urls = ["https://github.com/aspect-build/rules_js/releases/download/v1.42.0/rules_js-v1.42.0.tar.gz"],
29+
)
30+
# Transitive dependencies of aspect_rules_js. We explicitly pull them here instead of calling their
31+
# provided function to avoid requiring a call to rules_js_dependencies in WORKSPACE.
32+
maybe(
33+
http_archive,
34+
name = "aspect_bazel_lib",
35+
sha256 = "714cf8ce95a198bab0a6a3adaffea99e929d2f01bf6d4a59a2e6d6af72b4818c",
36+
strip_prefix = "bazel-lib-2.7.8",
37+
url = "https://github.com/aspect-build/bazel-lib/releases/download/v2.7.8/bazel-lib-v2.7.8.tar.gz",
2838
)
2939
maybe(
3040
http_archive,
31-
name = "build_bazel_rules_nodejs",
32-
sha256 = "dcc55f810142b6cf46a44d0180a5a7fb923c04a5061e2e8d8eb05ccccc60864b",
33-
urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/5.8.0/rules_nodejs-5.8.0.tar.gz"],
41+
name = "rules_nodejs",
42+
strip_prefix = "rules_nodejs-6.2.0",
43+
sha256 = "87c6171c5be7b69538d4695d9ded29ae2626c5ed76a9adeedce37b63c73bef67",
44+
urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/v6.2.0/rules_nodejs-v6.2.0.tar.gz"],
45+
)
46+
http_archive(
47+
name = "bazel_features",
48+
sha256 = "f3082bfcdca73dc77dcd68faace806135a2e08c230b02b1d9fbdbd7db9d9c450",
49+
strip_prefix = "bazel_features-0.1.0",
50+
url = "https://github.com/bazel-contrib/bazel_features/releases/download/v0.1.0/bazel_features-v0.1.0.tar.gz",
3451
)

bazel/emscripten_deps.bzl

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
2-
load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "npm_install")
2+
load("@rules_nodejs//nodejs:repositories.bzl", "nodejs_register_toolchains")
3+
load("@aspect_rules_js//npm:repositories.bzl", "npm_translate_lock")
34
load(":revisions.bzl", "EMSCRIPTEN_TAGS")
45

56
def _parse_version(v):
@@ -118,7 +119,7 @@ def emscripten_deps(emscripten_version = "latest"):
118119
excludes = native.existing_rules().keys()
119120
if "nodejs_toolchains" not in excludes:
120121
# Node 16 is the first version that supports darwin_arm64
121-
node_repositories(
122+
nodejs_register_toolchains(
122123
node_version = "16.6.2",
123124
)
124125

@@ -174,36 +175,36 @@ def emscripten_deps(emscripten_version = "latest"):
174175
)
175176

176177
if "emscripten_npm_linux" not in excludes:
177-
npm_install(
178+
npm_translate_lock(
178179
name = "emscripten_npm_linux",
179-
package_json = "@emscripten_bin_linux//:emscripten/package.json",
180-
package_lock_json = "@emscripten_bin_linux//:emscripten/package-lock.json",
180+
data = ["@emscripten_bin_linux//:emscripten/package.json"],
181+
npm_package_lock = "@emscripten_bin_linux//:emscripten/package-lock.json",
181182
)
182183

183184
if "emscripten_npm_linux_arm64" not in excludes:
184-
npm_install(
185+
npm_translate_lock(
185186
name = "emscripten_npm_linux_arm64",
186-
package_json = "@emscripten_bin_linux_arm64//:emscripten/package.json",
187-
package_lock_json = "@emscripten_bin_linux_arm64//:emscripten/package-lock.json",
187+
data = ["@emscripten_bin_linux_arm64//:emscripten/package.json"],
188+
npm_package_lock = "@emscripten_bin_linux_arm64//:emscripten/package-lock.json",
188189
)
189190

190191
if "emscripten_npm_mac" not in excludes:
191-
npm_install(
192+
npm_translate_lock(
192193
name = "emscripten_npm_mac",
193-
package_json = "@emscripten_bin_mac//:emscripten/package.json",
194-
package_lock_json = "@emscripten_bin_mac//:emscripten/package-lock.json",
194+
data = ["@emscripten_bin_mac//:emscripten/package.json"],
195+
npm_package_lock = "@emscripten_bin_mac//:emscripten/package-lock.json",
195196
)
196197

197198
if "emscripten_npm_mac_arm64" not in excludes:
198-
npm_install(
199+
npm_translate_lock(
199200
name = "emscripten_npm_mac",
200-
package_json = "@emscripten_bin_mac_arm64//:emscripten/package.json",
201-
package_lock_json = "@emscripten_bin_mac_arm64//:emscripten/package-lock.json",
201+
data = ["@emscripten_bin_mac_arm64//:emscripten/package.json"],
202+
npm_package_lock = "@emscripten_bin_mac_arm64//:emscripten/package-lock.json",
202203
)
203204

204205
if "emscripten_npm_win" not in excludes:
205-
npm_install(
206+
npm_translate_lock(
206207
name = "emscripten_npm_win",
207-
package_json = "@emscripten_bin_win//:emscripten/package.json",
208-
package_lock_json = "@emscripten_bin_win//:emscripten/package-lock.json",
208+
data = ["@emscripten_bin_win//:emscripten/package.json"],
209+
npm_package_lock = "@emscripten_bin_win//:emscripten/package-lock.json",
209210
)

0 commit comments

Comments
 (0)