Skip to content

Commit 2226f1e

Browse files
committed
Add aws_sdk_example demonstrating full AWS SDK Swift support
This example builds and runs successfully, demonstrating that all the fixes for complex C dependencies work with aws-sdk-swift, which transitively depends on aws-crt-swift and its complex C library dependencies.
1 parent 70627a3 commit 2226f1e

File tree

9 files changed

+342
-0
lines changed

9 files changed

+342
-0
lines changed

examples/aws_sdk_example/.bazelrc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
build --enable_bzlmod
2+
build --lockfile_mode=update
3+
build --macos_minimum_os=15.0
4+
build --host_macos_minimum_os=15.0
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
load("@rules_swift//swift:swift_binary.bzl", "swift_binary")
2+
3+
swift_binary(
4+
name = "AwsSdkExample",
5+
srcs = ["Sources/AwsSdkExample/main.swift"],
6+
deps = [
7+
"@swiftpkg_aws_sdk_swift//:AWSS3",
8+
],
9+
)
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
module(name = "aws_sdk_example")
2+
3+
bazel_dep(name = "rules_swift_package_manager", version = "1.10.0")
4+
local_path_override(
5+
module_name = "rules_swift_package_manager",
6+
path = "../..",
7+
)
8+
9+
bazel_dep(name = "rules_swift", version = "2.3.0")
10+
11+
swift_deps = use_extension(
12+
"@rules_swift_package_manager//:extensions.bzl",
13+
"swift_deps",
14+
)
15+
swift_deps.from_package(
16+
resolved = "//:Package.resolved",
17+
swift = "//:Package.swift",
18+
)
19+
use_repo(
20+
swift_deps,
21+
"swiftpkg_aws_sdk_swift",
22+
)

examples/aws_sdk_example/Package.resolved

Lines changed: 257 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
// swift-tools-version: 5.9
2+
3+
import PackageDescription
4+
5+
let package = Package(
6+
name: "AwsSdkExample",
7+
dependencies: [
8+
.package(url: "https://github.com/awslabs/aws-sdk-swift", from: "1.0.0"),
9+
]
10+
)

examples/aws_sdk_example/README.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# AWS SDK Swift Example
2+
3+
This example demonstrates building a Swift application that uses the AWS SDK for Swift.
4+
5+
## Building
6+
7+
```bash
8+
bazel build //:AwsSdkExample
9+
```
10+
11+
## Running
12+
13+
```bash
14+
bazel run //:AwsSdkExample
15+
```
16+
17+
Expected output:
18+
```
19+
AWS SDK Swift S3 client created successfully
20+
```
21+
22+
## What This Tests
23+
24+
This example verifies that rules_swift_package_manager can successfully build aws-sdk-swift, which depends on:
25+
- aws-crt-swift (complex C dependencies with inline headers, excluded directories, and system frameworks)
26+
- Multiple Swift packages with various dependency patterns
27+
- Transitive C library dependencies with framework auto-detection
28+
29+
The successful build demonstrates that all the fixes for complex C dependencies work correctly with a real-world, complex Swift package.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import AWSS3
2+
3+
struct AwsSdkExample {
4+
static func main() async throws {
5+
// Simple example that creates an S3 client
6+
_ = try await S3Client()
7+
print("AWS SDK Swift S3 client created successfully")
8+
}
9+
}
10+
11+
try await AwsSdkExample.main()

examples/aws_sdk_example/WORKSPACE

Whitespace-only changes.

examples/aws_sdk_example/WORKSPACE.bzlmod

Whitespace-only changes.

0 commit comments

Comments
 (0)