Skip to content

Commit 2bd7b3d

Browse files
committed
Add checks for required Bazel version
1 parent 38b7a93 commit 2bd7b3d

10 files changed

Lines changed: 36 additions & 12 deletions

.bazelci/presubmit.yml

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@ tasks:
1919
name: "6.x LTS"
2020
bazel: 6.x
2121
<<: *common
22+
build_targets:
23+
- "//..."
24+
- "-//xcode/..." # Requires Bazel 8+
25+
test_targets:
26+
- "//..."
27+
- "-//xcode/..." # Requires Bazel 8+
2228
build_flags:
2329
# Bazel 6.x has dependencies that produce warnings now
2430
- "--features=-treat_warnings_as_errors"
@@ -43,10 +49,6 @@ tasks:
4349
name: "Last Green Bazel"
4450
bazel: last_green
4551
<<: *common
46-
# TODO: Remove once we test with Bazel 8+
47-
test_targets:
48-
- "//..."
49-
- "//test:xcode_config_test"
5052

5153
linux_latest:
5254
name: "Current LTS"

MODULE.bazel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ module(
66
repo_name = "build_bazel_apple_support",
77
)
88

9-
bazel_dep(name = "bazel_features", version = "1.10.0")
9+
bazel_dep(name = "bazel_features", version = "1.27.0")
1010
bazel_dep(name = "bazel_skylib", version = "1.3.0")
1111
bazel_dep(name = "platforms", version = "0.0.9")
1212
bazel_dep(name = "rules_cc", version = "0.0.8")

lib/repositories.bzl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,9 @@ def apple_support_dependencies():
5959
_maybe(
6060
http_archive,
6161
name = "bazel_features",
62-
sha256 = "95fb3cfd11466b4cad6565e3647a76f89886d875556a4b827c021525cb2482bb",
63-
strip_prefix = "bazel_features-1.10.0",
64-
url = "https://github.com/bazel-contrib/bazel_features/releases/download/v1.10.0/bazel_features-v1.10.0.tar.gz",
62+
sha256 = "2da0aaccbd725ad61f4e35d6d75ed421bf73ec1de167458b00ffecef3cd78f6d",
63+
strip_prefix = "bazel_features-1.27.0",
64+
url = "https://github.com/bazel-contrib/bazel_features/releases/download/v1.27.0/bazel_features-v1.27.0.tar.gz",
6565
)
6666

6767
_maybe(

test/available_xcodes_test.bzl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
"""Tests for the `available_xcodes` rule."""
1616

17+
load("@bazel_features//:features.bzl", "bazel_features")
1718
load("@bazel_skylib//lib:unittest.bzl", "analysistest")
1819
load("//xcode:available_xcodes.bzl", "available_xcodes")
1920
load("//xcode:xcode_version.bzl", "xcode_version")
@@ -80,5 +81,5 @@ def available_xcodes_test(name):
8081
name = name,
8182
tests = [
8283
_read_version_from_providers,
83-
],
84+
] if bazel_features.apple.xcode_config_migrated else [], # TODO: Remove once we test with Bazel 8+
8485
)

test/xcode_config_test.bzl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
"""Tests for the `xcode_config` rule."""
1616

17+
load("@bazel_features//:features.bzl", "bazel_features")
1718
load("@bazel_skylib//lib:unittest.bzl", "analysistest", "asserts")
1819
load("//xcode:available_xcodes.bzl", "available_xcodes")
1920
load("//xcode:xcode_config.bzl", "xcode_config")
@@ -2360,8 +2361,7 @@ def xcode_config_test(name):
23602361
_available_xcodes_mode_different_alias,
23612362
_available_xcodes_mode_different_alias_fully_specified,
23622363
_available_xcodes_mode_with_flag,
2363-
],
2364-
# TODO: Remove once we test with Bazel 8+
2364+
] if bazel_features.apple.xcode_config_migrated else [], # TODO: Remove once we test with Bazel 8+
23652365
tags = ["manual"],
23662366
)
23672367

test/xcode_version_test.bzl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
"""Tests for the `xcode_version` rule."""
1616

17+
load("@bazel_features//:features.bzl", "bazel_features")
1718
load("@bazel_skylib//lib:unittest.bzl", "analysistest", "asserts")
1819
load("//xcode:xcode_version.bzl", "xcode_version")
1920
load(
@@ -70,5 +71,5 @@ def xcode_version_test(name):
7071
name = name,
7172
tests = [
7273
_read_version_from_providers,
73-
],
74+
] if bazel_features.apple.xcode_config_migrated else [], # TODO: Remove once we test with Bazel 8+
7475
)

xcode/available_xcodes.bzl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
"""Implementation of the `available_xcodes` build rule."""
1616

17+
load("@bazel_features//:features.bzl", "bazel_features")
1718
load(
1819
"@build_bazel_apple_support//xcode/private:providers.bzl",
1920
"AvailableXcodesInfo",
@@ -23,6 +24,10 @@ load(
2324
visibility("public")
2425

2526
def _available_xcodes_impl(ctx):
27+
# TODO: drop when requiring Bazel 8+
28+
if not bazel_features.apple.xcode_config_migrated:
29+
fail("This rule is not available on the current Bazel version")
30+
2631
available_versions = [
2732
target[XcodeVersionRuleInfo]
2833
for target in ctx.attr.versions

xcode/xcode_config.bzl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
"""Implementation of the `xcode_config` build rule."""
1616

17+
load("@bazel_features//:features.bzl", "bazel_features")
1718
load(
1819
"@build_bazel_apple_support//xcode/private:providers.bzl",
1920
"AvailableXcodesInfo",
@@ -26,6 +27,10 @@ visibility("public")
2627
unavailable_xcode_message = "'bazel fetch --configure' (Bzlmod) or 'bazel sync --configure' (WORKSPACE)"
2728

2829
def _xcode_config_impl(ctx):
30+
# TODO: drop when requiring Bazel 8+
31+
if not bazel_features.apple.xcode_config_migrated:
32+
fail("This rule is not available on the current Bazel version")
33+
2934
apple_fragment = ctx.fragments.apple
3035
cpp_fragment = ctx.fragments.cpp
3136

xcode/xcode_config_alias.bzl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ contain exactly one instance of this rule under `@bazel_tools//tools/osx` and
2323
people who want to get data this rule provides should depend on that one.
2424
"""
2525

26+
load("@bazel_features//:features.bzl", "bazel_features")
2627
load(
2728
"@build_bazel_apple_support//xcode/private:providers.bzl",
2829
"XcodeVersionPropertiesInfo",
@@ -31,6 +32,10 @@ load(
3132
visibility("public")
3233

3334
def _xcode_config_alias_impl(ctx):
35+
# TODO: drop when requiring Bazel 8+
36+
if not bazel_features.apple.xcode_config_migrated:
37+
fail("This rule is not available on the current Bazel version")
38+
3439
xcode_config = ctx.attr._xcode_config
3540
return [
3641
xcode_config[XcodeVersionPropertiesInfo],

xcode/xcode_version.bzl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
"""Implementation of the `xcode_version` build rule."""
1616

17+
load("@bazel_features//:features.bzl", "bazel_features")
1718
load(
1819
"@build_bazel_apple_support//xcode/private:providers.bzl",
1920
"XcodeVersionPropertiesInfo",
@@ -23,6 +24,10 @@ load(
2324
visibility("public")
2425

2526
def _xcode_version_impl(ctx):
27+
# TODO: drop when requiring Bazel 8+
28+
if not bazel_features.apple.xcode_config_migrated:
29+
fail("This rule is not available on the current Bazel version")
30+
2631
xcode_version_properties = XcodeVersionPropertiesInfo(
2732
xcode_version = ctx.attr.version,
2833
default_ios_sdk_version = ctx.attr.default_ios_sdk_version,

0 commit comments

Comments
 (0)