Add testing for Bazel@HEAD and Bazel 6

PiperOrigin-RevId: 684046113
Change-Id: I98875f8c67b491759f121c21e33ed04ec1d590e0
This commit is contained in:
Googler 2024-10-09 08:25:32 -07:00 committed by Copybara-Service
parent 7782be6db1
commit 56f4a8bfa1
11 changed files with 139 additions and 54 deletions

View File

@ -1,54 +1,111 @@
--- ---
x_defaults: build_targets: &build_targets
# YAML has a feature for "repeated nodes", BazelCI is fine with extra nodes - "//:all"
# it doesn't know about; so that is used to avoid repeating common subparts. - "//cc/..."
common: &common - "//examples/..."
# We have to list every package because even with exclusion notation -//foo - "//tests/..."
# Bazel will load the excluded package and it will be an error because at - "-//examples/custom_toolchain:legacy_selector" # Example only works on Linux
# release Bazel the cc_libraries do not have all the attributes. test_targets: &test_targets
build_targets: - "//:all"
- "//:all" - "//cc/..."
- "//cc:all" - "//examples/..."
- "//cc/private/rules_impl:all" - "//tests/..."
- "//cc/private/toolchain:all" - "-//examples/custom_toolchain:legacy_selector" # Example only works on Linux
- "//cc/runfiles:all"
- "//examples:all" build_targets_bazel_6: &build_targets_bazel_6
- "//examples/my_c_archive:all" - "//:all"
- "//examples/my_c_compile:all" - "//cc:all"
- "//examples/write_cc_toolchain_cpu:all" - "//examples/..."
- "//tests/..." - "//tests/..."
test_flags: - "-//examples/custom_toolchain:legacy_selector" # Example only works on Linux
- "--test_timeout=120" - "-//tests/rule_based_toolchain/..." # proto.encode_text doesn't support None
test_targets: - "-//cc:optional_current_cc_toolchain" # Not supported in Bazel 6
- "//:all" test_targets_bazel_6: &test_targets_bazel_6
- "//cc:all" - "//:all"
- "//cc/private/rules_impl:all" - "//cc:all"
- "//cc/private/toolchain:all" - "//examples/..."
- "//examples:all" - "//tests/..."
- "//examples/my_c_archive:all" - "-//examples/custom_toolchain:legacy_selector" # Example only works on Linux
- "//examples/my_c_compile:all" - "-//tests/rule_based_toolchain/..." # proto.encode_text doesn't support None
- "//examples/write_cc_toolchain_cpu:all" - "-//cc:optional_current_cc_toolchain" # Not supported in Bazel 6
- "//tests/..."
buildifier: buildifier:
version: latest version: latest
warnings: "all" warnings: "all"
tasks: tasks:
ubuntu1804: ubuntu2004:
<<: *common name: Docs
test_targets:
- "//docs/..."
- "-//docs:toolchain_api_diff_test" # Bazel adds loads statements in examples
# Bazel LTS
ubuntu2004:
name: Ubuntu 20.04 (Bazel LTS)
build_targets: *build_targets
test_targets: *test_targets
macos: macos:
<<: *common name: MacOS (Bazel LTS)
build_targets: *build_targets
test_targets: *test_targets
windows: windows:
<<: *common name: Windows (Bazel LTS)
build_targets: *build_targets
test_targets: *test_targets
ubuntu_bzlmod: ubuntu_bzlmod:
name: Bzlmod name: Ubuntu 20.04 (Bazel LTS, bzlmod)
platform: ubuntu1804 platform: ubuntu2004
build_flags: build_flags:
- "--enable_bzlmod" - "--enable_bzlmod"
- "--ignore_dev_dependency" - "--ignore_dev_dependency"
build_targets:
# Bazel@HEAD
ubuntu2004_head:
name: Ubuntu 20.04 (Bazel HEAD)
bazel: last_green
platform: ubuntu2004
build_targets: *build_targets
test_targets:
- "//:all"
- "//cc/..." - "//cc/..."
- "//examples/..."
- "//tests/..."
- "-//examples/custom_toolchain:legacy_selector" # Example only works on Linux
- "-//tests/system_library:system_library_test" # Fails because of repo setup
macos_head:
name: MacOS (Bazel HEAD)
bazel: last_green
platform: macos
build_targets: *build_targets
test_targets: *test_targets
windows_head:
name: Windows (Bazel HEAD)
bazel: last_green
platform: macos
build_targets: *build_targets
test_targets: *test_targets
# Bazel 6
ubuntu2004_bazel_6:
name: Ubuntu 20.04 (Bazel 6)
bazel: 6.3.0
platform: ubuntu2004
build_targets: *build_targets_bazel_6
test_targets: *test_targets_bazel_6
macos_bazel_6:
name: MacOS (Bazel 6)
bazel: 6.3.0
platform: macos
build_targets: *build_targets_bazel_6
test_targets: *test_targets_bazel_6
windows_bazel_6:
name: Windows (Bazel 6)
bazel: 6.3.0
platform: macos
build_targets: *build_targets_bazel_6
test_targets: *test_targets_bazel_6
ubuntu_rule_based_toolchains: ubuntu_rule_based_toolchains:
name: Ubuntu rule-based toolchains name: Ubuntu rule-based toolchains
platform: ubuntu1804 platform: ubuntu1804

View File

@ -4,10 +4,10 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive( http_archive(
name = "bazel_skylib", name = "bazel_skylib",
sha256 = "b8a1527901774180afc798aeb28c4634bdccf19c4d98e7bdd1ce79d1fe9aaad7", sha256 = "bc283cdfcd526a52c3201279cda4bc298652efa898b10b4db0837dc51652756f",
urls = [ urls = [
"https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.4.1/bazel-skylib-1.4.1.tar.gz", "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.7.1/bazel-skylib-1.7.1.tar.gz",
"https://github.com/bazelbuild/bazel-skylib/releases/download/1.4.1/bazel-skylib-1.4.1.tar.gz", "https://github.com/bazelbuild/bazel-skylib/releases/download/1.7.1/bazel-skylib-1.7.1.tar.gz",
], ],
) )
@ -30,3 +30,10 @@ http_archive(
strip_prefix = "rules_testing-0.6.0", strip_prefix = "rules_testing-0.6.0",
url = "https://github.com/bazelbuild/rules_testing/releases/download/v0.6.0/rules_testing-v0.6.0.tar.gz", url = "https://github.com/bazelbuild/rules_testing/releases/download/v0.6.0/rules_testing-v0.6.0.tar.gz",
) )
http_archive(
name = "protobuf",
sha256 = "da288bf1daa6c04d03a9051781caa52aceb9163586bff9aa6cfb12f69b9395aa",
strip_prefix = "protobuf-27.0",
url = "https://github.com/protocolbuffers/protobuf/releases/download/v27.0/protobuf-27.0.tar.gz",
)

View File

@ -102,9 +102,10 @@ bzl_library(
cc_toolchain_alias(name = "current_cc_toolchain") cc_toolchain_alias(name = "current_cc_toolchain")
cc_toolchain_alias( # Use alias, because it doesn't build on Bazel 6.
alias(
name = "optional_current_cc_toolchain", name = "optional_current_cc_toolchain",
mandatory = False, actual = "//cc/private/bazel7:optional_current_cc_toolchain",
) )
cc_libc_top_alias(name = "current_libc_top") cc_libc_top_alias(name = "current_libc_top")

View File

@ -13,6 +13,5 @@
# limitations under the License. # limitations under the License.
"""CcSharedLibraryInfo""" """CcSharedLibraryInfo"""
load("//cc/private/rules_impl:native.bzl", "NativeCcSharedLibraryHintInfo") # Backward compatibility with Bazel 6
CcSharedLibraryHintInfo = getattr(cc_common, "CcSharedLibraryHintInfo", provider("CcSharedLibraryHintInfo", fields = ["attributes", "owners"]))
CcSharedLibraryHintInfo = NativeCcSharedLibraryHintInfo

24
cc/private/bazel7/BUILD Normal file
View File

@ -0,0 +1,24 @@
# Copyright 2024 The Bazel Authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
package(default_visibility = ["//visibility:public"])
licenses(["notice"]) # Apache 2.0
# The target is here, because it's doesn't build on Bazel 6.
# Unfortunately, rules_cc doesn't have a WORKSPACE setup and thus can't use bazel_features check.
cc_toolchain_alias(
name = "optional_current_cc_toolchain",
mandatory = False,
)

View File

@ -35,6 +35,3 @@ native_cc_common = cc_common
# buildifier: disable=native-cc # buildifier: disable=native-cc
NativeCcSharedLibraryInfo = CcSharedLibraryInfo NativeCcSharedLibraryInfo = CcSharedLibraryInfo
# buildifier: disable=native-cc
NativeCcSharedLibraryHintInfo = CcSharedLibraryHintInfo

View File

@ -40,7 +40,7 @@ cc_action_type = rule(
`cc_action_type` rules are used to associate arguments and tools together to `cc_action_type` rules are used to associate arguments and tools together to
perform a specific action. Bazel prescribes a set of known action types that are used to drive perform a specific action. Bazel prescribes a set of known action types that are used to drive
typical C/C++/ObjC actions like compiling, linking, and archiving. The set of well-known action typical C/C++/ObjC actions like compiling, linking, and archiving. The set of well-known action
types can be found in [//third_party/bazel_rules/rules_cc/cc/toolchains/actions:BUILD](https://github.com/bazelbuild/rules_cc/tree/main/cc/toolchains/actions/BUILD). types can be found in [@rules_cc//cc/toolchains/actions:BUILD](https://github.com/bazelbuild/rules_cc/tree/main/cc/toolchains/actions/BUILD).
It's possible to create project-specific action types for use in toolchains. Be careful when It's possible to create project-specific action types for use in toolchains. Be careful when
doing this, because every toolchain that encounters the action will need to be configured to doing this, because every toolchain that encounters the action will need to be configured to

View File

@ -75,7 +75,7 @@ def cc_variable(name, type, **kwargs):
it's not possible to declare custom variables. it's not possible to declare custom variables.
For a full list of available variables, see For a full list of available variables, see
[//third_party/bazel_rules/rules_cc/cc/toolchains/varaibles:BUILD](https://github.com/bazelbuild/rules_cc/tree/main/cc/toolchains/variables/BUILD). [@rules_cc//cc/toolchains/varaibles:BUILD](https://github.com/bazelbuild/rules_cc/tree/main/cc/toolchains/variables/BUILD).
Example: Example:
``` ```
@ -91,7 +91,7 @@ def cc_variable(name, type, **kwargs):
Args: Args:
name: (str) The name of the outer variable, and the rule. name: (str) The name of the outer variable, and the rule.
type: The type of the variable, constructed using `types` factory in type: The type of the variable, constructed using `types` factory in
[//third_party/bazel_rules/rules_cc/cc/toolchains/impl:variables.bzl](https://github.com/bazelbuild/rules_cc/tree/main/cc/toolchains/impl/variables.bzl). [@rules_cc//cc/toolchains/impl:variables.bzl](https://github.com/bazelbuild/rules_cc/tree/main/cc/toolchains/impl/variables.bzl).
**kwargs: [common attributes](https://bazel.build/reference/be/common-definitions#common-attributes) that should be applied to this rule. **kwargs: [common attributes](https://bazel.build/reference/be/common-definitions#common-attributes) that should be applied to this rule.
""" """
_cc_variable(name = name, type = json.encode(type), **kwargs) _cc_variable(name = name, type = json.encode(type), **kwargs)

View File

@ -102,7 +102,7 @@ This can help work around errors like:
providers = [ToolCapabilityInfo], providers = [ToolCapabilityInfo],
doc = """Declares that a tool is capable of doing something. doc = """Declares that a tool is capable of doing something.
For example, `//third_party/bazel_rules/rules_cc/cc/toolchains/capabilities:supports_pic`. For example, `@rules_cc//cc/toolchains/capabilities:supports_pic`.
""", """,
), ),
}, },

View File

@ -75,7 +75,7 @@ def cc_tool_map(name, tools, **kwargs):
`CXX=/path/to/clang++` environment variables that most build systems use to determine which `CXX=/path/to/clang++` environment variables that most build systems use to determine which
tools to use for a given action. To simplify usage, some actions have been grouped together (for tools to use for a given action. To simplify usage, some actions have been grouped together (for
example, example,
[//third_party/bazel_rules/rules_cc/cc/toolchains/actions:cpp_compile_actions](https://github.com/bazelbuild/rules_cc/tree/main/cc/toolchains/actions/BUILD)) to [@rules_cc//cc/toolchains/actions:cpp_compile_actions](https://github.com/bazelbuild/rules_cc/tree/main/cc/toolchains/actions/BUILD)) to
logically express "all the C++ compile actions". logically express "all the C++ compile actions".
In Bazel, there is a little more granularity to the mapping, so the mapping doesn't follow the In Bazel, there is a little more granularity to the mapping, so the mapping doesn't follow the

View File

@ -81,7 +81,7 @@ filegroup(
cc_toolchain_suite( cc_toolchain_suite(
name = "legacy_selector", name = "legacy_selector",
toolchains = { toolchains = {
"x86": ":my_custom_toolchain", "k8": ":my_custom_toolchain",
}, },
) )