Add --incompatible_use_platforms_repo_for_constraints
This change adds an incompatible flag to disable constrains bundled with Bazel
in @bazel_tools.
Incompatible change issue:
https://github.com/bazelbuild/bazel/issues/8622
Tracking issue:
https://github.com/bazelbuild/bazel/issues/6516
RELNOTES: Incompatible change `--incompatible_use_platforms_repo_for_constraints` has been added. See https://github.com/bazelbuild/bazel/issues/8622 for details.
Closes #8625.
PiperOrigin-RevId: 253242115
diff --git a/scripts/bootstrap/compile.sh b/scripts/bootstrap/compile.sh
index 90782f9..8a52f14 100755
--- a/scripts/bootstrap/compile.sh
+++ b/scripts/bootstrap/compile.sh
@@ -273,6 +273,9 @@
# Set up @bazel_tools//platforms properly
mkdir -p ${BAZEL_TOOLS_REPO}/platforms
cp tools/platforms/BUILD.tools ${BAZEL_TOOLS_REPO}/platforms/BUILD
+ link_file \
+ "${PWD}/tools/platforms/fail_with_incompatible_use_platforms_repo_for_constraints.bzl" \
+ "${BAZEL_TOOLS_REPO}/platforms/fail_with_incompatible_use_platforms_repo_for_constraints.bzl"
# Overwrite tools.WORKSPACE, this is only for the bootstrap binary
chmod u+w "${OUTPUT_DIR}/classes/com/google/devtools/build/lib/bazel/rules/tools.WORKSPACE"
diff --git a/site/docs/platforms.md b/site/docs/platforms.md
index 4c3079e..777a6eb 100644
--- a/site/docs/platforms.md
+++ b/site/docs/platforms.md
@@ -88,35 +88,36 @@
platform(
name = "linux_x86",
constraint_values = [
- "@bazel_tools//platforms:linux",
- "@bazel_tools//platforms:x86_64",
+ "@platforms//os:linux",
+ "@platforms//cpu:x86_64",
":glibc_2_25",
],
)
```
Note that it is an error for a platform to specify more than one value of the
-same constraint setting, such as `@bazel_tools//platforms:x86_64` and
-`@bazel_tools//platforms:arm` for `@bazel_tools//platforms:cpu`.
+same constraint setting, such as `@platforms//cpu:x86_64` and
+`@platforms//cpu:arm` for `@platforms//cpu:cpu`.
## Built-in constraints and platforms
Bazel ships with constraint definitions for the most popular CPU architectures
-and operating systems. These are all located in the package
-`@bazel_tools//platforms`:
+and operating systems. These are all located in the repository
+`@platforms`. This repository is developed at
+[github.com/bazelbuild/platforms](https://github.com/bazelbuild/platforms):
-* `:cpu` for the CPU architecture, with values `:x86_32`, `:x86_64`, `:ppc`,
- `:arm`, `:s390x`
-* `:os` for the operating system, with values `:android`, `:freebsd`, `:ios`,
- `:linux`, `:osx`, `:windows`
+* `//cpu:cpu` for the CPU architecture, with values `//cpu:x86_32`,
+ `//cpu:x86_64`, `//cpu:ppc`, `//cpu:arm`, `//cpu:s390x`
+* `//os:os` for the operating system, with values `//os:android`,
+ `//os:freebsd`, `//os:ios`, `//os:linux`, `//os:osx`, `//os:windows`
There are also the following special platform definitions:
-* `:host_platform` - represents the CPU and operating system for the host
- environment
+* `@bazel_tools//platforms:host_platform` - represents the CPU and operating
+ system for the host environment
-* `:target_platform` - represents the CPU and operating system for the target
- environment
+* `@bazel_tools//platforms:target_platform` - represents the CPU and operating
+ system for the target environment
The CPU values used by these two platforms can be specified with the
`--host_cpu` and `--cpu` flags.
diff --git a/site/docs/toolchains.md b/site/docs/toolchains.md
index 998f623..747af15 100644
--- a/site/docs/toolchains.md
+++ b/site/docs/toolchains.md
@@ -104,14 +104,14 @@
config_setting(
name = "on_linux",
constraint_values = [
- "@bazel_tools//platforms:linux",
+ "@platforms//os:linux",
],
)
config_setting(
name = "on_windows",
constraint_values = [
- "@bazel_tools//platforms:windows",
+ "@platforms//os:windows",
],
)
@@ -276,12 +276,12 @@
toolchain(
name = "barc_linux_toolchain",
exec_compatible_with = [
- "@bazel_tools//platforms:linux",
- "@bazel_tools//platforms:x86_64",
+ "@platforms//os:linux",
+ "@platforms//cpu:x86_64",
],
target_compatible_with = [
- "@bazel_tools//platforms:linux",
- "@bazel_tools//platforms:x86_64",
+ "@platforms//os:linux",
+ "@platforms//cpu:x86_64",
],
toolchain = ":barc_linux",
toolchain_type = ":toolchain_type",
@@ -290,12 +290,12 @@
toolchain(
name = "barc_windows_toolchain",
exec_compatible_with = [
- "@bazel_tools//platforms:windows",
- "@bazel_tools//platforms:x86_64",
+ "@platforms//os:windows",
+ "@platforms//cpu:x86_64",
],
target_compatible_with = [
- "@bazel_tools//platforms:windows",
- "@bazel_tools//platforms:x86_64",
+ "@platforms//os:windows",
+ "@platforms//cpu:x86_64",
],
toolchain = ":barc_windows",
toolchain_type = ":toolchain_type",
@@ -336,7 +336,7 @@
platform(
name = "my_target_platform",
constraint_values = [
- "@bazel_tools//platforms:linux",
+ "@platforms//os:linux",
],
)
@@ -351,7 +351,7 @@
```
Bazel will see that `//my_pkg:my_bar_binary` is being built with a platform that
-has `@bazel_tools//platforms:linux` and therefore resolve the
+has `@platforms//os:linux` and therefore resolve the
`//bar_tools:toolchain_type` reference to `//bar_tools:barc_linux_toolchain`.
This will end up building `//bar_tools:barc_linux` but not
`//barc_tools:barc_windows`.
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/CoreOptions.java b/src/main/java/com/google/devtools/build/lib/analysis/config/CoreOptions.java
index c03f9ed..61b9d94 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/CoreOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/CoreOptions.java
@@ -69,6 +69,18 @@
public boolean mergeGenfilesDirectory;
@Option(
+ name = "incompatible_use_platforms_repo_for_constraints",
+ defaultValue = "false",
+ documentationCategory = OptionDocumentationCategory.OUTPUT_PARAMETERS,
+ effectTags = {OptionEffectTag.AFFECTS_OUTPUTS},
+ metadataTags = {
+ OptionMetadataTag.INCOMPATIBLE_CHANGE,
+ OptionMetadataTag.TRIGGERED_BY_ALL_INCOMPATIBLE_CHANGES
+ },
+ help = "If true, constraint settings from @bazel_tools are removed.")
+ public boolean usePlatformsRepoForConstraints;
+
+ @Option(
name = "define",
converter = Converters.AssignmentConverter.class,
defaultValue = "",
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/repository/LocalConfigPlatformFunction.java b/src/main/java/com/google/devtools/build/lib/bazel/repository/LocalConfigPlatformFunction.java
index 1209c5d..3537991 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/repository/LocalConfigPlatformFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/repository/LocalConfigPlatformFunction.java
@@ -81,17 +81,17 @@
static String cpuToConstraint(CPU cpu) {
switch (cpu) {
case X86_32:
- return "@bazel_tools//platforms:x86_32";
+ return "@platforms//cpu:x86_32";
case X86_64:
- return "@bazel_tools//platforms:x86_64";
+ return "@platforms//cpu:x86_64";
case PPC:
- return "@bazel_tools//platforms:ppc";
+ return "@platforms//cpu:ppc";
case ARM:
- return "@bazel_tools//platforms:arm";
+ return "@platforms//cpu:arm";
case AARCH64:
- return "@bazel_tools//platforms:aarch64";
+ return "@platforms//cpu:aarch64";
case S390X:
- return "@bazel_tools//platforms:s390x";
+ return "@platforms//cpu:s390x";
default:
// Unknown, so skip it.
return null;
@@ -102,13 +102,13 @@
static String osToConstraint(OS os) {
switch (os) {
case DARWIN:
- return "@bazel_tools//platforms:osx";
+ return "@platforms//os:osx";
case FREEBSD:
- return "@bazel_tools//platforms:freebsd";
+ return "@platforms//os:freebsd";
case LINUX:
- return "@bazel_tools//platforms:linux";
+ return "@platforms//os:linux";
case WINDOWS:
- return "@bazel_tools//platforms:windows";
+ return "@platforms//os:windows";
default:
// Unknown, so skip it.
return null;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigRuleClasses.java
index 7522324..25aedb6e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigRuleClasses.java
@@ -327,7 +327,7 @@
config_setting(
name = "64bit_glibc_2_25",
constraint_values = [
- "@bazel_tools//platforms:x86_64",
+ "@platforms//cpu:x86_64",
"//example:glibc_2_25",
]
)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/platform/ConstraintSettingRule.java b/src/main/java/com/google/devtools/build/lib/rules/platform/ConstraintSettingRule.java
index 511619a..e9416be 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/platform/ConstraintSettingRule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/platform/ConstraintSettingRule.java
@@ -67,7 +67,7 @@
<p>Each <code>constraint_setting</code> has an extensible set of associated
<code>constraint_value</code>s. Usually these are defined in the same package, but sometimes a
different package will introduce new values for an existing setting. For instance, the predefined
-setting <code>@bazel_tools//platforms:cpu</code> can be extended with a custom value in order to
+setting <code>@platforms//cpu:cpu</code> can be extended with a custom value in order to
define a platform targeting an obscure cpu architecture.
<!-- #END_BLAZE_RULE -->*/
diff --git a/src/main/java/com/google/devtools/build/lib/rules/platform/ConstraintValueRule.java b/src/main/java/com/google/devtools/build/lib/rules/platform/ConstraintValueRule.java
index 43ccf34..2ca844a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/platform/ConstraintValueRule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/platform/ConstraintValueRule.java
@@ -67,7 +67,7 @@
<pre class="code">
constraint_value(
name = "mips",
- constraint_setting = "@bazel_tools//platforms:cpu",
+ constraint_setting = "@platforms//cpu:cpu",
)
</pre>
diff --git a/src/main/java/com/google/devtools/build/lib/rules/platform/PlatformRule.java b/src/main/java/com/google/devtools/build/lib/rules/platform/PlatformRule.java
index c54d05a..bafdb7b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/platform/PlatformRule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/platform/PlatformRule.java
@@ -49,7 +49,7 @@
<p>Each <code>constraint_value</code> in this list must be for a different
<code>constraint_setting</code>. For example, you cannot define a platform that requires the
- cpu architecture to be both <code>@bazel_tools//platforms:x86_64</code> and
+ cpu architecture to be both <code>@platforms//cpu:x86_64</code> and
<code>@bazel_tools//platforms:arm</code>.
<!-- #END_BLAZE_RULE.ATTRIBUTE --> */
.add(
@@ -130,8 +130,8 @@
platform(
name = "linux_arm",
constraint_values = [
- "@bazel_tools//platforms:linux",
- "@bazel_tools//platforms:arm",
+ "@platforms//os:linux",
+ "@platforms//cpu:arm",
],
)
</pre>
@@ -177,8 +177,8 @@
platform(
name = "parent",
constraint_values = [
- "@bazel_tools//platforms:linux",
- "@bazel_tools//platforms:arm",
+ "@platforms//os:linux",
+ "@platforms//cpu:arm",
],
remote_execution_properties = """
parent properties
@@ -188,7 +188,7 @@
name = "child_a",
parents = [":parent"],
constraint_values = [
- "@bazel_tools//platforms:x86_64",
+ "@platforms//cpu:x86_64",
],
remote_execution_properties = """
child a properties
@@ -210,8 +210,8 @@
<ul>
<li>
- "child_a" has the constraint values "@bazel_tools//platforms:linux" (inherited from the
- parent) and "@bazel_tools//platforms:x86_64" (set directly on the platform). It has the
+ "child_a" has the constraint values "@platforms//os:linux" (inherited from the
+ parent) and "@platforms//cpu:x86_64" (set directly on the platform). It has the
"remote_execution_properties" set to "child a properties"
</li>
<li>
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java b/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
index edf34a1..6240424 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
@@ -67,12 +67,14 @@
@Override
public List<String> getWorkspaceContents(MockToolsConfig config) {
String bazelToolWorkspace = config.getPath("/bazel_tools_workspace").getPathString();
+ String bazelPlatformsWorkspace = config.getPath("/platforms").getPathString();
String localConfigPlatformWorkspace =
config.getPath("/local_config_platform_workspace").getPathString();
return new ArrayList<>(
ImmutableList.of(
"local_repository(name = 'bazel_tools', path = '" + bazelToolWorkspace + "')",
+ "local_repository(name = 'platforms', path = '" + bazelPlatformsWorkspace + "')",
"local_repository(name = 'local_config_xcode', path = '/local_config_xcode')",
"local_repository(name = 'com_google_protobuf', path = '/protobuf')",
"bind(name = 'android/sdk', actual='@bazel_tools//tools/android:sdk')",
@@ -99,6 +101,25 @@
config.create("/local_config_xcode/WORKSPACE");
config.create("/protobuf/WORKSPACE");
config.overwrite("WORKSPACE", workspaceContents.toArray(new String[workspaceContents.size()]));
+ config.create("/platforms/WORKSPACE", "workspace(name = 'platforms')");
+ config.create("/platforms/BUILD");
+ config.create(
+ "/platforms/cpu/BUILD",
+ "constraint_setting(name = 'cpu')",
+ "constraint_value(name = 'x86_32', constraint_setting = ':cpu')",
+ "constraint_value(name = 'x86_64', constraint_setting = ':cpu')",
+ "constraint_value(name = 'ppc', constraint_setting = ':cpu')",
+ "constraint_value(name = 'arm', constraint_setting = ':cpu')",
+ "constraint_value(name = 'aarch64', constraint_setting = ':cpu')",
+ "constraint_value(name = 's390x', constraint_setting = ':cpu')");
+
+ config.create(
+ "/platforms/os/BUILD",
+ "constraint_setting(name = 'os')",
+ "constraint_value(name = 'linux', constraint_setting = ':os')",
+ "constraint_value(name = 'osx', constraint_setting = ':os')",
+ "constraint_value(name = 'freebsd', constraint_setting = ':os')",
+ "constraint_value(name = 'windows', constraint_setting = ':os')");
config.create("/bazel_tools_workspace/WORKSPACE", "workspace(name = 'bazel_tools')");
Runfiles runfiles = Runfiles.create();
for (String filename :
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/repository/LocalConfigPlatformFunctionTest.java b/src/test/java/com/google/devtools/build/lib/bazel/repository/LocalConfigPlatformFunctionTest.java
index 663d62d..bc509e0 100644
--- a/src/test/java/com/google/devtools/build/lib/bazel/repository/LocalConfigPlatformFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/bazel/repository/LocalConfigPlatformFunctionTest.java
@@ -45,12 +45,12 @@
public static Collection createInputValues() {
return ImmutableList.of(
// CPU value tests.
- new Object[] {CPU.X86_64, "@bazel_tools//platforms:x86_64"},
- new Object[] {CPU.X86_32, "@bazel_tools//platforms:x86_32"},
- new Object[] {CPU.PPC, "@bazel_tools//platforms:ppc"},
- new Object[] {CPU.ARM, "@bazel_tools//platforms:arm"},
- new Object[] {CPU.AARCH64, "@bazel_tools//platforms:aarch64"},
- new Object[] {CPU.S390X, "@bazel_tools//platforms:s390x"});
+ new Object[] {CPU.X86_64, "@platforms//cpu:x86_64"},
+ new Object[] {CPU.X86_32, "@platforms//cpu:x86_32"},
+ new Object[] {CPU.PPC, "@platforms//cpu:ppc"},
+ new Object[] {CPU.ARM, "@platforms//cpu:arm"},
+ new Object[] {CPU.AARCH64, "@platforms//cpu:aarch64"},
+ new Object[] {CPU.S390X, "@platforms//cpu:s390x"});
}
private final CPU testCpu;
@@ -81,10 +81,10 @@
public static Collection createInputValues() {
return ImmutableList.of(
// OS value tests.
- new Object[] {OS.LINUX, "@bazel_tools//platforms:linux"},
- new Object[] {OS.DARWIN, "@bazel_tools//platforms:osx"},
- new Object[] {OS.FREEBSD, "@bazel_tools//platforms:freebsd"},
- new Object[] {OS.WINDOWS, "@bazel_tools//platforms:windows"});
+ new Object[] {OS.LINUX, "@platforms//os:linux"},
+ new Object[] {OS.DARWIN, "@platforms//os:osx"},
+ new Object[] {OS.FREEBSD, "@platforms//os:freebsd"},
+ new Object[] {OS.WINDOWS, "@platforms//os:windows"});
}
private final OS testOs;
@@ -112,9 +112,9 @@
@RunWith(JUnit4.class)
public static class FunctionTest extends BuildViewTestCase {
private static final ConstraintSettingInfo CPU_CONSTRAINT =
- ConstraintSettingInfo.create(Label.parseAbsoluteUnchecked("@bazel_tools//platforms:cpu"));
+ ConstraintSettingInfo.create(Label.parseAbsoluteUnchecked("@platforms//cpu:cpu"));
private static final ConstraintSettingInfo OS_CONSTRAINT =
- ConstraintSettingInfo.create(Label.parseAbsoluteUnchecked("@bazel_tools//platforms:os"));
+ ConstraintSettingInfo.create(Label.parseAbsoluteUnchecked("@platforms//os:os"));
@Test
public void generateConfigRepository() throws Exception {
diff --git a/src/test/shell/bazel/platforms_test.sh b/src/test/shell/bazel/platforms_test.sh
index 6db625a..d33a6c6 100755
--- a/src/test/shell/bazel/platforms_test.sh
+++ b/src/test/shell/bazel/platforms_test.sh
@@ -71,5 +71,12 @@
fail "Bazel failed to build @platforms"
}
+function test_incompatible_use_platforms_repo_for_constraints() {
+ # We test that a built-in @platforms repository is buildable.
+ bazel build --incompatible_use_platforms_repo_for_constraints @bazel_tools//platforms:all &> \
+ $TEST_log && fail "Build passed when we expected an error."
+ expect_log "Constraints from @bazel_tools//platforms have been removed."
+}
+
run_suite "platform mapping test"
diff --git a/src/test/shell/integration/discard_graph_edges_test.sh b/src/test/shell/integration/discard_graph_edges_test.sh
index 926dc79..3bf1f9b 100755
--- a/src/test/shell/integration/discard_graph_edges_test.sh
+++ b/src/test/shell/integration/discard_graph_edges_test.sh
@@ -271,7 +271,7 @@
package_count="$(extract_histogram_count "$histo_file" \
'devtools\.build\.lib\..*\.Package$')"
# A few packages aren't cleared.
- [[ "$package_count" -le 17 ]] \
+ [[ "$package_count" -le 18 ]] \
|| fail "package count $package_count too high"
glob_count="$(extract_histogram_count "$histo_file" "GlobValue$")"
[[ "$glob_count" -le 1 ]] \
diff --git a/src/test/shell/testenv.sh b/src/test/shell/testenv.sh
index 73316d4..25ecb73 100755
--- a/src/test/shell/testenv.sh
+++ b/src/test/shell/testenv.sh
@@ -408,7 +408,7 @@
name = "py_toolchain",
toolchain = ":py_runtime_pair",
toolchain_type = "@bazel_tools//tools/python:toolchain_type",
- target_compatible_with = ["@bazel_tools//platforms:windows"],
+ target_compatible_with = ["@platforms//os:windows"],
)
EOF
}
diff --git a/tools/cpp/BUILD b/tools/cpp/BUILD
index ad1b12a..e9da96d 100644
--- a/tools/cpp/BUILD
+++ b/tools/cpp/BUILD
@@ -169,10 +169,10 @@
toolchain(
name = "cc-toolchain-ppc",
exec_compatible_with = [
- "@bazel_tools//platforms:ppc",
+ "@platforms//cpu:ppc",
],
target_compatible_with = [
- "@bazel_tools//platforms:ppc",
+ "@platforms//cpu:ppc",
],
toolchain = ":cc-compiler-ppc",
toolchain_type = ":toolchain_type",
@@ -196,10 +196,10 @@
toolchain(
name = "cc-toolchain-s390x",
exec_compatible_with = [
- "@bazel_tools//platforms:s390x",
+ "@platforms//cpu:s390x",
],
target_compatible_with = [
- "@bazel_tools//platforms:s390x",
+ "@platforms//cpu:s390x",
],
toolchain = ":cc-compiler-s390x",
toolchain_type = ":toolchain_type",
@@ -225,8 +225,8 @@
exec_compatible_with = [
],
target_compatible_with = [
- "@bazel_tools//platforms:arm",
- "@bazel_tools//platforms:android",
+ "@platforms//cpu:arm",
+ "@platforms//os:android",
],
toolchain = ":cc-compiler-armeabi-v7a",
toolchain_type = ":toolchain_type",
@@ -250,12 +250,12 @@
toolchain(
name = "cc-toolchain-k8",
exec_compatible_with = [
- "@bazel_tools//platforms:x86_64",
- "@bazel_tools//platforms:linux",
+ "@platforms//cpu:x86_64",
+ "@platforms//os:linux",
],
target_compatible_with = [
- "@bazel_tools//platforms:x86_64",
- "@bazel_tools//platforms:linux",
+ "@platforms//cpu:x86_64",
+ "@platforms//os:linux",
],
toolchain = ":cc-compiler-k8",
toolchain_type = ":toolchain_type",
@@ -289,12 +289,12 @@
toolchain(
name = "cc-toolchain-darwin",
exec_compatible_with = [
- "@bazel_tools//platforms:x86_64",
- "@bazel_tools//platforms:osx",
+ "@platforms//cpu:x86_64",
+ "@platforms//os:osx",
],
target_compatible_with = [
- "@bazel_tools//platforms:x86_64",
- "@bazel_tools//platforms:osx",
+ "@platforms//cpu:x86_64",
+ "@platforms//os:osx",
],
toolchain = ":cc-compiler-darwin",
toolchain_type = ":toolchain_type",
@@ -328,12 +328,12 @@
toolchain(
name = "cc-toolchain-freebsd",
exec_compatible_with = [
- "@bazel_tools//platforms:x86_64",
- "@bazel_tools//platforms:freebsd",
+ "@platforms//cpu:x86_64",
+ "@platforms//os:freebsd",
],
target_compatible_with = [
- "@bazel_tools//platforms:x86_64",
- "@bazel_tools//platforms:freebsd",
+ "@platforms//cpu:x86_64",
+ "@platforms//os:freebsd",
],
toolchain = ":cc-compiler-freebsd",
toolchain_type = ":toolchain_type",
@@ -367,12 +367,12 @@
toolchain(
name = "cc-toolchain-x64_windows",
exec_compatible_with = [
- "@bazel_tools//platforms:x86_64",
- "@bazel_tools//platforms:windows",
+ "@platforms//cpu:x86_64",
+ "@platforms//os:windows",
],
target_compatible_with = [
- "@bazel_tools//platforms:x86_64",
- "@bazel_tools//platforms:windows",
+ "@platforms//cpu:x86_64",
+ "@platforms//os:windows",
],
toolchain = ":cc-compiler-x64_windows",
toolchain_type = ":toolchain_type",
@@ -406,13 +406,13 @@
toolchain(
name = "cc-toolchain-x64_windows_msvc",
exec_compatible_with = [
- "@bazel_tools//platforms:x86_64",
- "@bazel_tools//platforms:windows",
+ "@platforms//cpu:x86_64",
+ "@platforms//os:windows",
":msvc",
],
target_compatible_with = [
- "@bazel_tools//platforms:x86_64",
- "@bazel_tools//platforms:windows",
+ "@platforms//cpu:x86_64",
+ "@platforms//os:windows",
],
toolchain = ":cc-compiler-x64_windows_msvc",
toolchain_type = ":toolchain_type",
diff --git a/tools/cpp/BUILD.static.freebsd b/tools/cpp/BUILD.static.freebsd
index 5dd2a8e..b21dc3d 100644
--- a/tools/cpp/BUILD.static.freebsd
+++ b/tools/cpp/BUILD.static.freebsd
@@ -62,12 +62,12 @@
toolchain(
name = "cc-toolchain-freebsd",
exec_compatible_with = [
- "@bazel_tools//platforms:x86_64",
- "@bazel_tools//platforms:freebsd",
+ "@platforms//cpu:x86_64",
+ "@platforms//os:freebsd",
],
target_compatible_with = [
- "@bazel_tools//platforms:x86_64",
- "@bazel_tools//platforms:freebsd",
+ "@platforms//cpu:x86_64",
+ "@platforms//os:freebsd",
],
toolchain = ":cc-compiler-freebsd",
toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
@@ -97,11 +97,11 @@
toolchain(
name = "cc-toolchain-armeabi-v7a",
exec_compatible_with = [
- "@bazel_tools//platforms:arm",
+ "@platforms//cpu:arm",
],
target_compatible_with = [
- "@bazel_tools//platforms:arm",
- "@bazel_tools//platforms:android",
+ "@platforms//cpu:arm",
+ "@platforms//os:android",
],
toolchain = ":cc-compiler-armeabi-v7a",
toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
diff --git a/tools/cpp/BUILD.toolchains.tpl b/tools/cpp/BUILD.toolchains.tpl
index 024d8bf..7aa08d0 100644
--- a/tools/cpp/BUILD.toolchains.tpl
+++ b/tools/cpp/BUILD.toolchains.tpl
@@ -11,8 +11,8 @@
name = "cc-toolchain-armeabi-v7a",
exec_compatible_with = HOST_CONSTRAINTS,
target_compatible_with = [
- "@bazel_tools//platforms:arm",
- "@bazel_tools//platforms:android",
+ "@platforms//cpu:arm",
+ "@platforms//os:android",
],
toolchain = "@local_config_cc//:cc-compiler-armabi-v7a",
toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
diff --git a/tools/cpp/BUILD.windows.tpl b/tools/cpp/BUILD.windows.tpl
index bd45b58..18df650 100644
--- a/tools/cpp/BUILD.windows.tpl
+++ b/tools/cpp/BUILD.windows.tpl
@@ -75,13 +75,13 @@
toolchain(
name = "cc-toolchain-x64_windows_msys",
exec_compatible_with = [
- "@bazel_tools//platforms:x86_64",
- "@bazel_tools//platforms:windows",
+ "@platforms//cpu:x86_64",
+ "@platforms//os:windows",
"@bazel_tools//tools/cpp:msys",
],
target_compatible_with = [
- "@bazel_tools//platforms:x86_64",
- "@bazel_tools//platforms:windows",
+ "@platforms//cpu:x86_64",
+ "@platforms//os:windows",
],
toolchain = ":cc-compiler-x64_windows_msys",
toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
@@ -121,13 +121,13 @@
toolchain(
name = "cc-toolchain-x64_windows_mingw",
exec_compatible_with = [
- "@bazel_tools//platforms:x86_64",
- "@bazel_tools//platforms:windows",
+ "@platforms//cpu:x86_64",
+ "@platforms//os:windows",
"@bazel_tools//tools/cpp:mingw",
],
target_compatible_with = [
- "@bazel_tools//platforms:x86_64",
- "@bazel_tools//platforms:windows",
+ "@platforms//cpu:x86_64",
+ "@platforms//os:windows",
],
toolchain = ":cc-compiler-x64_windows_mingw",
toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
@@ -186,12 +186,12 @@
toolchain(
name = "cc-toolchain-x64_windows",
exec_compatible_with = [
- "@bazel_tools//platforms:x86_64",
- "@bazel_tools//platforms:windows",
+ "@platforms//cpu:x86_64",
+ "@platforms//os:windows",
],
target_compatible_with = [
- "@bazel_tools//platforms:x86_64",
- "@bazel_tools//platforms:windows",
+ "@platforms//cpu:x86_64",
+ "@platforms//os:windows",
],
toolchain = ":cc-compiler-x64_windows",
toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
@@ -219,8 +219,8 @@
exec_compatible_with = [
],
target_compatible_with = [
- "@bazel_tools//platforms:arm",
- "@bazel_tools//platforms:android",
+ "@platforms//cpu:arm",
+ "@platforms//os:android",
],
toolchain = ":cc-compiler-armeabi-v7a",
toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
diff --git a/tools/osx/crosstool/BUILD.toolchains b/tools/osx/crosstool/BUILD.toolchains
index 178ab86..8fa7e4a 100644
--- a/tools/osx/crosstool/BUILD.toolchains
+++ b/tools/osx/crosstool/BUILD.toolchains
@@ -7,8 +7,8 @@
name = "cc-toolchain-" + arch,
exec_compatible_with = [
# These only execute on macOS.
- "@bazel_tools//platforms:osx",
- "@bazel_tools//platforms:x86_64",
+ "@platforms//os:osx",
+ "@platforms//cpu:x86_64",
],
target_compatible_with = OSX_TOOLS_CONSTRAINTS[arch],
toolchain = "@local_config_cc//:cc-compiler-" + arch,
diff --git a/tools/osx/crosstool/osx_archs.bzl b/tools/osx/crosstool/osx_archs.bzl
index 8c37eb0..a8788a4 100644
--- a/tools/osx/crosstool/osx_archs.bzl
+++ b/tools/osx/crosstool/osx_archs.bzl
@@ -37,17 +37,17 @@
# TODO(apple-rules): Rename osx constraint to macOS.
# TODO(apple-rules): Add constraints for watchos and tvos.
OSX_TOOLS_CONSTRAINTS = {
- "darwin_x86_64": ["@bazel_tools//platforms:osx", "@bazel_tools//platforms:x86_64"],
- "ios_i386": ["@bazel_tools//platforms:ios", "@bazel_tools//platforms:x86_32"],
- "ios_x86_64": ["@bazel_tools//platforms:ios", "@bazel_tools//platforms:x86_64"],
- "watchos_i386": ["@bazel_tools//platforms:ios", "@bazel_tools//platforms:x86_32"],
- "watchos_x86_64": ["@bazel_tools//platforms:ios", "@bazel_tools//platforms:x86_64"],
- "tvos_x86_64": ["@bazel_tools//platforms:ios", "@bazel_tools//platforms:x86_64"],
- "armeabi-v7a": ["@bazel_tools//platforms:arm"],
- "ios_armv7": ["@bazel_tools//platforms:ios", "@bazel_tools//platforms:arm"],
- "ios_arm64": ["@bazel_tools//platforms:ios", "@bazel_tools//platforms:aarch64"],
- "ios_arm64e": ["@bazel_tools//platforms:ios", "@bazel_tools//platforms:aarch64"],
- "watchos_armv7k": ["@bazel_tools//platforms:ios", "@bazel_tools//platforms:arm"],
- "watchos_arm64_32": ["@bazel_tools//platforms:ios", "@bazel_tools//platforms:aarch64"],
- "tvos_arm64": ["@bazel_tools//platforms:ios", "@bazel_tools//platforms:aarch64"],
+ "darwin_x86_64": ["@platforms//os:osx", "@platforms//cpu:x86_64"],
+ "ios_i386": ["@platforms//os:ios", "@platforms//cpu:x86_32"],
+ "ios_x86_64": ["@platforms//os:ios", "@platforms//cpu:x86_64"],
+ "watchos_i386": ["@platforms//os:ios", "@platforms//cpu:x86_32"],
+ "watchos_x86_64": ["@platforms//os:ios", "@platforms//cpu:x86_64"],
+ "tvos_x86_64": ["@platforms//os:ios", "@platforms//cpu:x86_64"],
+ "armeabi-v7a": ["@platforms//cpu:arm"],
+ "ios_armv7": ["@platforms//os:ios", "@platforms//cpu:arm"],
+ "ios_arm64": ["@platforms//os:ios", "@platforms//cpu:aarch64"],
+ "ios_arm64e": ["@platforms//os:ios", "@platforms//cpu:aarch64"],
+ "watchos_armv7k": ["@platforms//os:ios", "@platforms//cpu:arm"],
+ "watchos_arm64_32": ["@platforms//os:ios", "@platforms//cpu:aarch64"],
+ "tvos_arm64": ["@platforms//os:ios", "@platforms//cpu:aarch64"],
}
diff --git a/tools/platforms/BUILD b/tools/platforms/BUILD
index f0dc074..ec47710 100644
--- a/tools/platforms/BUILD
+++ b/tools/platforms/BUILD
@@ -1,9 +1,13 @@
-# Standard constraint_setting and constraint_values to be used in platforms.
+load(":fail_with_incompatible_use_platforms_repo_for_constraints.bzl", "fail_with_incompatible_use_platforms_repo_for_constraints")
package(
default_visibility = ["//visibility:public"],
)
+fail_with_incompatible_use_platforms_repo_for_constraints(
+ name = "fail_with_incompatible_use_platforms_repo_for_constraints",
+)
+
filegroup(
name = "package-srcs",
srcs = [
@@ -16,70 +20,121 @@
srcs = glob(["**"]),
)
-# These match values in //src/main/java/com/google/devtools/build/lib/util:CPU.java
-constraint_setting(name = "cpu")
+config_setting(
+ name = "using_platforms_not_bazel_tools",
+ values = {"incompatible_use_platforms_repo_for_constraints": "true"},
+)
-constraint_value(
+alias(
+ name = "cpu",
+ actual = select({
+ ":using_platforms_not_bazel_tools": ":fail_with_incompatible_use_platforms_repo_for_constraints",
+ "//conditions:default": "@platforms//cpu:cpu",
+ }),
+)
+
+alias(
name = "x86_32",
- constraint_setting = ":cpu",
+ actual = select({
+ ":using_platforms_not_bazel_tools": ":fail_with_incompatible_use_platforms_repo_for_constraints",
+ "//conditions:default": "@platforms//cpu:x86_32",
+ }),
)
-constraint_value(
+alias(
name = "x86_64",
- constraint_setting = ":cpu",
+ actual = select({
+ ":using_platforms_not_bazel_tools": ":fail_with_incompatible_use_platforms_repo_for_constraints",
+ "//conditions:default": "@platforms//cpu:x86_64",
+ }),
)
-constraint_value(
+alias(
name = "ppc",
- constraint_setting = ":cpu",
+ actual = select({
+ ":using_platforms_not_bazel_tools": ":fail_with_incompatible_use_platforms_repo_for_constraints",
+ "//conditions:default": "@platforms//cpu:ppc",
+ }),
)
-constraint_value(
+alias(
name = "arm",
- constraint_setting = ":cpu",
+ actual = select({
+ ":using_platforms_not_bazel_tools": ":fail_with_incompatible_use_platforms_repo_for_constraints",
+ "//conditions:default": "@platforms//cpu:arm",
+ }),
)
-constraint_value(
+alias(
name = "aarch64",
- constraint_setting = ":cpu",
+ actual = select({
+ ":using_platforms_not_bazel_tools": ":fail_with_incompatible_use_platforms_repo_for_constraints",
+ "//conditions:default": "@platforms//cpu:aarch64",
+ }),
)
-constraint_value(
+alias(
name = "s390x",
- constraint_setting = ":cpu",
+ actual = select({
+ ":using_platforms_not_bazel_tools": ":fail_with_incompatible_use_platforms_repo_for_constraints",
+ "//conditions:default": "@platforms//cpu:s390x",
+ }),
)
-# These match values in //src/main/java/com/google/devtools/build/lib/util:OS.java
-constraint_setting(name = "os")
+alias(
+ name = "os",
+ actual = select({
+ ":using_platforms_not_bazel_tools": ":fail_with_incompatible_use_platforms_repo_for_constraints",
+ "//conditions:default": "@platforms//os:os",
+ }),
+)
-constraint_value(
+alias(
name = "osx",
- constraint_setting = ":os",
+ actual = select({
+ ":using_platforms_not_bazel_tools": ":fail_with_incompatible_use_platforms_repo_for_constraints",
+ "//conditions:default": "@platforms//os:osx",
+ }),
)
-constraint_value(
+alias(
name = "ios",
- constraint_setting = ":os",
+ actual = select({
+ ":using_platforms_not_bazel_tools": ":fail_with_incompatible_use_platforms_repo_for_constraints",
+ "//conditions:default": "@platforms//os:ios",
+ }),
)
-constraint_value(
+alias(
name = "freebsd",
- constraint_setting = ":os",
+ actual = select({
+ ":using_platforms_not_bazel_tools": ":fail_with_incompatible_use_platforms_repo_for_constraints",
+ "//conditions:default": "@platforms//os:freebsd",
+ }),
)
-constraint_value(
+alias(
name = "android",
- constraint_setting = ":os",
+ actual = select({
+ ":using_platforms_not_bazel_tools": ":fail_with_incompatible_use_platforms_repo_for_constraints",
+ "//conditions:default": "@platforms//os:android",
+ }),
)
-constraint_value(
+alias(
name = "linux",
- constraint_setting = ":os",
+ actual = select({
+ ":using_platforms_not_bazel_tools": ":fail_with_incompatible_use_platforms_repo_for_constraints",
+ "//conditions:default": "@platforms//os:linux",
+ }),
)
-constraint_value(
+alias(
name = "windows",
- constraint_setting = ":os",
+ actual = select({
+ ":using_platforms_not_bazel_tools": ":fail_with_incompatible_use_platforms_repo_for_constraints",
+ "//conditions:default": "@platforms//os:windows",
+ }),
)
# A default platform with nothing defined.
@@ -92,19 +147,19 @@
constraint_values = [
],
cpu_constraints = [
- ":x86_32",
- ":x86_64",
- ":ppc",
- ":arm",
- ":aarch64",
- ":s390x",
+ "@platforms//cpu:x86_32",
+ "@platforms//cpu:x86_64",
+ "@platforms//cpu:ppc",
+ "@platforms//cpu:arm",
+ "@platforms//cpu:aarch64",
+ "@platforms//cpu:s390x",
],
host_platform = True,
os_constraints = [
- ":osx",
- ":freebsd",
- ":linux",
- ":windows",
+ "@platforms//os:osx",
+ "@platforms//os:freebsd",
+ "@platforms//os:linux",
+ "@platforms//os:windows",
],
)
@@ -113,18 +168,18 @@
constraint_values = [
],
cpu_constraints = [
- ":x86_32",
- ":x86_64",
- ":ppc",
- ":arm",
- ":aarch64",
- ":s390x",
+ "@platforms//cpu:x86_32",
+ "@platforms//cpu:x86_64",
+ "@platforms//cpu:ppc",
+ "@platforms//cpu:arm",
+ "@platforms//cpu:aarch64",
+ "@platforms//cpu:s390x",
],
os_constraints = [
- ":osx",
- ":freebsd",
- ":linux",
- ":windows",
+ "@platforms//os:osx",
+ "@platforms//os:freebsd",
+ "@platforms//os:linux",
+ "@platforms//os:windows",
],
target_platform = True,
)
diff --git a/tools/platforms/BUILD.tools b/tools/platforms/BUILD.tools
index 862c554..a724463 100644
--- a/tools/platforms/BUILD.tools
+++ b/tools/platforms/BUILD.tools
@@ -1,73 +1,142 @@
-# Standard constraint_setting and constraint_values to be used in platforms.
+load(":fail_with_incompatible_use_platforms_repo_for_constraints.bzl", "fail_with_incompatible_use_platforms_repo_for_constraints")
package(
default_visibility = ["//visibility:public"],
)
-# These match values in //src/main/java/com/google/devtools/build/lib/util:CPU.java
-constraint_setting(name = "cpu")
+fail_with_incompatible_use_platforms_repo_for_constraints(
+ name = "fail_with_incompatible_use_platforms_repo_for_constraints",
+ visibility = ["//visibility:private"],
+)
-constraint_value(
+filegroup(
+ name = "package-srcs",
+ srcs = [
+ "BUILD.tools",
+ "fail_with_incompatible_use_platforms_repo_for_constraints.bzl"
+ ],
+)
+
+filegroup(
+ name = "srcs",
+ srcs = glob(["**"]),
+)
+
+config_setting(
+ name = "using_platforms_not_bazel_tools",
+ values = {"incompatible_use_platforms_repo_for_constraints": "true"},
+)
+
+alias(
+ name = "cpu",
+ actual = select({
+ ":using_platforms_not_bazel_tools": ":fail_with_incompatible_use_platforms_repo_for_constraints",
+ "//conditions:default": "@platforms//cpu:cpu",
+ }),
+)
+
+alias(
name = "x86_32",
- constraint_setting = ":cpu",
+ actual = select({
+ ":using_platforms_not_bazel_tools": ":fail_with_incompatible_use_platforms_repo_for_constraints",
+ "//conditions:default": "@platforms//cpu:x86_32",
+ }),
)
-constraint_value(
+alias(
name = "x86_64",
- constraint_setting = ":cpu",
+ actual = select({
+ ":using_platforms_not_bazel_tools": ":fail_with_incompatible_use_platforms_repo_for_constraints",
+ "//conditions:default": "@platforms//cpu:x86_64",
+ }),
)
-constraint_value(
+alias(
name = "ppc",
- constraint_setting = ":cpu",
+ actual = select({
+ ":using_platforms_not_bazel_tools": ":fail_with_incompatible_use_platforms_repo_for_constraints",
+ "//conditions:default": "@platforms//cpu:ppc",
+ }),
)
-constraint_value(
+alias(
name = "arm",
- constraint_setting = ":cpu",
+ actual = select({
+ ":using_platforms_not_bazel_tools": ":fail_with_incompatible_use_platforms_repo_for_constraints",
+ "//conditions:default": "@platforms//cpu:arm",
+ }),
)
-constraint_value(
+alias(
name = "aarch64",
- constraint_setting = ":cpu",
+ actual = select({
+ ":using_platforms_not_bazel_tools": ":fail_with_incompatible_use_platforms_repo_for_constraints",
+ "//conditions:default": "@platforms//cpu:aarch64",
+ }),
)
-constraint_value(
+alias(
name = "s390x",
- constraint_setting = ":cpu",
+ actual = select({
+ ":using_platforms_not_bazel_tools": ":fail_with_incompatible_use_platforms_repo_for_constraints",
+ "//conditions:default": "@platforms//cpu:s390x",
+ }),
)
-# These match values in //src/main/java/com/google/devtools/build/lib/util:OS.java
-constraint_setting(name = "os")
+alias(
+ name = "os",
+ actual = select({
+ ":using_platforms_not_bazel_tools": ":fail_with_incompatible_use_platforms_repo_for_constraints",
+ "//conditions:default": "@platforms//os:os",
+ }),
+)
-constraint_value(
+alias(
name = "osx",
- constraint_setting = ":os",
+ actual = select({
+ ":using_platforms_not_bazel_tools": ":fail_with_incompatible_use_platforms_repo_for_constraints",
+ "//conditions:default": "@platforms//os:osx",
+ }),
)
-constraint_value(
+alias(
name = "ios",
- constraint_setting = ":os",
+ actual = select({
+ ":using_platforms_not_bazel_tools": ":fail_with_incompatible_use_platforms_repo_for_constraints",
+ "//conditions:default": "@platforms//os:ios",
+ }),
)
-constraint_value(
+alias(
name = "freebsd",
- constraint_setting = ":os",
+ actual = select({
+ ":using_platforms_not_bazel_tools": ":fail_with_incompatible_use_platforms_repo_for_constraints",
+ "//conditions:default": "@platforms//os:freebsd",
+ }),
)
-constraint_value(
+alias(
name = "android",
- constraint_setting = ":os",
+ actual = select({
+ ":using_platforms_not_bazel_tools": ":fail_with_incompatible_use_platforms_repo_for_constraints",
+ "//conditions:default": "@platforms//os:android",
+ }),
)
-constraint_value(
+alias(
name = "linux",
- constraint_setting = ":os",
+ actual = select({
+ ":using_platforms_not_bazel_tools": ":fail_with_incompatible_use_platforms_repo_for_constraints",
+ "//conditions:default": "@platforms//os:linux",
+ }),
)
-constraint_value(
+alias(
name = "windows",
- constraint_setting = ":os",
+ actual = select({
+ ":using_platforms_not_bazel_tools": ":fail_with_incompatible_use_platforms_repo_for_constraints",
+ "//conditions:default": "@platforms//os:windows",
+ }),
)
# A default platform with nothing defined.
@@ -80,19 +149,19 @@
constraint_values = [
],
cpu_constraints = [
- ":x86_32",
- ":x86_64",
- ":ppc",
- ":arm",
- ":aarch64",
- ":s390x",
+ "@platforms//cpu:x86_32",
+ "@platforms//cpu:x86_64",
+ "@platforms//cpu:ppc",
+ "@platforms//cpu:arm",
+ "@platforms//cpu:aarch64",
+ "@platforms//cpu:s390x",
],
host_platform = True,
os_constraints = [
- ":osx",
- ":freebsd",
- ":linux",
- ":windows",
+ "@platforms//os:osx",
+ "@platforms//os:freebsd",
+ "@platforms//os:linux",
+ "@platforms//os:windows",
],
)
@@ -101,18 +170,18 @@
constraint_values = [
],
cpu_constraints = [
- ":x86_32",
- ":x86_64",
- ":ppc",
- ":arm",
- ":aarch64",
- ":s390x",
+ "@platforms//cpu:x86_32",
+ "@platforms//cpu:x86_64",
+ "@platforms//cpu:ppc",
+ "@platforms//cpu:arm",
+ "@platforms//cpu:aarch64",
+ "@platforms//cpu:s390x",
],
os_constraints = [
- ":osx",
- ":freebsd",
- ":linux",
- ":windows",
+ "@platforms//os:osx",
+ "@platforms//os:freebsd",
+ "@platforms//os:linux",
+ "@platforms//os:windows",
],
target_platform = True,
)
diff --git a/tools/platforms/fail_with_incompatible_use_platforms_repo_for_constraints.bzl b/tools/platforms/fail_with_incompatible_use_platforms_repo_for_constraints.bzl
new file mode 100644
index 0000000..0886f45
--- /dev/null
+++ b/tools/platforms/fail_with_incompatible_use_platforms_repo_for_constraints.bzl
@@ -0,0 +1,25 @@
+# Copyright 2019 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.
+"""Temporary rule that can only fail with a nice error message."""
+
+def _impl(ctx):
+ fail("Constraints from @bazel_tools//platforms have been removed. " +
+ "Please use constraints from @platforms repository embedded in " +
+ "Bazel, or preferably declare dependency on " +
+ "https://github.com/bazelbuild/platforms. See " +
+ "https://github.com/bazelbuild/bazel/issues/8622 for details.")
+
+fail_with_incompatible_use_platforms_repo_for_constraints = rule(
+ implementation = _impl,
+)