Skip to content

Commit 4df4c1b

Browse files
committed
feat: support depending on bzlmod deps that use rules_swift_package_manager
Fixes #769
1 parent 28ad44c commit 4df4c1b

File tree

12 files changed

+166
-6
lines changed

12 files changed

+166
-6
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Import Shared settings
2+
import %workspace%/../../shared.bazelrc
3+
4+
# Import CI settings.
5+
import %workspace%/../../ci.bazelrc
6+
7+
# Try to import a local.rc file; typically, written by CI
8+
try-import %workspace%/../../local.bazelrc
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
load("@build_bazel_rules_apple//apple:macos.bzl", "macos_build_test")
2+
load("@build_bazel_rules_swift//swift:swift_binary.bzl", "swift_binary")
3+
4+
swift_binary(
5+
name = "multiple_rules_spm_example",
6+
srcs = ["main.swift"],
7+
deps = [
8+
"@swiftpkg_vapor//:Vapor",
9+
"@vapor_example//Sources/App"
10+
],
11+
)
12+
13+
macos_build_test(
14+
name = "multiple_rules_spm_example_build_test",
15+
minimum_os_version = "13.0",
16+
targets = [":multiple_rules_spm_example"],
17+
)
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
bazel_dep(
2+
name = "rules_swift_package_manager",
3+
version = "0.0.0",
4+
)
5+
local_path_override(
6+
module_name = "rules_swift_package_manager",
7+
path = "../..",
8+
)
9+
10+
bazel_dep(name = "cgrindel_bazel_starlib", version = "0.27.0")
11+
bazel_dep(name = "bazel_skylib", version = "1.8.2")
12+
bazel_dep(name = "apple_support", version = "1.24.4")
13+
bazel_dep(
14+
name = "rules_swift",
15+
version = "3.2.0",
16+
repo_name = "build_bazel_rules_swift",
17+
)
18+
bazel_dep(
19+
name = "rules_apple",
20+
version = "4.2.0",
21+
repo_name = "build_bazel_rules_apple",
22+
)
23+
24+
bazel_dep(
25+
name = "bazel_skylib_gazelle_plugin",
26+
version = "1.8.2",
27+
dev_dependency = True,
28+
)
29+
30+
swift_deps = use_extension(
31+
"@rules_swift_package_manager//:extensions.bzl",
32+
"swift_deps",
33+
)
34+
swift_deps.from_package(
35+
resolved = "//:Package.resolved",
36+
swift = "//:Package.swift",
37+
)
38+
use_repo(
39+
swift_deps,
40+
"swift_package",
41+
"swiftpkg_fluent",
42+
"swiftpkg_fluent_sqlite_driver",
43+
"swiftpkg_swift_log",
44+
"swiftpkg_vapor",
45+
)
46+
47+
# Depend on another repository via Bzlmod that uses `rules_swift_package_manager` to declare its dependencies
48+
bazel_dep(
49+
name = "vapor_example",
50+
version = "0.0.0",
51+
)
52+
local_path_override(
53+
module_name = "vapor_example",
54+
path = "../vapor_example",
55+
)

examples/multiple_rules_spm_example/Package.resolved

Lines changed: 14 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.7
2+
3+
import PackageDescription
4+
5+
let package = Package(
6+
name: "multiple_rules_spm_example",
7+
dependencies: [
8+
.package(url: "https://github.com/apple/swift-log", from: "1.5.2"),
9+
]
10+
)
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# multiple_rules_spm Example
2+
3+
This example demonstrates how one repository: `multiple_rules_spm` can depend on another repository: `vapor_example` via Bzlmod without issues.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# Intentionally blank: Using bzlmod
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# Intentionally blank: Force bzlmod to strict mode
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#!/usr/bin/env bash
2+
3+
set -o errexit -o nounset -o pipefail
4+
5+
# Use the Bazel binary specified by the integration test. Otherise, fall back
6+
# to bazel.
7+
bazel="${BIT_BAZEL_BINARY:-bazel}"
8+
9+
# Ensure that it builds and tests pass
10+
"${bazel}" test //...
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import App
2+
import Vapor
3+
4+
var env = try Environment.detect()
5+
try LoggingSystem.bootstrap(from: &env)
6+
let app = Application(env)
7+
defer { app.shutdown() }
8+
try configure(app)
9+
try app.run()

0 commit comments

Comments
 (0)