Build windows without runfiles links by default. (#3366)
diff --git a/.bazelci/presubmit.yml b/.bazelci/presubmit.yml index 11c3077..4014ec3 100644 --- a/.bazelci/presubmit.yml +++ b/.bazelci/presubmit.yml
@@ -69,9 +69,6 @@ default_windows_targets: &default_windows_targets - "--" # Allows negative patterns; hack for https://github.com/bazelbuild/continuous-integration/pull/245 - "//..." -default_windows_no_runfiles_targets: &default_windows_no_runfiles_targets - - "--" # Allows negative patterns; hack for https://github.com/bazelbuild/continuous-integration/pull/245 - - "//..." crate_universe_vendor_example_targets: &crate_universe_vendor_example_targets - "//vendor_external:crates_vendor" - "//vendor_local_manifests:crates_vendor" @@ -148,15 +145,14 @@ shell_commands: *no_bzlmod_shell_commands build_targets: *default_windows_targets test_targets: *default_windows_targets - windows_no_runfiles: - name: No Runfiles + windows_with_runfiles: + name: With Runfiles platform: windows - build_flags: - - "--noenable_runfiles" - test_flags: - - "--noenable_runfiles" - build_targets: *default_windows_no_runfiles_targets - test_targets: *default_windows_no_runfiles_targets + batch_commands: + - echo startup --windows_enable_symlinks > user.bazelrc + - echo common --noenable_runfiles >> user.bazelrc + build_targets: *default_windows_targets + test_targets: *default_windows_targets ubuntu2004_split_coverage_postprocessing: name: Split Coverage Postprocessing platform: ubuntu2004 @@ -251,18 +247,19 @@ build_targets: *default_windows_targets test_targets: *default_windows_targets windows_no_runfiles_with_aspects: - name: No Runfiles With Aspects + name: With Runfiles With Aspects platform: windows + batch_commands: + - echo startup --windows_enable_symlinks > user.bazelrc + - echo common --noenable_runfiles >> user.bazelrc build_flags: - - "--noenable_runfiles" - "--config=rustfmt" - "--config=clippy" test_flags: - - "--noenable_runfiles" - "--config=rustfmt" - "--config=clippy" - build_targets: *default_windows_no_runfiles_targets - test_targets: *default_windows_no_runfiles_targets + build_targets: *default_windows_targets + test_targets: *default_windows_targets windows_rolling_with_aspects: name: "Windows Rolling Bazel Version With Aspects" platform: windows
diff --git a/.bazelrc b/.bazelrc index 2842c53..325b24b 100644 --- a/.bazelrc +++ b/.bazelrc
@@ -11,10 +11,6 @@ # https://bazel.build/reference/command-line-reference#flag--enable_platform_specific_config common --enable_platform_specific_config -# https://bazel.build/docs/windows#symlink -startup --windows_enable_symlinks -build:windows --enable_runfiles - # Enable the only currently supported report type # https://bazel.build/reference/command-line-reference#flag--combined_report coverage --combined_report=lcov
diff --git a/.github/github.bazelrc b/.github/github.bazelrc index 9e89572..d9d0f5a 100644 --- a/.github/github.bazelrc +++ b/.github/github.bazelrc
@@ -3,10 +3,6 @@ # Always display the flags being used common --announce_rc -# These settings make the windows workers behave similarly to unix workers -startup --windows_enable_symlinks -build --enable_runfiles - # Show errors in CI test --test_output=errors
diff --git a/cargo/cargo_build_script_runner/cargo_manifest_dir.rs b/cargo/cargo_build_script_runner/cargo_manifest_dir.rs index efb70c3..def343a 100644 --- a/cargo/cargo_build_script_runner/cargo_manifest_dir.rs +++ b/cargo/cargo_build_script_runner/cargo_manifest_dir.rs
@@ -279,7 +279,7 @@ /// Delete runfiles from the runfiles directory that do not match user defined suffixes /// /// The Windows implementation assumes symlinks are not supported and real files will have - /// been copied into the runfiles directoriy. + /// been copied into the runfiles directory. fn drain_runfiles_dir_windows(&self) -> Result<(), String> { for dest in self.runfiles.values() { if !self
diff --git a/docs/src/index.md b/docs/src/index.md index e2c066f..7eeadce 100644 --- a/docs/src/index.md +++ b/docs/src/index.md
@@ -98,5 +98,3 @@ We aim to support Linux and macOS. We do not have sufficient maintainer expertise to support Windows. Most things probably work, but we have had to disable many tests in CI because we lack the expertise to fix them. We welcome contributions to help improve its support. - -Windows support for some features requires `--enable_runfiles` to be passed to Bazel, we recommend putting it in your bazelrc. See [Using Bazel on Windows](https://bazel.build/configure/windows) for more Windows-specific recommendations.
diff --git a/examples/all_crate_deps/.bazelrc b/examples/all_crate_deps/.bazelrc index 82cd3f6..80e5bff 100644 --- a/examples/all_crate_deps/.bazelrc +++ b/examples/all_crate_deps/.bazelrc
@@ -1,10 +1,3 @@ -# Required on windows -common --enable_platform_specific_config -startup --windows_enable_symlinks -build:windows --enable_runfiles - -build --experimental_enable_bzlmod - # This isn't currently the defaut in Bazel, but we enable it to test we'll be ready if/when it flips. build --incompatible_disallow_empty_glob
diff --git a/examples/compile_opt/.bazelrc b/examples/compile_opt/.bazelrc index 28163ca..0397923 100644 --- a/examples/compile_opt/.bazelrc +++ b/examples/compile_opt/.bazelrc
@@ -1,8 +1,3 @@ -# Required on windows -common --enable_platform_specific_config -startup --windows_enable_symlinks -build:windows --enable_runfiles - # This isn't currently the defaut in Bazel, but we enable it to test we'll be ready if/when it flips. build --incompatible_disallow_empty_glob
diff --git a/examples/crate_universe/cargo_aliases/.bazelrc b/examples/crate_universe/cargo_aliases/.bazelrc deleted file mode 100644 index a67f1ba..0000000 --- a/examples/crate_universe/cargo_aliases/.bazelrc +++ /dev/null
@@ -1,25 +0,0 @@ -# A config file containing Bazel settings - -# Required on windows -common --enable_platform_specific_config -startup --windows_enable_symlinks -build:windows --enable_runfiles - -# Enable rustfmt -build:strict --aspects=@rules_rust//rust:defs.bzl%rustfmt_aspect -build:strict --output_groups=+rustfmt_checks - -# Enable clippy -build:strict --aspects=@rules_rust//rust:defs.bzl%rust_clippy_aspect -build:strict --output_groups=+clippy_checks - -# TODO: migrate all dependencies from WORKSPACE to MODULE.bazel -# https://github.com/bazelbuild/rules_rust/issues/2181 -common --noenable_bzlmod - -# This isn't currently the defaut in Bazel, but we enable it to test we'll be ready if/when it flips. -build --incompatible_disallow_empty_glob - -# This import should always be last to allow users to override -# settings for local development. -try-import %workspace%/user.bazelrc
diff --git a/examples/crate_universe/cargo_remote/.bazelrc b/examples/crate_universe/cargo_remote/.bazelrc deleted file mode 100644 index a67f1ba..0000000 --- a/examples/crate_universe/cargo_remote/.bazelrc +++ /dev/null
@@ -1,25 +0,0 @@ -# A config file containing Bazel settings - -# Required on windows -common --enable_platform_specific_config -startup --windows_enable_symlinks -build:windows --enable_runfiles - -# Enable rustfmt -build:strict --aspects=@rules_rust//rust:defs.bzl%rustfmt_aspect -build:strict --output_groups=+rustfmt_checks - -# Enable clippy -build:strict --aspects=@rules_rust//rust:defs.bzl%rust_clippy_aspect -build:strict --output_groups=+clippy_checks - -# TODO: migrate all dependencies from WORKSPACE to MODULE.bazel -# https://github.com/bazelbuild/rules_rust/issues/2181 -common --noenable_bzlmod - -# This isn't currently the defaut in Bazel, but we enable it to test we'll be ready if/when it flips. -build --incompatible_disallow_empty_glob - -# This import should always be last to allow users to override -# settings for local development. -try-import %workspace%/user.bazelrc
diff --git a/examples/crate_universe/cargo_workspace/.bazelrc b/examples/crate_universe/cargo_workspace/.bazelrc deleted file mode 100644 index a67f1ba..0000000 --- a/examples/crate_universe/cargo_workspace/.bazelrc +++ /dev/null
@@ -1,25 +0,0 @@ -# A config file containing Bazel settings - -# Required on windows -common --enable_platform_specific_config -startup --windows_enable_symlinks -build:windows --enable_runfiles - -# Enable rustfmt -build:strict --aspects=@rules_rust//rust:defs.bzl%rustfmt_aspect -build:strict --output_groups=+rustfmt_checks - -# Enable clippy -build:strict --aspects=@rules_rust//rust:defs.bzl%rust_clippy_aspect -build:strict --output_groups=+clippy_checks - -# TODO: migrate all dependencies from WORKSPACE to MODULE.bazel -# https://github.com/bazelbuild/rules_rust/issues/2181 -common --noenable_bzlmod - -# This isn't currently the defaut in Bazel, but we enable it to test we'll be ready if/when it flips. -build --incompatible_disallow_empty_glob - -# This import should always be last to allow users to override -# settings for local development. -try-import %workspace%/user.bazelrc
diff --git a/examples/crate_universe/multi_package/.bazelrc b/examples/crate_universe/multi_package/.bazelrc deleted file mode 100644 index a67f1ba..0000000 --- a/examples/crate_universe/multi_package/.bazelrc +++ /dev/null
@@ -1,25 +0,0 @@ -# A config file containing Bazel settings - -# Required on windows -common --enable_platform_specific_config -startup --windows_enable_symlinks -build:windows --enable_runfiles - -# Enable rustfmt -build:strict --aspects=@rules_rust//rust:defs.bzl%rustfmt_aspect -build:strict --output_groups=+rustfmt_checks - -# Enable clippy -build:strict --aspects=@rules_rust//rust:defs.bzl%rust_clippy_aspect -build:strict --output_groups=+clippy_checks - -# TODO: migrate all dependencies from WORKSPACE to MODULE.bazel -# https://github.com/bazelbuild/rules_rust/issues/2181 -common --noenable_bzlmod - -# This isn't currently the defaut in Bazel, but we enable it to test we'll be ready if/when it flips. -build --incompatible_disallow_empty_glob - -# This import should always be last to allow users to override -# settings for local development. -try-import %workspace%/user.bazelrc
diff --git a/examples/crate_universe/no_cargo_manifests/.bazelrc b/examples/crate_universe/no_cargo_manifests/.bazelrc deleted file mode 100644 index a67f1ba..0000000 --- a/examples/crate_universe/no_cargo_manifests/.bazelrc +++ /dev/null
@@ -1,25 +0,0 @@ -# A config file containing Bazel settings - -# Required on windows -common --enable_platform_specific_config -startup --windows_enable_symlinks -build:windows --enable_runfiles - -# Enable rustfmt -build:strict --aspects=@rules_rust//rust:defs.bzl%rustfmt_aspect -build:strict --output_groups=+rustfmt_checks - -# Enable clippy -build:strict --aspects=@rules_rust//rust:defs.bzl%rust_clippy_aspect -build:strict --output_groups=+clippy_checks - -# TODO: migrate all dependencies from WORKSPACE to MODULE.bazel -# https://github.com/bazelbuild/rules_rust/issues/2181 -common --noenable_bzlmod - -# This isn't currently the defaut in Bazel, but we enable it to test we'll be ready if/when it flips. -build --incompatible_disallow_empty_glob - -# This import should always be last to allow users to override -# settings for local development. -try-import %workspace%/user.bazelrc
diff --git a/examples/override_target/.bazelrc b/examples/override_target/.bazelrc index 82cd3f6..80e5bff 100644 --- a/examples/override_target/.bazelrc +++ b/examples/override_target/.bazelrc
@@ -1,10 +1,3 @@ -# Required on windows -common --enable_platform_specific_config -startup --windows_enable_symlinks -build:windows --enable_runfiles - -build --experimental_enable_bzlmod - # This isn't currently the defaut in Bazel, but we enable it to test we'll be ready if/when it flips. build --incompatible_disallow_empty_glob
diff --git a/examples/zig_cross_compiling/.bazelrc b/examples/zig_cross_compiling/.bazelrc index 0be7ebb..def684b 100644 --- a/examples/zig_cross_compiling/.bazelrc +++ b/examples/zig_cross_compiling/.bazelrc
@@ -1,13 +1,4 @@ -# Required on windows -common --enable_platform_specific_config -startup --windows_enable_symlinks -build:windows --enable_runfiles - build --incompatible_enable_cc_toolchain_resolution -# TODO: migrate all dependencies from WORKSPACE to MODULE.bazel -# https://github.com/bazelbuild/rules_rust/issues/2181 -common --noenable_bzlmod - # This isn't currently the defaut in Bazel, but we enable it to test we'll be ready if/when it flips. build --incompatible_disallow_empty_glob
diff --git a/extensions/protobuf/.bazelrc b/extensions/protobuf/.bazelrc index 3d63a6e..a1fc778 100644 --- a/extensions/protobuf/.bazelrc +++ b/extensions/protobuf/.bazelrc
@@ -8,10 +8,6 @@ # https://bazel.build/reference/command-line-reference#flag--enable_platform_specific_config common --enable_platform_specific_config -# https://bazel.build/docs/windows#symlink -startup --windows_enable_symlinks -build:windows --enable_runfiles - # Enable the only currently supported report type # https://bazel.build/reference/command-line-reference#flag--combined_report coverage --combined_report=lcov
diff --git a/test/cargo_build_script/resolve_abs_symlink_out_dir/BUILD.bazel b/test/cargo_build_script/resolve_abs_symlink_out_dir/BUILD.bazel index 9d7a466..300029d 100644 --- a/test/cargo_build_script/resolve_abs_symlink_out_dir/BUILD.bazel +++ b/test/cargo_build_script/resolve_abs_symlink_out_dir/BUILD.bazel
@@ -9,6 +9,11 @@ srcs = ["build.rs"], data = ["data.txt"], edition = "2018", + # TODO: Fix flake on windows. + target_compatible_with = select({ + "@platforms//os:windows": ["@platforms//:incompatible"], + "//conditions:default": [], + }), ) rust_test( @@ -16,10 +21,5 @@ srcs = ["test.rs"], data = [":symlink_build_rs"], edition = "2018", - # TODO: Fix flake on windows. - target_compatible_with = select({ - "@platforms//os:windows": ["@platforms//:incompatible"], - "//conditions:default": [], - }), deps = [":symlink_build_rs"], )
diff --git a/test/cargo_build_script/resolve_abs_symlink_out_dir/build.rs b/test/cargo_build_script/resolve_abs_symlink_out_dir/build.rs index db119d4..7a9ec8e 100644 --- a/test/cargo_build_script/resolve_abs_symlink_out_dir/build.rs +++ b/test/cargo_build_script/resolve_abs_symlink_out_dir/build.rs
@@ -24,5 +24,4 @@ symlink("data.txt", "relative_symlink.txt"); symlink("../data.txt", "nested/relative_symlink.txt"); std::env::set_current_dir(&original_cwd).unwrap(); - println!("{}", out_dir.display()); }
diff --git a/test/unit/compile_data/compile_data_test.bzl b/test/unit/compile_data/compile_data_test.bzl index e4af703..95031b6 100644 --- a/test/unit/compile_data/compile_data_test.bzl +++ b/test/unit/compile_data/compile_data_test.bzl
@@ -1,6 +1,7 @@ """Unittest to verify compile_data (attribute) propagation""" load("@bazel_skylib//lib:unittest.bzl", "analysistest", "asserts") +load("@bazel_skylib//rules:write_file.bzl", "write_file") load("//rust:defs.bzl", "rust_common", "rust_doc", "rust_library", "rust_test") load( "//test/unit:common.bzl", @@ -95,10 +96,11 @@ crate = ":compile_data_env", ) - native.genrule( + write_file( name = "generated_compile_data", - outs = ["generated.txt"], - cmd = "echo 'generated compile data contents' > $@", + out = "generated.txt", + content = ["generated compile data contents", ""], + newline = "unix", ) rust_library( @@ -113,10 +115,11 @@ crate = ":compile_data_gen", ) - native.genrule( + write_file( name = "generated_src", - outs = ["generated.rs"], - cmd = """echo 'pub const GENERATED: &str = "generated";' > $@""", + out = "generated.rs", + content = ["pub const GENERATED: &str = \"generated\";", ""], + newline = "unix", ) rust_library(