-
Notifications
You must be signed in to change notification settings - Fork 136
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Bazel test doesn't work on Windows x64 machine #485
Comments
Oh I think this is caused by #471 and just got lost in the logs. We're importing |
Hello, @aaronmondal . |
I'd love to as well ❤️ Yesterday we ran into the same thing on MacOS which is currently not enabled in CI but was kinda working for ~4 days before #471 broke it 😅 For more context to what I think is happening: #471 Introduced Lines 12 to 19 in 96302cb
On linux this isn't noticeable as the toolchain suite that triggers this is valid on linux: nativelink/local-remote-execution/generated/cc/BUILD Lines 47 to 58 in 96302cb
On non-nix this toolchain doesn't get selected though and so the native-Bazel CI workflows keep working as expected. So far this is intended behavior. The issue seems to be that the above nativelink/local-remote-execution/generated/config/BUILD Lines 18 to 47 in 96302cb
There was an issue in Bazel that I can't find anymore which suggested that this might be fixed in bazel 7.0.0. I think it might be worth investigating that. Otherwise it might work if we register additional toolchains for Windows and MacOS which wrap regular toolchain autodetection. Also one note for testing: The workspace is read in serial. Moving things like the |
Thanks for your reply, @aaronmondal. |
@steed924 Yes, the previous runs on main for the native Windows Bazel build worked are here: https://github.com/TraceMachina/nativelink/actions/workflows/native-bazel.yaml?query=branch%3Amain However, we did not run integration tests on Windows. Here's what's happening:
The only environment that accurately constructs a remote execution setup is the K8s example. That doesn't work on Windows and we can't make that exact setup compatible with Windows because Nix only works in WSL2 but not on native Windows. However, what we can do is distribute a C++ toolchain for windows as part of the Bazel build which overrides any local compilers. This way we get this "airgapped" setup on windows as well. When we ship the toolchain we're no longer susceptible to differing host toolchain configurations and I think that's the way to fix this issue. FYI the workaround which is used in the (linux) production deployments at the moment is to run nativelink in container images that "just happen" to have all relevant dependencies at the right places. For instance by using a Note that this is actually quite bad because it means that even in the cases that currently work the same action command will create different artifacts on your local machine and a remote machine. In terms of reproducibility/hermeticity I'd consider this a "critical silent bug" for all existing deployments except the LRE setup. |
Oh and actually regarding your initial question, remote execution on Windows was not tested and I don't think it ever worked 😅 We'll have to implement a windows toolchain for remote execution. From some initial googling I couldn't find any existing remote-exec compatible Windows toolchains. |
@aaronmondal
I don't think so, at least in my case - there is such a file in the directory specified in the config file's Also, the hash in |
I've tried Bazel test on Windows x64 machine.
I ran the server with
cargo
command and it started running correctly.cargo run --bin cas -- ./nativelink-config/examples/basic_cas.json
But
bazel test
command fails with this error message.Is it a known issue for us? I think we didn't add
Windows x64
configuration for the local execution build file.The text was updated successfully, but these errors were encountered: