diff --git a/.bazelci/presubmit.yml b/.bazelci/presubmit.yml index 025c716d22..0ea62b5727 100644 --- a/.bazelci/presubmit.yml +++ b/.bazelci/presubmit.yml @@ -1,99 +1,109 @@ --- +aspects_flags: &aspects_flags + - "--config=rustfmt" + - "--config=clippy" default_linux_targets: &default_linux_targets - - "--" # Allows negative patterns; hack for https://github.com/bazelbuild/continuous-integration/pull/245 - - "..." - - "@examples//..." + - "//..." # TODO: Switch manual tag to platform constraint after bazel 4.0. - "//test/versioned_dylib:versioned_dylib_test" - # Bindgen currently only has a working toolchain for 18.04 - - "-@examples//ffi/rust_calling_c/simple/..." +default_macos_targets: &default_macos_targets + - "//..." +default_windows_targets: &default_windows_targets + - "--" # Allows negative patterns; hack for https://github.com/bazelbuild/continuous-integration/pull/245 + - "//..." + - "-//bindgen/..." + - "-//test/test_env/..." + - "-//test/proto/..." + - "-//tools/rust_analyzer/..." + - "-//test/rustfmt/..." + # rust_doc_test targets are currently broken on windows + # see: https://github.com/bazelbuild/rules_rust/issues/887 + - "-//test/chained_direct_deps:mod3_doc_test" tasks: - ubuntu1804: - build_targets: *default_linux_targets - test_targets: - - "..." - - "@examples//..." - # TODO: Switch manual tag to platform constraint after bazel 4.0. - - "//test/versioned_dylib:versioned_dylib_test" - build_flags: - - "--config=rustfmt" - - "--config=clippy" ubuntu2004: - name: "Minimum Supported Version" - bazel: "3.5.0" build_targets: *default_linux_targets test_targets: *default_linux_targets - build_flags: - - "--config=rustfmt" - - "--config=clippy" - macos: - osx_targets: &osx_targets - - "--" # Allows negative patterns; hack for https://github.com/bazelbuild/continuous-integration/pull/245 - - "..." - - "@examples//..." - # This test requires --incompatible_macos_set_install_name and Bazel 4.2.0+ - - "-@examples//ffi/rust_calling_c:matrix_dylib_test" - build_targets: *osx_targets - test_targets: *osx_targets - build_flags: - - "--config=rustfmt" - - "--config=clippy" rbe_ubuntu1604: + build_targets: + - "//..." test_targets: - "--" # Allows negative patterns; hack for https://github.com/bazelbuild/continuous-integration/pull/245 - - "..." + - "//..." - "//test/..." - - "@examples//..." - "-//test/conflicting_deps:conflicting_deps_test" # rust_doc_test is likely not fully sandboxed - "-//test/chained_direct_deps:mod3_doc_test" - - "-@examples//fibonacci:fibonacci_doc_test" - - "-@examples//hello_lib:hello_lib_doc_test" - - "-@examples//ffi/rust_calling_c/simple/..." - # See https://github.com/bazelbuild/bazel/issues/9987 - - "-@examples//ffi/rust_calling_c:matrix_dylib_test" - build_flags: - - "--config=rustfmt" - - "--config=clippy" + macos: + build_targets: *default_macos_targets + test_targets: *default_macos_targets + build_flags: *aspects_flags windows: build_flags: - "--enable_runfiles" # this is not enabled by default on windows and is necessary for the cargo build scripts - "--config=rustfmt" - "--config=clippy" - windows_targets: &windows_targets + build_targets: *default_windows_targets + test_targets: *default_windows_targets + ubuntu2004_with_aspects: + name: With Aspects + platform: ubuntu2004 + build_targets: *default_linux_targets + test_targets: *default_linux_targets + build_flags: *aspects_flags + rbe_ubuntu1604_with_aspects: + name: With Aspects + platform: rbe_ubuntu1604 + build_targets: *default_linux_targets + test_targets: - "--" # Allows negative patterns; hack for https://github.com/bazelbuild/continuous-integration/pull/245 - "..." - - "-//bindgen/..." - - "-//test/test_env/..." - - "-//test/proto/..." - - "-//tools/rust_analyzer/..." - - "-//test/rustfmt/..." - - "@examples//..." - - "-@examples//ffi/rust_calling_c:matrix_dylib_test" - - "-@examples//ffi/rust_calling_c:matrix_dynamically_linked" - - "-@examples//ffi/rust_calling_c/simple/..." - - "-@examples//sys/..." - - "-@examples//proto/..." - - "-@examples//wasm/..." - # rust_doc_test targets are currently broken on windows - # see: https://github.com/bazelbuild/rules_rust/issues/887 - - "-@examples//hello_lib:hello_lib_doc_test" - - "-@examples//fibonacci:fibonacci_doc_test" + - "//test/..." + - "-//test/conflicting_deps:conflicting_deps_test" + # rust_doc_test is likely not fully sandboxed - "-//test/chained_direct_deps:mod3_doc_test" - build_targets: *windows_targets - test_targets: *windows_targets - examples: - name: Examples - platform: ubuntu1804 - working_directory: examples - test_targets: - - //... + build_flags: *aspects_flags + macos_with_aspects: + name: With Aspects + platform: macos + build_targets: *default_macos_targets + test_targets: *default_macos_targets + build_flags: *aspects_flags + windows_with_aspects: + name: With Aspects + platform: windows build_flags: + - "--enable_runfiles" # this is not enabled by default on windows and is necessary for the cargo build scripts - "--config=rustfmt" - "--config=clippy" - docs_linux: - name: Docs + build_targets: *default_windows_targets + test_targets: *default_windows_targets + ubuntu2004_clang: + name: With Clang + platform: ubuntu2004 + build_flags: + - "--config=rustfmt" + - "--config=clippy" + - "--repo_env=CC=clang" + # TODO(hlopko): Make this work (some tests were failing) + # - "--linkopt=-fuse-ld=lld" + build_targets: *default_linux_targets + test_targets: *default_linux_targets + ubuntu1804: + name: "Min Bazel Version" + bazel: "3.5.0" + platform: ubuntu1804 + build_targets: *default_linux_targets + test_targets: *default_linux_targets + ubuntu1804_with_aspects: + name: "Min Bazel Version With Aspects" + bazel: "3.5.0" platform: ubuntu1804 + build_targets: *default_linux_targets + test_targets: *default_linux_targets + build_flags: *aspects_flags + linux_docs: + name: Docs + platform: ubuntu2004 working_directory: docs build_targets: - //... @@ -101,7 +111,7 @@ tasks: - "//:test_docs" clippy_failure: name: Negative Clippy Tests - platform: ubuntu1804 + platform: ubuntu2004 run_targets: - "//test/clippy:clippy_failure_test" rustfmt_failure: @@ -109,17 +119,68 @@ tasks: platform: ubuntu2004 run_targets: - "//test/rustfmt:test_runner" - ubuntu2004_clang: - name: Ubuntu 20.04 with Clang + ubuntu2004_examples: + name: Examples platform: ubuntu2004 + working_directory: examples + build_targets: + - "//..." + test_targets: + - "//..." + build_flags: *aspects_flags + rbe_ubuntu1604_examples: + name: Examples + platform: rbe_ubuntu1604 + working_directory: examples + rbe_examples_targets: &rbe_examples_targets + - "--" # Allows negative patterns; hack for https://github.com/bazelbuild/continuous-integration/pull/245 + - "//..." + # TODO: This requires an updated `rules_foreign_cc` + - "-//sys/..." + # rust_doc_test is likely not fully sandboxed + - "-//fibonacci:fibonacci_doc_test" + - "-//hello_lib:hello_lib_doc_test" + - "-//ffi/rust_calling_c/simple/..." + # See https://github.com/bazelbuild/bazel/issues/9987 + - "-//ffi/rust_calling_c:matrix_dylib_test" + build_targets: *rbe_examples_targets + test_targets: *rbe_examples_targets + build_flags: *aspects_flags + macos_examples: + name: Examples + platform: macos + working_directory: examples + build_targets: + - "//..." + test_targets: + - "--" # Allows negative patterns; hack for https://github.com/bazelbuild/continuous-integration/pull/245 + - "//..." + # This test requires --incompatible_macos_set_install_name and Bazel 4.2.0+ + - "-//ffi/rust_calling_c:matrix_dylib_test" + build_flags: *aspects_flags + windows_examples: + name: Examples + platform: windows + working_directory: examples build_flags: + - "--enable_runfiles" # this is not enabled by default on windows and is necessary for the cargo build scripts - "--config=rustfmt" - "--config=clippy" - - "--repo_env=CC=clang" - # TODO(hlopko): Make this work (some tests were failing) - # - "--linkopt=-fuse-ld=lld" - build_targets: *default_linux_targets - test_targets: *default_linux_targets + windows_targets: &windows_targets + - "--" # Allows negative patterns; hack for https://github.com/bazelbuild/continuous-integration/pull/245 + - "//..." + - "-//ffi/rust_calling_c:matrix_dylib_test" + - "-//ffi/rust_calling_c:matrix_dynamically_linked" + - "-//ffi/rust_calling_c/simple/..." + - "-//sys/..." + - "-//proto/..." + - "-//wasm/..." + # rust_doc_test targets are currently broken on windows + # see: https://github.com/bazelbuild/rules_rust/issues/887 + - "-//hello_lib:hello_lib_doc_test" + - "-//fibonacci:fibonacci_doc_test" + build_targets: *windows_targets + test_targets: *windows_targets crate_universe_examples_ubuntu2004: name: Crate Universe Examples platform: ubuntu2004 @@ -130,9 +191,7 @@ tasks: - "//..." test_targets: - "//..." - build_flags: - - "--config=rustfmt" - - "--config=clippy" + build_flags: *aspects_flags crate_universe_rbe_ubuntu1604: name: Crate Universe Examples platform: rbe_ubuntu1604 @@ -143,9 +202,7 @@ tasks: - "//..." test_targets: - "//..." - build_flags: - - "--config=rustfmt" - - "--config=clippy" + build_flags: *aspects_flags crate_universe_examples_macos: name: Crate Universe Examples platform: macos @@ -156,9 +213,7 @@ tasks: - "//..." test_targets: - "//..." - build_flags: - - "--config=rustfmt" - - "--config=clippy" + build_flags: *aspects_flags crate_universe_examples_windows: name: Crate Universe Examples platform: windows diff --git a/WORKSPACE.bazel b/WORKSPACE.bazel index b5b127655d..b6599a6fae 100644 --- a/WORKSPACE.bazel +++ b/WORKSPACE.bazel @@ -52,41 +52,3 @@ load("@bazel_toolchains//rules:rbe_repo.bzl", "rbe_autoconfig") # Use this as is if you are using the rbe_ubuntu16_04 container, # otherwise refer to RBE docs. rbe_autoconfig(name = "buildkite_config") - -# Load all dependencies for examples - -local_repository( - name = "examples", - path = "examples", -) - -load("@examples//:examples_repositories.bzl", examples_repositories = "repositories") - -examples_repositories() - -load("@examples//:examples_deps.bzl", examples_deps = "deps") - -examples_deps() - -load("@examples//:examples_transitive_deps.bzl", examples_transitive_deps = "transitive_deps") - -examples_transitive_deps(is_top_level = True) - -# Load all dependencies for docs - -local_repository( - name = "docs", - path = "docs", -) - -load("@docs//:docs_repositories.bzl", docs_repositories = "repositories") - -docs_repositories() - -load("@docs//:docs_deps.bzl", docs_deps = "deps") - -docs_deps() - -load("@docs//:docs_transitive_deps.bzl", docs_transitive_deps = "transitive_deps") - -docs_transitive_deps() diff --git a/examples/WORKSPACE.bazel b/examples/WORKSPACE.bazel index 7a647f7493..fec26c906a 100644 --- a/examples/WORKSPACE.bazel +++ b/examples/WORKSPACE.bazel @@ -11,3 +11,22 @@ deps() load(":examples_transitive_deps.bzl", "transitive_deps") transitive_deps() + +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") + +http_archive( + name = "bazel_toolchains", + sha256 = "179ec02f809e86abf56356d8898c8bd74069f1bd7c56044050c2cd3d79d0e024", + strip_prefix = "bazel-toolchains-4.1.0", + urls = [ + "https://mirror.bazel.build/github.com/bazelbuild/bazel-toolchains/releases/download/4.1.0/bazel-toolchains-4.1.0.tar.gz", + "https://github.com/bazelbuild/bazel-toolchains/releases/download/4.1.0/bazel-toolchains-4.1.0.tar.gz", + ], +) + +load("@bazel_toolchains//rules:rbe_repo.bzl", "rbe_autoconfig") + +# Creates a default toolchain config for RBE. +# Use this as is if you are using the rbe_ubuntu16_04 container, +# otherwise refer to RBE docs. +rbe_autoconfig(name = "buildkite_config") diff --git a/examples/per_platform_printer/BUILD.bazel b/examples/per_platform_printer/BUILD.bazel index 01cff4c92d..b0d0d2dd1a 100644 --- a/examples/per_platform_printer/BUILD.bazel +++ b/examples/per_platform_printer/BUILD.bazel @@ -31,9 +31,16 @@ rust_library( ":print_windows.rs", ], }), + # Because each os specific file is conditionally added to the target, + # rustfmt does not have all sources to complete formatting. To avoid + # this failure, rustfmt is not run on this target + tags = ["norustfmt"], ) rust_test( name = "printer_test", crate = ":printer", + # The same rational used for `printer` applies here. Do not run rustfmt + # since not all sources are available. + tags = ["norustfmt"], ) diff --git a/proto/BUILD.bazel b/proto/BUILD.bazel index 4211ee7825..2796a9dc40 100644 --- a/proto/BUILD.bazel +++ b/proto/BUILD.bazel @@ -25,7 +25,7 @@ rust_binary( toolchain( name = "default-proto-toolchain", toolchain = ":default-proto-toolchain-impl", - toolchain_type = "//proto:toolchain", + toolchain_type = "@rules_rust//proto:toolchain", ) rust_proto_toolchain(name = "default-proto-toolchain-impl") diff --git a/test/inline_test_with_deps/test_with_srcs/BUILD.bazel b/test/inline_test_with_deps/test_with_srcs/BUILD.bazel index 3a3c6ab94f..912fa59c5a 100644 --- a/test/inline_test_with_deps/test_with_srcs/BUILD.bazel +++ b/test/inline_test_with_deps/test_with_srcs/BUILD.bazel @@ -10,6 +10,10 @@ rust_library( name = "inline", srcs = ["src/lib.rs"], edition = "2018", + # Not all source files are included in this this target (`extra.rs`) + # and as a result, rustfmt complains about a missing module. Do not + # run rustfmt to avoid this issue. + tags = ["norustfmt"], ) rust_test(