From a9bb00c9ffe99854b4d319b697fcb7cf3db3d788 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Wed, 28 Aug 2024 18:25:53 +0000 Subject: [PATCH 1/3] build: minimize fakes in Windows for critters bundling This commit addresses linker limitations on Windows, which are susceptible to race conditions when targets are built concurrently. Example CI run: https://github.com/angular/angular-cli/actions/runs/10602179601/job/29383657763?pr=28302 --- packages/angular/ssr/third_party/critters/BUILD.bazel | 6 +++++- packages/angular/ssr/third_party/critters/index.mjs | 9 +++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 packages/angular/ssr/third_party/critters/index.mjs diff --git a/packages/angular/ssr/third_party/critters/BUILD.bazel b/packages/angular/ssr/third_party/critters/BUILD.bazel index 8dde77495c4e..2ddfecdb6901 100644 --- a/packages/angular/ssr/third_party/critters/BUILD.bazel +++ b/packages/angular/ssr/third_party/critters/BUILD.bazel @@ -6,7 +6,11 @@ package(default_visibility = ["//visibility:public"]) esbuild( name = "bundled_critters", config = ":esbuild_config", - entry_point = "@npm//:node_modules/critters/dist/critters.mjs", + # We should be able to use "@npm//:node_modules/critters/dist/critters.mjs" as entry_point and avoid having to create a file. + # But this causes a lot of flakes on Windows due to the linker. + # [link_node_modules.js] An error has been reported: [Error: ENOENT: no such file or directory, + # unlink 'C:\users\runneradmin\_bazel_runneradmin\whf6gbwo\execroot\angular_cli\node_modules'] + entry_point = ":index.mjs", metafile = True, splitting = True, deps = [ diff --git a/packages/angular/ssr/third_party/critters/index.mjs b/packages/angular/ssr/third_party/critters/index.mjs new file mode 100644 index 000000000000..2d7efd309d20 --- /dev/null +++ b/packages/angular/ssr/third_party/critters/index.mjs @@ -0,0 +1,9 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +export { default } from 'critters'; From 66cbff01c6dd8ea4e03cc9c80890d7f794983cf3 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Wed, 28 Aug 2024 19:13:21 +0000 Subject: [PATCH 2/3] wip! --- .github/workflows/pr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index c63d0bb897c4..1a94ac967918 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -104,7 +104,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest] + os: [windows-latest] node: [22] subset: [npm, esbuild] shard: [0, 1, 2, 3, 4, 5] From 81bb1477432e562d1a5e93f4d601aed517dd3add Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Wed, 28 Aug 2024 22:10:58 +0200 Subject: [PATCH 3/3] Update .bazelrc --- .bazelrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.bazelrc b/.bazelrc index 126ca0493e54..92698092c135 100644 --- a/.bazelrc +++ b/.bazelrc @@ -143,7 +143,7 @@ build:remote --host_platform=@npm//@angular/build-tooling/bazel/remote-execution build:remote --platforms=@npm//@angular/build-tooling/bazel/remote-execution:platform_with_network # Set remote caching settings -build:remote --remote_accept_cached=true +build:remote --remote_accept_cached=false # Force remote executions to consider the entire run as linux. # This is required for OSX cross-platform RBE.