Skip to content

Commit adb65ef

Browse files
authored
Merge pull request #190 from cashapp/luis/add-support-for-bazel
Add support for Bazel
2 parents 28aac80 + bc02de5 commit adb65ef

18 files changed

+233
-7
lines changed

.bazelrc

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# TODO: remove when using Bazel 7 where bzlmod is on by default
2+
common --enable_bzlmod
3+
4+
# Use the apple_support macOS toolchains
5+
common --enable_platform_specific_config
6+
common:macos --apple_crosstool_top=@local_config_apple_cc//:toolchain
7+
common:macos --crosstool_top=@local_config_apple_cc//:toolchain
8+
common:macos --host_crosstool_top=@local_config_apple_cc//:toolchain

.bazelversion

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
6.4.0

.github/workflows/ci.yml

+8
Original file line numberDiff line numberDiff line change
@@ -101,3 +101,11 @@ jobs:
101101
uses: actions/checkout@v3
102102
- name: Build
103103
run: carthage build --no-skip-current --platform iOS --use-xcframeworks --verbose
104+
bazel:
105+
name: Bazel Build
106+
runs-on: macOS-13
107+
steps:
108+
- name: Checkout Repo
109+
uses: actions/checkout@v2
110+
- name: Build
111+
run: bazel build //...

.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,6 @@ Pods/
3232
generated/
3333
.build/
3434
.swiftpm/
35+
36+
# Bazel
37+
bazel-*

BUILD.bazel

+101
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
load(
2+
"@build_bazel_rules_apple//apple:ios.bzl",
3+
"ios_framework",
4+
)
5+
load(
6+
"@build_bazel_rules_swift//swift:swift.bzl",
7+
"swift_library",
8+
)
9+
10+
objc_library(
11+
name = "AccessibilitySnapshotCoreObjC.lib",
12+
srcs = glob(
13+
["Sources/AccessibilitySnapshot/Core/ObjC/**/*.m"],
14+
allow_empty = False,
15+
),
16+
hdrs = glob(
17+
["Sources/AccessibilitySnapshot/Core/ObjC/include/**/*.h"],
18+
allow_empty = False,
19+
),
20+
defines = ["BAZEL_PACKAGE"],
21+
module_name = "AccessibilitySnapshotCore_ObjC",
22+
tags = ["manual"],
23+
visibility = ["//visibility:public"],
24+
deps = [],
25+
)
26+
27+
swift_library(
28+
name = "AccessibilitySnapshotCoreSwift.lib",
29+
srcs = glob(
30+
["Sources/AccessibilitySnapshot/Core/Swift/**/*.swift"],
31+
allow_empty = False,
32+
),
33+
defines = ["BAZEL_PACKAGE"],
34+
module_name = "AccessibilitySnapshotCore",
35+
tags = ["manual"],
36+
visibility = ["//visibility:public"],
37+
deps = [":AccessibilitySnapshotCoreObjC.lib"],
38+
)
39+
40+
swift_library(
41+
name = "AccessibilitySnapshot_iOSSnapshotTestCase_Swift.lib",
42+
testonly = True,
43+
srcs = glob(["Sources/AccessibilitySnapshot/iOSSnapshotTestCase/Swift/**/*.swift"]),
44+
defines = ["BAZEL_PACKAGE"],
45+
tags = ["manual"],
46+
visibility = ["//visibility:public"],
47+
deps = [
48+
":AccessibilitySnapshotCoreObjC.lib",
49+
":AccessibilitySnapshotCoreSwift.lib",
50+
"@ios_snapshot_test_case//:iOSSnapshotTestCase",
51+
],
52+
)
53+
54+
objc_library(
55+
name = "AccessibilitySnapshot_iOSSnapshotTestCase_ObjC.lib",
56+
testonly = True,
57+
srcs = glob(
58+
["Sources/AccessibilitySnapshot/iOSSnapshotTestCase/ObjC/**/*.m"],
59+
allow_empty = False,
60+
),
61+
hdrs = glob(
62+
["Sources/AccessibilitySnapshot/iOSSnapshotTestCase/ObjC/include/**/*.h"],
63+
allow_empty = False,
64+
),
65+
defines = ["BAZEL_PACKAGE"],
66+
module_name = "AccessibilitySnapshot",
67+
tags = ["manual"],
68+
visibility = ["//visibility:public"],
69+
deps = [":AccessibilitySnapshot_iOSSnapshotTestCase_Swift.lib"],
70+
)
71+
72+
ios_framework(
73+
name = "AccessibilitySnapshotCore",
74+
bundle_id = "com.squareup.AccessibilitySnapshotCore",
75+
families = [
76+
"iphone",
77+
"ipad",
78+
],
79+
infoplists = ["Sources/Info.plist"],
80+
minimum_os_version = "13.0",
81+
resources = glob(
82+
["Sources/AccessibilitySnapshot/Core/Swift/Assets/**/*"],
83+
allow_empty = False,
84+
),
85+
visibility = ["//visibility:public"],
86+
deps = [":AccessibilitySnapshotCoreSwift.lib"],
87+
)
88+
89+
ios_framework(
90+
name = "AccessibilitySnapshot_iOSSnapshotTestCase",
91+
testonly = True,
92+
bundle_id = "com.squareup.AccessibilitySnapshot",
93+
families = [
94+
"iphone",
95+
"ipad",
96+
],
97+
infoplists = ["Sources/Info.plist"],
98+
minimum_os_version = "13.0",
99+
visibility = ["//visibility:public"],
100+
deps = [":AccessibilitySnapshot_iOSSnapshotTestCase_ObjC.lib"],
101+
)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2+
From: Luis Padron <[email protected]>
3+
Date: Fri, 19 Jan 2024 15:17:39 -0500
4+
Subject: Patch testonly swift_library
5+
6+
7+
diff --git a/BUILD.bazel b/BUILD.bazel
8+
index 0ae5406..42e81b5 100644
9+
--- a/BUILD.bazel
10+
+++ b/BUILD.bazel
11+
@@ -25,5 +25,6 @@ swift_library(
12+
deps = [
13+
":iOSSnapshotTestCaseCore"
14+
],
15+
+ testonly = True,
16+
visibility = ["//visibility:public"]
17+
)
18+
--
19+
2.42.1
20+

Bazel/BUILD.bazel

Whitespace-only changes.

Bazel/non_bzlmod_deps.bzl

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
"""Defines extensions and macros for MODULE.bazel"""
2+
3+
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
4+
5+
# -- Non-bzlmod versions
6+
7+
IOS_SNAPSHOT_TEST_CASE_VERSION = "57b023c8bb3df361e2fae01532cd066ec0b65d2e"
8+
9+
# -- Module extension
10+
11+
def non_bzlmod_repositories():
12+
"""Defines external dependencies which do not support bzlmod"""
13+
14+
http_archive(
15+
name = "ios_snapshot_test_case",
16+
url = "https://github.com/uber/ios-snapshot-test-case/archive/%s.zip" % IOS_SNAPSHOT_TEST_CASE_VERSION,
17+
strip_prefix = "ios-snapshot-test-case-%s" % IOS_SNAPSHOT_TEST_CASE_VERSION,
18+
sha256 = "fae7ec6bfdc35bb026a2e898295c16240eeb001bed188972ddcc0d7dc388cda3",
19+
patches = ["//Bazel:0001-Patch-testonly-swift_library.patch"],
20+
patch_args = ["-p1"],
21+
)
22+
23+
def _non_bzlmod_deps_impl(_):
24+
non_bzlmod_repositories()
25+
26+
non_bzlmod_deps = module_extension(
27+
implementation = _non_bzlmod_deps_impl,
28+
)

MODULE.bazel

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
"""Defines the Bazel module."""
2+
3+
module(
4+
name = "accessibility_snapshot",
5+
version = "0.0.0",
6+
compatibility_level = 1,
7+
)
8+
9+
bazel_dep(
10+
name = "apple_support",
11+
version = "1.11.1",
12+
)
13+
bazel_dep(
14+
name = "rules_apple",
15+
version = "3.1.1",
16+
repo_name = "build_bazel_rules_apple",
17+
)
18+
bazel_dep(
19+
name = "rules_swift",
20+
version = "1.14.0",
21+
repo_name = "build_bazel_rules_swift",
22+
)
23+
24+
# Load non-bzlmod dependencies
25+
non_bzlmod_deps = use_extension("//Bazel:non_bzlmod_deps.bzl", "non_bzlmod_deps")
26+
use_repo(
27+
non_bzlmod_deps,
28+
"ios_snapshot_test_case",
29+
)
30+
31+
apple_cc_configure = use_extension("@apple_support//crosstool:setup.bzl", "apple_cc_configure_extension")
32+
use_repo(apple_cc_configure, "local_config_apple_cc")

Sources/AccessibilitySnapshot/SnapshotTesting/SnapshotTesting+Accessibility.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
import SnapshotTesting
1818
import UIKit
1919

20-
#if SWIFT_PACKAGE
20+
#if SWIFT_PACKAGE || BAZEL_PACKAGE
2121
import AccessibilitySnapshotCore
2222
import AccessibilitySnapshotCore_ObjC
2323
#endif

Sources/AccessibilitySnapshot/SnapshotTesting/SnapshotTesting+SwiftUI.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import SnapshotTesting
1818
import SwiftUI
1919
import UIKit
2020

21-
#if SWIFT_PACKAGE
21+
#if SWIFT_PACKAGE || BAZEL_PACKAGE
2222
import AccessibilitySnapshotCore
2323
import AccessibilitySnapshotCore_ObjC
2424
#endif

Sources/AccessibilitySnapshot/iOSSnapshotTestCase/Swift/ErrorMessageFactory.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
import Foundation
1818

19-
#if SWIFT_PACKAGE
19+
#if SWIFT_PACKAGE || BAZEL_PACKAGE
2020
import AccessibilitySnapshotCore
2121
#endif
2222

Sources/AccessibilitySnapshot/iOSSnapshotTestCase/Swift/FBSnapshotTestCase+Accessibility.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
import XCTest
1818

19-
#if SWIFT_PACKAGE
19+
#if SWIFT_PACKAGE || BAZEL_PACKAGE
2020
import AccessibilitySnapshotCore
2121
import AccessibilitySnapshotCore_ObjC
2222
import iOSSnapshotTestCase

Sources/AccessibilitySnapshot/iOSSnapshotTestCase/Swift/FBSnapshotTestCase+ImpreciseAccessibility.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
import XCTest
1818

19-
#if SWIFT_PACKAGE
19+
#if SWIFT_PACKAGE || BAZEL_PACKAGE
2020
import AccessibilitySnapshotCore
2121
import AccessibilitySnapshotCore_ObjC
2222
import iOSSnapshotTestCase

Sources/AccessibilitySnapshot/iOSSnapshotTestCase/Swift/FBSnapshotTestCase+ObjCSupport.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
// limitations under the License.
1515
//
1616

17-
#if SWIFT_PACKAGE
17+
#if SWIFT_PACKAGE || BAZEL_PACKAGE
1818
import AccessibilitySnapshotCore
1919
import AccessibilitySnapshotCore_ObjC
2020
import iOSSnapshotTestCase

Sources/AccessibilitySnapshot/iOSSnapshotTestCase/Swift/FBSnapshotTestCase+SwiftUI.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
import SwiftUI
1818

19-
#if SWIFT_PACKAGE
19+
#if SWIFT_PACKAGE || BAZEL_PACKAGE
2020
import AccessibilitySnapshotCore
2121
import iOSSnapshotTestCase
2222
#else

Sources/Info.plist

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+
<plist version="1.0">
4+
<dict>
5+
<key>CFBundleDevelopmentRegion</key>
6+
<string>en</string>
7+
<key>CFBundleExecutable</key>
8+
<string>$(EXECUTABLE_NAME)</string>
9+
<key>CFBundleIdentifier</key>
10+
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
11+
<key>CFBundleInfoDictionaryVersion</key>
12+
<string>6.0</string>
13+
<key>CFBundleName</key>
14+
<string>$(PRODUCT_NAME)</string>
15+
<key>CFBundlePackageType</key>
16+
<string>FMWK</string>
17+
<key>CFBundleShortVersionString</key>
18+
<string>1.0</string>
19+
<key>CFBundleVersion</key>
20+
<string>1.0</string>
21+
<key>NSPrincipalClass</key>
22+
<string></string>
23+
</dict>
24+
</plist>

WORKSPACE.bzlmod

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
"""Defines the WORKSPACE when using bzlmod, this should be empty. Use MODULE.bazel instead"""

0 commit comments

Comments
 (0)