mirror of https://github.com/bazelbuild/rules_cc
Add testing for Bazel@HEAD and Bazel 6
PiperOrigin-RevId: 684046113 Change-Id: I98875f8c67b491759f121c21e33ed04ec1d590e0
This commit is contained in:
parent
7782be6db1
commit
56f4a8bfa1
|
@ -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
|
||||||
|
|
13
WORKSPACE
13
WORKSPACE
|
@ -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",
|
||||||
|
)
|
||||||
|
|
5
cc/BUILD
5
cc/BUILD
|
@ -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")
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
|
@ -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,
|
||||||
|
)
|
|
@ -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
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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`.
|
||||||
""",
|
""",
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue