Skip to content

Commit 9383e82

Browse files
committed
feat: add bzlmod node_repositories support
Close #3781
1 parent eeb322c commit 9383e82

File tree

4 files changed

+48
-0
lines changed

4 files changed

+48
-0
lines changed

e2e/nodejs_host/BUILD.bazel

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
"nodejs",
2121
"node16",
2222
"node16_nvmrc",
23+
"node21_custom",
2324
]
2425
]
2526

@@ -64,5 +65,6 @@
6465
("node16", "npx", []),
6566
("node16_nvmrc", "npm", []),
6667
("node16_nvmrc", "npx", []),
68+
("node21_custom", "npx", []),
6769
]
6870
]

e2e/nodejs_host/MODULE.bazel

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,20 @@ node.toolchain(
2020
name = "node16_nvmrc",
2121
node_version_from_nvmrc = "//:.nvmrc",
2222
)
23+
node.toolchain(
24+
name = "node21_custom",
25+
node_repositories = {
26+
"21.6.1.custom-darwin_arm64": ("node-v21.6.1-darwin-arm64.tar.gz", "node-v21.6.1-darwin-arm64", "94c280bba809fa66867e363ec9e990217aedf893116660b8c75a1c4fda3baea5"),
27+
"21.6.1.custom-darwin_amd64": ("node-v21.6.1-darwin-x64.tar.gz", "node-v21.6.1-darwin-x64", "5c4821c62a1f61cf3219bc244d30a5b1cdec197c8acabc1ee7cd9ff17bbba947"),
28+
"21.6.1.custom-linux_arm64": ("node-v21.6.1-linux-arm64.tar.xz", "node-v21.6.1-linux-arm64", "19900c1a0a9d7e2ea781b46c7d498ffdf3e37e34f46b96e7344bd7bb8f27be66"),
29+
"21.6.1.custom-linux_ppc64le": ("node-v21.6.1-linux-ppc64le.tar.xz", "node-v21.6.1-linux-ppc64le", "0f22931238d96d931e8ad788326f4db92860e83105c493ee9b29a4b378b18f18"),
30+
"21.6.1.custom-linux_s390x": ("node-v21.6.1-linux-s390x.tar.xz", "node-v21.6.1-linux-s390x", "efa9496c3c1e1691dfabea45e2839b592675a571880b9d25b35d3565e16f3d66"),
31+
"21.6.1.custom-linux_amd64": ("node-v21.6.1-linux-x64.tar.xz", "node-v21.6.1-linux-x64", "c65cbf7342260df8e59dd2fe2e06dc1f36ac46c9d433a64cd84521fd4915c291"),
32+
"21.6.1.custom-windows_amd64": ("node-v21.6.1-win-x64.zip", "node-v21.6.1-win-x64", "a74b3933e73982553c1fdea3a3a27b09488ac09845e230c7532d4387c0f9c8fe"),
33+
},
34+
node_urls = ["https://nodejs.org/dist/v21.6.1/{filename}"],
35+
node_version = "21.6.1.custom",
36+
)
2337

2438
# FIXME(6.0): a repo rule with name=foo should create a repo named @foo, not @foo_toolchains
2539
use_repo(
@@ -38,6 +52,13 @@ use_repo(
3852
"node16_nvmrc_windows_amd64",
3953
"node16_toolchains",
4054
"node16_windows_amd64",
55+
"node21_custom",
56+
"node21_custom_darwin_amd64",
57+
"node21_custom_darwin_arm64",
58+
"node21_custom_linux_amd64",
59+
"node21_custom_linux_arm64",
60+
"node21_custom_toolchains",
61+
"node21_custom_windows_amd64",
4162
"nodejs",
4263
"nodejs_darwin_amd64",
4364
"nodejs_darwin_arm64",

e2e/nodejs_host/WORKSPACE.bazel

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,21 @@ nodejs_register_toolchains(
2121
node_version_from_nvmrc = "//:.nvmrc",
2222
)
2323

24+
nodejs_register_toolchains(
25+
name = "node21_custom",
26+
node_repositories = {
27+
"21.6.1.custom-darwin_arm64": ("node-v21.6.1-darwin-arm64.tar.gz", "node-v21.6.1-darwin-arm64", "94c280bba809fa66867e363ec9e990217aedf893116660b8c75a1c4fda3baea5"),
28+
"21.6.1.custom-darwin_amd64": ("node-v21.6.1-darwin-x64.tar.gz", "node-v21.6.1-darwin-x64", "5c4821c62a1f61cf3219bc244d30a5b1cdec197c8acabc1ee7cd9ff17bbba947"),
29+
"21.6.1.custom-linux_arm64": ("node-v21.6.1-linux-arm64.tar.xz", "node-v21.6.1-linux-arm64", "19900c1a0a9d7e2ea781b46c7d498ffdf3e37e34f46b96e7344bd7bb8f27be66"),
30+
"21.6.1.custom-linux_ppc64le": ("node-v21.6.1-linux-ppc64le.tar.xz", "node-v21.6.1-linux-ppc64le", "0f22931238d96d931e8ad788326f4db92860e83105c493ee9b29a4b378b18f18"),
31+
"21.6.1.custom-linux_s390x": ("node-v21.6.1-linux-s390x.tar.xz", "node-v21.6.1-linux-s390x", "efa9496c3c1e1691dfabea45e2839b592675a571880b9d25b35d3565e16f3d66"),
32+
"21.6.1.custom-linux_amd64": ("node-v21.6.1-linux-x64.tar.xz", "node-v21.6.1-linux-x64", "c65cbf7342260df8e59dd2fe2e06dc1f36ac46c9d433a64cd84521fd4915c291"),
33+
"21.6.1.custom-windows_amd64": ("node-v21.6.1-win-x64.zip", "node-v21.6.1-win-x64", "a74b3933e73982553c1fdea3a3a27b09488ac09845e230c7532d4387c0f9c8fe"),
34+
},
35+
node_urls = ["https://nodejs.org/dist/v21.6.1/{filename}"],
36+
node_version = "21.6.1.custom",
37+
)
38+
2439
http_archive(
2540
name = "bazel_skylib",
2641
sha256 = "bc283cdfcd526a52c3201279cda4bc298652efa898b10b4db0837dc51652756f",

nodejs/extensions.bzl

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ def _toolchain_extension(module_ctx):
4949
node_version = v.node_version,
5050
node_version_from_nvmrc = v.node_version_from_nvmrc,
5151
node_urls = v.node_urls,
52+
node_repositories = v.node_repositories,
5253
include_headers = v.include_headers,
5354
register = False,
5455
)
@@ -84,6 +85,15 @@ This setting creates a dependency on a c++ toolchain.
8485
""",
8586
default = [DEFAULT_NODE_URL],
8687
),
88+
"node_repositories": attr.string_list_dict(
89+
doc = """Custom list of node repositories to use
90+
91+
A dictionary mapping Node.js versions to sets of hosts and their corresponding (filename, strip_prefix, sha256) tuples.
92+
You should list a node binary for every platform users have, likely Mac, Windows, and Linux.
93+
94+
By default, if this attribute has no items, we'll use a list of all public Node.js releases.
95+
""",
96+
),
8797
}
8898

8999
node = module_extension(

0 commit comments

Comments
 (0)