Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
a12e5ca
Initial models for spreq
cgrindel Dec 9, 2022
6505669
Add models for Swift requirements.
cgrindel Dec 10, 2022
2738bd1
Add plumbing for generating a manifest, resolving deps from the manifest
cgrindel Dec 10, 2022
a4a457a
Add swiftbin.ResolvePackage
cgrindel Dec 10, 2022
c1a995c
Remove swift reqs plumbing for now
cgrindel Dec 10, 2022
e0408da
Add pkg_manifest_minimal
cgrindel Dec 12, 2022
06dcb29
Fix bug when checking for existence of the resolved package
cgrindel Dec 12, 2022
bf8e092
Refactor HTTPArchive processing to its own function
cgrindel Dec 12, 2022
1d443f6
Update deleted packages
cgrindel Dec 12, 2022
40cc860
Ignore the Swift build folder
cgrindel Dec 12, 2022
5e09969
Add plumbing for including modules in swift_package declarations
cgrindel Dec 12, 2022
80f1e42
Generating exported targets/modules as a dictionary
cgrindel Dec 12, 2022
4fbbd26
Indexing modules from swift_package. Need to plumb through to resolve
cgrindel Dec 13, 2022
6d9ea96
Resolved external dep
cgrindel Dec 13, 2022
2ff1b2f
Update tests for NewHTTPArchiveFromRule
cgrindel Dec 13, 2022
4a4e233
Add tests for BazelLabelFromTarget
cgrindel Dec 13, 2022
0f374db
Fix test for RepoRuleFromPin
cgrindel Dec 13, 2022
fefbe2f
Add GHXXX comment
cgrindel Dec 13, 2022
a424060
Remove exported_targets_tests.go for now
cgrindel Dec 13, 2022
99a9e68
Add pkg_manifest_minimal to integration tests
cgrindel Dec 13, 2022
bedd9dd
Add pkg_manifest_minimal integration test
cgrindel Dec 13, 2022
d557ef7
Clean up
cgrindel Dec 13, 2022
1948b7d
Remove spreq
cgrindel Dec 13, 2022
5baffa3
The pkg_manifest integration test works
cgrindel Dec 13, 2022
811251c
Ran tidy
cgrindel Dec 13, 2022
8aaf0df
Ensure Gazelle uses correct naming convention for buildtools
cgrindel Dec 13, 2022
9095792
Remove wspace Go package
cgrindel Dec 13, 2022
1759c49
Clean up
cgrindel Dec 13, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .bazelrc
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# To update these lines, execute
# `bazel run @contrib_rules_bazel_integration_test//tools:update_deleted_packages`
build --deleted_packages=examples/http_archive_ext_deps,examples/http_archive_ext_deps/Sources/MyDequeModule,examples/http_archive_ext_deps/Sources/PrintStuff,examples/http_archive_ext_deps/Tests/MyDequeModuleTests,examples/pkg_manifest,examples/pkg_manifest/Sources/MyExecutable,examples/pkg_manifest/Sources/MyLibrary,examples/pkg_manifest/Tests/MyLibraryTests
query --deleted_packages=examples/http_archive_ext_deps,examples/http_archive_ext_deps/Sources/MyDequeModule,examples/http_archive_ext_deps/Sources/PrintStuff,examples/http_archive_ext_deps/Tests/MyDequeModuleTests,examples/pkg_manifest,examples/pkg_manifest/Sources/MyExecutable,examples/pkg_manifest/Sources/MyLibrary,examples/pkg_manifest/Tests/MyLibraryTests
build --deleted_packages=examples/http_archive_ext_deps,examples/http_archive_ext_deps/Sources/MyDequeModule,examples/http_archive_ext_deps/Sources/PrintStuff,examples/http_archive_ext_deps/Tests/MyDequeModuleTests,examples/pkg_manifest,examples/pkg_manifest/Sources/MyExecutable,examples/pkg_manifest/Sources/MyLibrary,examples/pkg_manifest/Tests/MyLibraryTests,examples/pkg_manifest_minimal,examples/pkg_manifest_minimal/Sources/MyExecutable,examples/pkg_manifest_minimal/Sources/MyLibrary,examples/pkg_manifest_minimal/Tests/MyLibraryTests
query --deleted_packages=examples/http_archive_ext_deps,examples/http_archive_ext_deps/Sources/MyDequeModule,examples/http_archive_ext_deps/Sources/PrintStuff,examples/http_archive_ext_deps/Tests/MyDequeModuleTests,examples/pkg_manifest,examples/pkg_manifest/Sources/MyExecutable,examples/pkg_manifest/Sources/MyLibrary,examples/pkg_manifest/Tests/MyLibraryTests,examples/pkg_manifest_minimal,examples/pkg_manifest_minimal/Sources/MyExecutable,examples/pkg_manifest_minimal/Sources/MyLibrary,examples/pkg_manifest_minimal/Tests/MyLibraryTests

# Import Shared settings
import %workspace%/shared.bazelrc
Expand Down
1 change: 0 additions & 1 deletion BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,6 @@ filegroup(
"//gazelle/internal/swiftbin:all_files",
"//gazelle/internal/swiftcfg:all_files",
"//gazelle/internal/swiftpkg:all_files",
"//gazelle/internal/wspace:all_files",
"//swiftpkg:all_files",
"//swiftpkg/internal:all_files",
"//swiftpkg/internal/modulemap_parser:all_files",
Expand Down
24 changes: 24 additions & 0 deletions examples/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -64,11 +64,35 @@ bazel_integration_tests(
workspace_path = "pkg_manifest",
)

sh_binary(
name = "pkg_manifest_minimal_test_runner",
testonly = True,
srcs = ["pkg_manifest_minimal_test_runner.sh"],
data = [
"@contrib_rules_bazel_integration_test//tools:create_scratch_dir",
],
deps = [
"@bazel_tools//tools/bash/runfiles",
"@cgrindel_bazel_starlib//shlib/lib:assertions",
],
)

bazel_integration_tests(
name = "pkg_manifest_minimal_test",
bazel_versions = SUPPORTED_BAZEL_VERSIONS,
test_runner = ":pkg_manifest_minimal_test_runner",
workspace_files = integration_test_utils.glob_workspace_files("pkg_manifest_minimal") + [
"//:local_repository_files",
],
workspace_path = "pkg_manifest_minimal",
)

# MARK: - Test Suites

_test_base_names = [
"http_archive_ext_deps_test",
"pkg_manifest_test",
"pkg_manifest_minimal_test",
]

_smoke_test_names = [
Expand Down
2 changes: 1 addition & 1 deletion examples/pkg_manifest/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ gazelle(
gazelle(
name = "swift_update_repos",
args = [
"-from_file=Package.resolved",
"-from_file=Package.swift",
"-to_macro=swift_deps.bzl%swift_dependencies",
"-prune",
],
Expand Down
47 changes: 47 additions & 0 deletions examples/pkg_manifest_minimal/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
load("@bazel_gazelle//:def.bzl", "gazelle", "gazelle_binary")
load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
load("@cgrindel_bazel_starlib//bzltidy:defs.bzl", "tidy")

tidy(
name = "tidy",
targets = [
":swift_update_repos",
":update_build_files",
],
)

# MARK: - Gazelle

# Ignore the Swift build folder
# gazelle:exclude .build

gazelle_binary(
name = "gazelle_bin",
languages = [
"@bazel_skylib//gazelle/bzl",
"@cgrindel_swift_bazel//gazelle",
],
)

gazelle(
name = "update_build_files",
gazelle = ":gazelle_bin",
)

gazelle(
name = "swift_update_repos",
args = [
"-from_file=Package.swift",
"-to_macro=swift_deps.bzl%swift_dependencies",
"-prune",
],
command = "update-repos",
gazelle = ":gazelle_bin",
)

bzl_library(
name = "swift_deps",
srcs = ["swift_deps.bzl"],
visibility = ["//visibility:public"],
deps = ["@cgrindel_swift_bazel//swiftpkg:defs"],
)
23 changes: 23 additions & 0 deletions examples/pkg_manifest_minimal/Package.resolved

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 13 additions & 0 deletions examples/pkg_manifest_minimal/Package.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
// swift-tools-version: 5.7

import PackageDescription

let package = Package(
name: "MySwiftPackage",
dependencies: [
.package(url: "https://github.com/apple/swift-argument-parser", from: "1.2.0"),
.package(url: "https://github.com/apple/swift-log", from: "1.4.4"),
],
targets: [
]
)
3 changes: 3 additions & 0 deletions examples/pkg_manifest_minimal/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# MySwiftPackage

A description of this package.
13 changes: 13 additions & 0 deletions examples/pkg_manifest_minimal/Sources/MyExecutable/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
load("@build_bazel_rules_swift//swift:swift.bzl", "swift_binary")

swift_binary(
name = "MyExecutable",
srcs = ["MyExecutable.swift"],
copts = ["-parse-as-library"],
module_name = "MyExecutable",
visibility = ["//visibility:public"],
deps = [
"//Sources/MyLibrary",
"@apple_swift_argument_parser//Sources/ArgumentParser",
],
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import ArgumentParser
import MyLibrary

@main
struct MyExecutable: AsyncParsableCommand {
mutating func run() async throws {
print(MyModel().text)
}
}
8 changes: 8 additions & 0 deletions examples/pkg_manifest_minimal/Sources/MyLibrary/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
load("@build_bazel_rules_swift//swift:swift.bzl", "swift_library")

swift_library(
name = "MyLibrary",
srcs = ["MyModel.swift"],
module_name = "MyLibrary",
visibility = ["//visibility:public"],
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
public struct MyModel {
public private(set) var text = "Hello, World!"

public init() {}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
load("@build_bazel_rules_swift//swift:swift.bzl", "swift_test")

swift_test(
name = "MyLibraryTests",
srcs = ["MyLibraryTests.swift"],
module_name = "MyLibraryTests",
deps = ["//Sources/MyLibrary"],
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
@testable import MyLibrary
import XCTest

final class MyLibraryTests: XCTestCase {
func testExample() throws {
// This is an example of a functional test case.
// Use XCTAssert and related functions to verify your tests produce the correct
// results.
XCTAssertEqual(MyModel().text, "Hello, World!")
}
}
59 changes: 59 additions & 0 deletions examples/pkg_manifest_minimal/WORKSPACE
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
workspace(name = "pkg_manifest_example")

local_repository(
name = "cgrindel_swift_bazel",
path = "../..",
)

load("@cgrindel_swift_bazel//:deps.bzl", "swift_bazel_dependencies")

swift_bazel_dependencies()

load("@cgrindel_bazel_starlib//:deps.bzl", "bazel_starlib_dependencies")

bazel_starlib_dependencies()

# MARK: - Gazelle

# gazelle:repo bazel_gazelle

load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies")
load("@cgrindel_swift_bazel//:go_deps.bzl", "swift_bazel_go_dependencies")
load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies")

# Declare Go dependencies before calling go_rules_dependencies.
swift_bazel_go_dependencies()

go_rules_dependencies()

go_register_toolchains(version = "1.19.1")

gazelle_dependencies()

# MARK: - Swift Toolchain

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
name = "build_bazel_rules_swift",
sha256 = "51efdaf85e04e51174de76ef563f255451d5a5cd24c61ad902feeadafc7046d9",
url = "https://github.com/bazelbuild/rules_swift/releases/download/1.2.0/rules_swift.1.2.0.tar.gz",
)

load(
"@build_bazel_rules_swift//swift:repositories.bzl",
"swift_rules_dependencies",
)
load("//:swift_deps.bzl", "swift_dependencies")

# gazelle:repository_macro swift_deps.bzl%swift_dependencies
swift_dependencies()

swift_rules_dependencies()

load(
"@build_bazel_rules_swift//swift:extras.bzl",
"swift_rules_extra_dependencies",
)

swift_rules_extra_dependencies()
29 changes: 29 additions & 0 deletions examples/pkg_manifest_minimal/swift_deps.bzl
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
load("@cgrindel_swift_bazel//swiftpkg:defs.bzl", "swift_package")

def swift_dependencies():
# version: 1.2.0
swift_package(
name = "apple_swift_argument_parser",
commit = "fddd1c00396eed152c45a46bea9f47b98e59301d",
modules = {
"ArgumentParser": "//Sources/ArgumentParser",
"Generate_Manual": "//Plugins/GenerateManualPlugin:Generate Manual",
"changelog_authors": "//Tools/changelog-authors",
"count_lines": "//Examples/count-lines",
"generate_manual": "//Tools/generate-manual",
"math": "//Examples/math",
"repeat": "//Examples/repeat",
"roll": "//Examples/roll",
},
remote = "https://github.com/apple/swift-argument-parser",
)

# version: 1.4.4
swift_package(
name = "apple_swift_log",
commit = "6fe203dc33195667ce1759bf0182975e4653ba1c",
modules = {
"Logging": "//Sources/Logging",
},
remote = "https://github.com/apple/swift-log",
)
55 changes: 55 additions & 0 deletions examples/pkg_manifest_minimal_test_runner.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
#!/usr/bin/env bash

# --- begin runfiles.bash initialization v2 ---
# Copy-pasted from the Bazel Bash runfiles library v2.
set -o nounset -o pipefail; f=bazel_tools/tools/bash/runfiles/runfiles.bash
# shellcheck disable=SC1090
source "${RUNFILES_DIR:-/dev/null}/$f" 2>/dev/null || \
source "$(grep -sm1 "^$f " "${RUNFILES_MANIFEST_FILE:-/dev/null}" | cut -f2- -d' ')" 2>/dev/null || \
source "$0.runfiles/$f" 2>/dev/null || \
source "$(grep -sm1 "^$f " "$0.runfiles_manifest" | cut -f2- -d' ')" 2>/dev/null || \
source "$(grep -sm1 "^$f " "$0.exe.runfiles_manifest" | cut -f2- -d' ')" 2>/dev/null || \
{ echo>&2 "ERROR: cannot find $f"; exit 1; }; f=; set -o errexit
# --- end runfiles.bash initialization v2 ---

# MARK - Locate Deps

assertions_sh_location=cgrindel_bazel_starlib/shlib/lib/assertions.sh
assertions_sh="$(rlocation "${assertions_sh_location}")" || \
(echo >&2 "Failed to locate ${assertions_sh_location}" && exit 1)
source "${assertions_sh}"

create_scratch_dir_sh_location=contrib_rules_bazel_integration_test/tools/create_scratch_dir.sh
create_scratch_dir_sh="$(rlocation "${create_scratch_dir_sh_location}")" || \
(echo >&2 "Failed to locate ${create_scratch_dir_sh_location}" && exit 1)

# MARK - Process Arguments

bazel="${BIT_BAZEL_BINARY:-}"
workspace_dir="${BIT_WORKSPACE_DIR:-}"

[[ -n "${bazel:-}" ]] || exit_with_msg "Must specify the location of the Bazel binary."
[[ -n "${workspace_dir:-}" ]] || exit_with_msg "Must specify the location of the workspace directory."

# MARK - Create Scratch Directory

scratch_dir="$("${create_scratch_dir_sh}" --workspace "${workspace_dir}")"
cd "${scratch_dir}"

# MARK - Test

# Dump Bazel info
bazel info

# Generate Swift external deps
bazel run //:swift_update_repos

# Generate build files for the workspace
bazel run //:update_build_files

# Ensure that it builds
bazel test //...

# Run the product alias
output="$(bazel run //Sources/MyExecutable)"
assert_match "Hello, World!" "${output}"
1 change: 0 additions & 1 deletion gazelle/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ go_library(
"//gazelle/internal/swiftbin",
"//gazelle/internal/swiftcfg",
"//gazelle/internal/swiftpkg",
"//gazelle/internal/wspace",
"@bazel_gazelle//config:go_default_library",
"@bazel_gazelle//label:go_default_library",
"@bazel_gazelle//language:go_default_library",
Expand Down
Loading