Skip to content

Commit 032a7d6

Browse files
committed
build: move from using WORKSPACE to MODULE.bazel
1 parent 6c64560 commit 032a7d6

File tree

9 files changed

+3136
-341
lines changed

9 files changed

+3136
-341
lines changed

.github/shared-actions/windows-bazel-test/action.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ runs:
1818
steps:
1919
- name: Initialize WSL
2020
id: init_wsl
21-
uses: angular/dev-infra/github-actions/setup-wsl@7a11f99c467ca5ae4411c27beeec4300e32b616a
21+
uses: angular/dev-infra/github-actions/setup-wsl@16e272eaa88efe5891e7e6c8e13b956ae7e5a73e
2222
with:
2323
wsl_firewall_interface: 'vEthernet (WSL (Hyper-V firewall))'
2424

MODULE.bazel

Lines changed: 162 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,166 @@
1-
# TODO(devversion): Investigate bzlmod and use it where possible.
1+
"""Rules/toolchains for angular_cli with Bazel."""
22

33
module(
44
name = "angular_cli",
55
)
6+
7+
bazel_dep(name = "yq.bzl", version = "0.2.0")
8+
bazel_dep(name = "rules_nodejs", version = "6.5.0")
9+
bazel_dep(name = "aspect_rules_js", version = "2.4.2")
10+
bazel_dep(name = "aspect_rules_ts", version = "3.6.3")
11+
bazel_dep(name = "rules_pkg", version = "0.8.1")
12+
# Alow for usage of [email protected] even though other deps want a later verison.
13+
multiple_version_override(module_name="rules_pkg", versions = ["0.8.1", "1.1.0"])
14+
bazel_dep(name = "rules_python", version = "1.5.3")
15+
single_version_override(module_name="rules_python", version = "1.5.3")
16+
bazel_dep(name = "aspect_bazel_lib", version = "2.20.0")
17+
bazel_dep(name = "bazel_skylib", version = "1.8.1")
18+
bazel_dep(name = "aspect_rules_esbuild", version = "0.22.1")
19+
bazel_dep(name = "aspect_rules_jasmine", version = "2.0.0")
20+
bazel_dep(name = "rules_angular")
21+
git_override(
22+
module_name = "rules_angular",
23+
commit = "a957283cdef0ade1fc6d1d7404f14577cebd3642",
24+
remote = "https://github.com/devversion/rules_angular.git",
25+
)
26+
bazel_dep(name = "devinfra")
27+
git_override(
28+
module_name = "devinfra",
29+
commit = "7a11f99c467ca5ae4411c27beeec4300e32b616a",
30+
remote = "https://github.com/angular/dev-infra.git",
31+
)
32+
bazel_dep(name = "rules_sass")
33+
git_override(
34+
module_name = "rules_sass",
35+
commit = "76078d5e9776a0080dcee496e90b88d8a6179c19",
36+
remote = "https://github.com/devversion/rules_sass.git",
37+
)
38+
bazel_dep(name = "rules_browsers")
39+
git_override(
40+
module_name = "rules_browsers",
41+
commit = "8ee9ae3216ef26516c8ef20537c89857343cdc3a",
42+
remote = "https://github.com/devversion/rules_browsers.git",
43+
)
44+
45+
NODE_24_VERSION = "24.0.0"
46+
NODE_24_REPO = {
47+
"24.0.0-darwin_arm64": ("node-v24.0.0-darwin-arm64.tar.gz", "node-v24.0.0-darwin-arm64", "194e2f3dd3ec8c2adcaa713ed40f44c5ca38467880e160974ceac1659be60121"),
48+
"24.0.0-darwin_amd64": ("node-v24.0.0-darwin-x64.tar.gz", "node-v24.0.0-darwin-x64", "f716b3ce14a7e37a6cbf97c9de10d444d7da07ef833cd8da81dd944d111e6a4a"),
49+
"24.0.0-linux_arm64": ("node-v24.0.0-linux-arm64.tar.xz", "node-v24.0.0-linux-arm64", "d40ec7ffe0b82b02dce94208c84351424099bd70fa3a42b65c46d95322305040"),
50+
"24.0.0-linux_ppc64le": ("node-v24.0.0-linux-ppc64le.tar.xz", "node-v24.0.0-linux-ppc64le", "cfa0e8d51a2f9a446f1bfb81cdf4c7e95336ad622e2aa230e3fa1d093c63d77d"),
51+
"24.0.0-linux_s390x": ("node-v24.0.0-linux-s390x.tar.xz", "node-v24.0.0-linux-s390x", "e37a04c7ee05416ec1234fd3255e05b6b81287eb0424a57441c8b69f0a155021"),
52+
"24.0.0-linux_amd64": ("node-v24.0.0-linux-x64.tar.xz", "node-v24.0.0-linux-x64", "59b8af617dccd7f9f68cc8451b2aee1e86d6bd5cb92cd51dd6216a31b707efd7"),
53+
"24.0.0-windows_amd64": ("node-v24.0.0-win-x64.zip", "node-v24.0.0-win-x64", "3d0fff80c87bb9a8d7f49f2f27832aa34a1477d137af46f5b14df5498be81304"),
54+
}
55+
56+
node = use_extension("@rules_nodejs//nodejs:extensions.bzl", "node")
57+
node.toolchain(
58+
name = "nodejs",
59+
node_repositories = NODE_24_REPO,
60+
node_version = NODE_24_VERSION,
61+
)
62+
use_repo(node, "nodejs_toolchains")
63+
64+
node.toolchain(
65+
name = "node20",
66+
node_repositories = {
67+
"20.19.0-darwin_arm64": ("node-v20.19.0-darwin-arm64.tar.gz", "node-v20.19.0-darwin-arm64", "c016cd1975a264a29dc1b07c6fbe60d5df0a0c2beb4113c0450e3d998d1a0d9c"),
68+
"20.19.0-darwin_amd64": ("node-v20.19.0-darwin-x64.tar.gz", "node-v20.19.0-darwin-x64", "a8554af97d6491fdbdabe63d3a1cfb9571228d25a3ad9aed2df856facb131b20"),
69+
"20.19.0-linux_arm64": ("node-v20.19.0-linux-arm64.tar.xz", "node-v20.19.0-linux-arm64", "dbe339e55eb393955a213e6b872066880bb9feceaa494f4d44c7aac205ec2ab9"),
70+
"20.19.0-linux_ppc64le": ("node-v20.19.0-linux-ppc64le.tar.xz", "node-v20.19.0-linux-ppc64le", "84937108f005679e60b486ed8e801cebfe923f02b76d8e710463d32f82181f65"),
71+
"20.19.0-linux_s390x": ("node-v20.19.0-linux-s390x.tar.xz", "node-v20.19.0-linux-s390x", "11f8ee99d792a83bba7b29911e0229dd6cd5e88987d7416346067db1cc76d89a"),
72+
"20.19.0-linux_amd64": ("node-v20.19.0-linux-x64.tar.xz", "node-v20.19.0-linux-x64", "b4e336584d62abefad31baecff7af167268be9bb7dd11f1297112e6eed3ca0d5"),
73+
"20.19.0-windows_amd64": ("node-v20.19.0-win-x64.zip", "node-v20.19.0-win-x64", "be72284c7bc62de07d5a9fd0ae196879842c085f11f7f2b60bf8864c0c9d6a4f"),
74+
},
75+
node_version = "20.19.0",
76+
)
77+
use_repo(node, "node20_toolchains")
78+
79+
node.toolchain(
80+
name = "node22",
81+
node_repositories = {
82+
"22.12.0-darwin_arm64": ("node-v22.12.0-darwin-arm64.tar.gz", "node-v22.12.0-darwin-arm64", "293dcc6c2408da21562d135b0412525e381bb6fe150d688edb58fe850d0f3e13"),
83+
"22.12.0-darwin_amd64": ("node-v22.12.0-darwin-x64.tar.gz", "node-v22.12.0-darwin-x64", "52bc25dd026db7247c3c00439afdb83e95087248267f02d6c1a7250d1f896173"),
84+
"22.12.0-linux_arm64": ("node-v22.12.0-linux-arm64.tar.xz", "node-v22.12.0-linux-arm64", "8cfd5a8b9afae5a2e0bd86b0148ca31d2589c0ea669c2d0b11c132e35d90ed68"),
85+
"22.12.0-linux_ppc64le": ("node-v22.12.0-linux-ppc64le.tar.xz", "node-v22.12.0-linux-ppc64le", "199a606ba1ee86cce6d6b369c71f9d00873d2836a6662592afc3b6a5923e2004"),
86+
"22.12.0-linux_s390x": ("node-v22.12.0-linux-s390x.tar.xz", "node-v22.12.0-linux-s390x", "9b517f8006eb4b451d40c461cbe64f93c6455566dbe2613387ab02412bc06d35"),
87+
"22.12.0-linux_amd64": ("node-v22.12.0-linux-x64.tar.xz", "node-v22.12.0-linux-x64", "22982235e1b71fa8850f82edd09cdae7e3f32df1764a9ec298c72d25ef2c164f"),
88+
"22.12.0-windows_amd64": ("node-v22.12.0-win-x64.zip", "node-v22.12.0-win-x64", "2b8f2256382f97ad51e29ff71f702961af466c4616393f767455501e6aece9b8"),
89+
},
90+
node_version = "22.12.0",
91+
)
92+
use_repo(node, "node22_toolchains")
93+
94+
node.toolchain(
95+
name = "node24",
96+
node_repositories = NODE_24_REPO,
97+
node_version = NODE_24_VERSION,
98+
)
99+
use_repo(node, "node24_toolchains")
100+
101+
npm = use_extension("@aspect_rules_js//npm:extensions.bzl", "npm")
102+
npm.npm_translate_lock(
103+
name = "npm",
104+
custom_postinstalls = {
105+
# TODO: Standardize browser management for `rules_js`
106+
"webdriver-manager": "node ./bin/webdriver-manager update --standalone false --gecko false --versions.chrome 106.0.5249.21",
107+
},
108+
data = [
109+
"//:package.json",
110+
"//:pnpm-workspace.yaml",
111+
"//modules/testing/builder:package.json",
112+
"//packages/angular/build:package.json",
113+
"//packages/angular/cli:package.json",
114+
"//packages/angular/pwa:package.json",
115+
"//packages/angular/ssr:package.json",
116+
"//packages/angular_devkit/architect:package.json",
117+
"//packages/angular_devkit/architect_cli:package.json",
118+
"//packages/angular_devkit/build_angular:package.json",
119+
"//packages/angular_devkit/build_webpack:package.json",
120+
"//packages/angular_devkit/core:package.json",
121+
"//packages/angular_devkit/schematics:package.json",
122+
"//packages/angular_devkit/schematics_cli:package.json",
123+
"//packages/ngtools/webpack:package.json",
124+
"//packages/schematics/angular:package.json",
125+
"//tests:package.json",
126+
"//tools/baseline_browserslist:package.json",
127+
],
128+
lifecycle_hooks_envs = {
129+
# TODO: Standardize browser management for `rules_js`
130+
"puppeteer": ["PUPPETEER_DOWNLOAD_PATH=./downloads"],
131+
},
132+
lifecycle_hooks_execution_requirements = {
133+
# Needed for downloading chromedriver.
134+
# Also `update-config` of webdriver manager would store an absolute path;
135+
# which would then break execution.
136+
"webdriver-manager": ["local"],
137+
},
138+
npmrc = "//:.npmrc",
139+
pnpm_lock = "//:pnpm-lock.yaml",
140+
verify_node_modules_ignored = "//:.bazelignore",
141+
)
142+
use_repo(npm, "npm")
143+
144+
rules_ts_ext = use_extension("@aspect_rules_ts//ts:extensions.bzl", "ext")
145+
rules_ts_ext.deps(
146+
# Obtained by: curl --silent https://registry.npmjs.org/typescript/5.9.2 | jq -r '.dist.integrity'
147+
ts_integrity = "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==",
148+
ts_version_from = "//:package.json",
149+
name = "angular_cli_npm_typescript",
150+
)
151+
use_repo(rules_ts_ext, **{"npm_typescript":"angular_cli_npm_typescript"})
152+
153+
rules_angular = use_extension("@rules_angular//setup:extensions.bzl", "rules_angular")
154+
rules_angular.setup(
155+
name = "components_rules_angular_configurable_deps",
156+
angular_compiler_cli = "//:node_modules/@angular/compiler-cli",
157+
typescript = "//:node_modules/typescript",
158+
)
159+
use_repo(rules_angular, **{"rules_angular_configurable_deps":"components_rules_angular_configurable_deps"})
160+
161+
register_toolchains(
162+
"@devinfra//bazel/git-toolchain:git_linux_toolchain",
163+
"@devinfra//bazel/git-toolchain:git_macos_x86_toolchain",
164+
"@devinfra//bazel/git-toolchain:git_macos_arm64_toolchain",
165+
"@devinfra//bazel/git-toolchain:git_windows_toolchain",
166+
)

0 commit comments

Comments
 (0)