Build Information
Successful build of jungle, reference main (fe6181
), with Swift 6.0 for macOS (SPM) on 3 Nov 2024 11:22:43 UTC.
Swift 6 data race errors: 6
Build Command
env DEVELOPER_DIR=/Applications/Xcode-16.1.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete
Build Log
========================================
RunAll
========================================
Builder version: 4.56.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/xing/jungle.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/xing/jungle
* branch main -> FETCH_HEAD
* [new branch] main -> origin/main
HEAD is now at fe61816 Merge pull request #23 from xing/support_products
Cloned https://github.com/xing/jungle.git
Revision (git rev-parse @):
fe61816d4f4fac973cd70c272f1bfb863223d3e1
SUCCESS checkout https://github.com/xing/jungle.git at main
Fetching https://github.com/apple/swift-argument-parser
Fetching https://github.com/jpsim/Yams.git
[1/9902] Fetching yams
[2/22255] Fetching yams, swift-argument-parser
Fetched https://github.com/jpsim/Yams.git from cache (2.05s)
Fetched https://github.com/apple/swift-argument-parser from cache (2.05s)
Computing version for https://github.com/jpsim/Yams.git
Computed https://github.com/jpsim/Yams.git at 5.0.1 (0.62s)
Computing version for https://github.com/apple/swift-argument-parser
Computed https://github.com/apple/swift-argument-parser at 1.2.0 (0.65s)
Creating working copy for https://github.com/apple/swift-argument-parser
Working copy of https://github.com/apple/swift-argument-parser resolved at 1.2.0
Creating working copy for https://github.com/jpsim/Yams.git
Working copy of https://github.com/jpsim/Yams.git resolved at 5.0.1
========================================
ResolveProductDependencies
========================================
Resolving dependencies ...
{
"identity": ".resolve-product-dependencies",
"name": "resolve-dependencies",
"url": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
"dependencies": [
{
"identity": "jungle",
"name": "jungle",
"url": "https://github.com/xing/jungle.git",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/jungle",
"dependencies": [
{
"identity": "swift-argument-parser",
"name": "swift-argument-parser",
"url": "https://github.com/apple/swift-argument-parser",
"version": "1.5.0",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/swift-argument-parser",
"dependencies": [
]
},
{
"identity": "yams",
"name": "Yams",
"url": "https://github.com/jpsim/Yams.git",
"version": "5.1.3",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/Yams",
"dependencies": [
]
}
]
}
]
}
Fetching https://github.com/xing/jungle.git
[1/696] Fetching jungle
Fetched https://github.com/xing/jungle.git from cache (0.82s)
Fetching https://github.com/apple/swift-argument-parser from cache
Fetching https://github.com/jpsim/Yams.git from cache
Fetched https://github.com/jpsim/Yams.git from cache (0.64s)
Fetched https://github.com/apple/swift-argument-parser from cache (0.64s)
Computing version for https://github.com/apple/swift-argument-parser
Computed https://github.com/apple/swift-argument-parser at 1.5.0 (0.50s)
Computing version for https://github.com/jpsim/Yams.git
Computed https://github.com/jpsim/Yams.git at 5.1.3 (0.62s)
Creating working copy for https://github.com/jpsim/Yams.git
Working copy of https://github.com/jpsim/Yams.git resolved at 5.1.3
Creating working copy for https://github.com/xing/jungle.git
Working copy of https://github.com/xing/jungle.git resolved at main (fe61816)
Creating working copy for https://github.com/apple/swift-argument-parser
Working copy of https://github.com/apple/swift-argument-parser resolved at 1.5.0
Found 2 product dependencies
- swift-argument-parser
- Yams
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.0
Building package at path: $PWD
https://github.com/xing/jungle.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.1.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete
[1/1] Compiling plugin Generate Manual
Building for debugging...
[1/21] Write sources
[8/21] Write jungle-entitlement.plist
[9/21] Write sources
[11/21] Write swift-version--7754E27361AE5C74.txt
[12/27] Compiling reader.c
[13/27] Compiling emitter.c
[14/27] Compiling api.c
[15/27] Compiling parser.c
[16/27] Compiling scanner.c
[17/27] Compiling writer.c
[19/42] Compiling ArgumentParserToolInfo ToolInfo.swift
[20/42] Emitting module ArgumentParserToolInfo
[21/80] Compiling ArgumentParser ArgumentHelp.swift
[22/80] Compiling ArgumentParser ArgumentVisibility.swift
[23/80] Compiling ArgumentParser CompletionKind.swift
[24/80] Compiling ArgumentParser Errors.swift
[25/84] Compiling ArgumentParser InputOrigin.swift
[26/84] Compiling ArgumentParser Name.swift
[27/84] Compiling ArgumentParser Parsed.swift
[28/84] Compiling ArgumentParser ParsedValues.swift
[29/84] Compiling ArgumentParser Flag.swift
[30/84] Compiling ArgumentParser NameSpecification.swift
[31/84] Compiling ArgumentParser Option.swift
[32/84] Compiling ArgumentParser OptionGroup.swift
[33/84] Compiling ArgumentParser Platform.swift
[34/84] Compiling ArgumentParser SequenceExtensions.swift
[35/84] Compiling ArgumentParser StringExtensions.swift
[36/84] Compiling ArgumentParser Tree.swift
[37/84] Compiling ArgumentParser ParsableArguments.swift
[38/84] Compiling ArgumentParser ParsableArgumentsValidation.swift
[39/84] Compiling ArgumentParser ParsableCommand.swift
[40/84] Compiling ArgumentParser ArgumentDecoder.swift
[41/84] Compiling ArgumentParser AsyncParsableCommand.swift
[42/84] Compiling ArgumentParser CommandConfiguration.swift
[43/84] Compiling ArgumentParser EnumerableFlag.swift
[44/84] Compiling ArgumentParser ExpressibleByArgument.swift
[45/84] Compiling ArgumentParser BashCompletionsGenerator.swift
[46/84] Compiling ArgumentParser CompletionsGenerator.swift
[47/84] Compiling ArgumentParser FishCompletionsGenerator.swift
[48/84] Compiling ArgumentParser ZshCompletionsGenerator.swift
[49/84] Compiling ArgumentParser Argument.swift
[50/84] Emitting module ArgumentParser
[51/84] Compiling ArgumentParser ArgumentDefinition.swift
[52/84] Compiling ArgumentParser ArgumentSet.swift
[53/84] Compiling ArgumentParser CommandParser.swift
[54/84] Compiling ArgumentParser InputKey.swift
[55/84] Emitting module DependencyModule
[56/84] Compiling DependencyModule Module.swift
[57/84] Emitting module Shell
[58/84] Compiling Shell Shell.swift
[59/91] Compiling DependencyGraph Graph+Stats.swift
[60/91] Compiling DependencyGraph Graph.swift
[61/91] Compiling DependencyGraph Graph+Dot.swift
[62/91] Emitting module DependencyGraph
[63/91] Compiling DependencyGraph Graph+Make.swift
[64/91] Emitting module SPMExtractor
[65/91] Compiling SPMExtractor Module+Package.swift
[68/91] Compiling Yams Tag.swift
[69/92] Emitting module Yams
[70/92] Compiling ArgumentParser ParserError.swift
[71/92] Compiling ArgumentParser SplitArguments.swift
[72/92] Compiling ArgumentParser DumpHelpGenerator.swift
[73/92] Compiling ArgumentParser HelpCommand.swift
[76/92] Compiling Yams String+Yams.swift
[79/92] Compiling Yams Resolver.swift
[80/92] Compiling Yams Representer.swift
[85/92] Compiling ArgumentParser HelpGenerator.swift
[86/92] Compiling ArgumentParser MessageInfo.swift
[87/92] Compiling ArgumentParser UsageGenerator.swift
[88/92] Compiling ArgumentParser CollectionExtensions.swift
[89/92] Compiling Yams YamlError.swift
[90/94] Emitting module PodExtractor
[91/94] Compiling PodExtractor Module+Podfile.swift
[92/104] Compiling jungle ModulesCommand.swift
/Users/admin/builder/spi-builder-workspace/Sources/jungle/Commands/ModulesCommand.swift:11:16: warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
9 | struct ModulesCommand: ParsableCommand {
10 |
11 | static var configuration = CommandConfiguration(
| |- warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'configuration' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'configuration' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
12 | commandName: "modules",
13 | abstract: "Outputs a sorted list of modules dependencies count of your project"
[93/104] Compiling jungle ModuleStats.swift
[94/104] Compiling jungle Main.swift
/Users/admin/builder/spi-builder-workspace/Sources/jungle/Commands/Main.swift:5:16: warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
3 | @main
4 | struct Jungle: AsyncParsableCommand {
5 | static var configuration = CommandConfiguration(
| |- warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'configuration' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'configuration' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
6 | commandName: "jungle",
7 | abstract: "SwiftPM and Cocoapods based projects complexity analyzer.",
[95/104] Compiling jungle Outputs.swift
[96/104] Compiling jungle DependantCommand.swift
/Users/admin/builder/spi-builder-workspace/Sources/jungle/Commands/DependantCommand.swift:9:16: warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
7 |
8 | struct DependantCommand: ParsableCommand {
9 | static var configuration = CommandConfiguration(
| |- warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'configuration' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'configuration' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
10 | commandName: "dependant",
11 | abstract: "Outputs a sorted list of targets that depends on the specified one in target"
[97/104] Compiling jungle GitLogEntry.swift
[98/104] Compiling jungle GraphCommand.swift
/Users/admin/builder/spi-builder-workspace/Sources/jungle/Commands/GraphCommand.swift:10:16: warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
8 |
9 | struct GraphCommand: ParsableCommand {
10 | static var configuration = CommandConfiguration(
| |- warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'configuration' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'configuration' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
11 | commandName: "graph",
12 | abstract: "Outputs the dependency graph in DOT format"
[99/104] Emitting module jungle
/Users/admin/builder/spi-builder-workspace/Sources/jungle/Commands/CompareCommand.swift:23:16: warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
21 |
22 | struct CompareCommand: ParsableCommand {
23 | static var configuration = CommandConfiguration(
| |- warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'configuration' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'configuration' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
24 | commandName: "compare",
25 | abstract: "Compares the current complexity of the dependency graph to others versions in git"
/Users/admin/builder/spi-builder-workspace/Sources/jungle/Commands/DependantCommand.swift:9:16: warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
7 |
8 | struct DependantCommand: ParsableCommand {
9 | static var configuration = CommandConfiguration(
| |- warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'configuration' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'configuration' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
10 | commandName: "dependant",
11 | abstract: "Outputs a sorted list of targets that depends on the specified one in target"
/Users/admin/builder/spi-builder-workspace/Sources/jungle/Commands/GraphCommand.swift:10:16: warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
8 |
9 | struct GraphCommand: ParsableCommand {
10 | static var configuration = CommandConfiguration(
| |- warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'configuration' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'configuration' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
11 | commandName: "graph",
12 | abstract: "Outputs the dependency graph in DOT format"
/Users/admin/builder/spi-builder-workspace/Sources/jungle/Commands/HistoryCommand.swift:16:16: warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 | }
15 |
16 | static var configuration = CommandConfiguration(
| |- warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'configuration' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'configuration' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 | commandName: "history",
18 | abstract: "Displays historic complexity of the dependency graph"
/Users/admin/builder/spi-builder-workspace/Sources/jungle/Commands/Main.swift:5:16: warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
3 | @main
4 | struct Jungle: AsyncParsableCommand {
5 | static var configuration = CommandConfiguration(
| |- warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'configuration' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'configuration' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
6 | commandName: "jungle",
7 | abstract: "SwiftPM and Cocoapods based projects complexity analyzer.",
/Users/admin/builder/spi-builder-workspace/Sources/jungle/Commands/ModulesCommand.swift:11:16: warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
9 | struct ModulesCommand: ParsableCommand {
10 |
11 | static var configuration = CommandConfiguration(
| |- warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'configuration' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'configuration' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
12 | commandName: "modules",
13 | abstract: "Outputs a sorted list of modules dependencies count of your project"
[100/104] Compiling jungle CompareCommand.swift
/Users/admin/builder/spi-builder-workspace/Sources/jungle/Commands/CompareCommand.swift:23:16: warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
21 |
22 | struct CompareCommand: ParsableCommand {
23 | static var configuration = CommandConfiguration(
| |- warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'configuration' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'configuration' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
24 | commandName: "compare",
25 | abstract: "Compares the current complexity of the dependency graph to others versions in git"
[101/104] Compiling jungle HistoryCommand.swift
/Users/admin/builder/spi-builder-workspace/Sources/jungle/Commands/HistoryCommand.swift:16:16: warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 | }
15 |
16 | static var configuration = CommandConfiguration(
| |- warning: static property 'configuration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'configuration' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: annotate 'configuration' with '@MainActor' if property should only be accessed from the main actor
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 | commandName: "history",
18 | abstract: "Displays historic complexity of the dependency graph"
/Users/admin/builder/spi-builder-workspace/Sources/jungle/Commands/HistoryCommand.swift:132:31: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
130 |
131 | for entry in logs.lazy {
132 | group.addTask {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
133 |
134 | guard
135 | let podfile = try? shell("git show \(entry.revision):./Podfile", at: directoryURL),
136 | let entryTargetDependencies = try? moduleFromPodfile(podfile, on: target) ?? .init(name: target, dependencies: [])
| `- note: closure captures 'self' which is accessible to code in the current task
137 | else {
138 | return nil
[101/104] Write Objects.LinkFileList
[102/104] Linking jungle
[103/104] Applying jungle
Build complete! (17.23s)
Build complete.
{
"dependencies" : [
{
"identity" : "swift-argument-parser",
"requirement" : {
"range" : [
{
"lower_bound" : "1.2.0",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/apple/swift-argument-parser"
},
{
"identity" : "yams",
"requirement" : {
"range" : [
{
"lower_bound" : "5.0.1",
"upper_bound" : "6.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/jpsim/Yams.git"
}
],
"manifest_display_name" : "jungle",
"name" : "jungle",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "12.0"
}
],
"products" : [
{
"name" : "jungle",
"targets" : [
"jungle"
],
"type" : {
"executable" : null
}
},
{
"name" : "PodExtractor",
"targets" : [
"PodExtractor"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "SPMExtractor",
"targets" : [
"SPMExtractor"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "DependencyGraph",
"targets" : [
"DependencyGraph"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "Shell",
"targets" : [
"Shell"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "jungleTests",
"module_type" : "SwiftTarget",
"name" : "jungleTests",
"path" : "Tests/jungleTests",
"sources" : [
"GitLogEntryTests.swift"
],
"target_dependencies" : [
"jungle"
],
"type" : "test"
},
{
"c99name" : "jungle",
"module_type" : "SwiftTarget",
"name" : "jungle",
"path" : "Sources/jungle",
"product_dependencies" : [
"ArgumentParser"
],
"product_memberships" : [
"jungle"
],
"sources" : [
"Commands/CompareCommand.swift",
"Commands/DependantCommand.swift",
"Commands/GraphCommand.swift",
"Commands/HistoryCommand.swift",
"Commands/Main.swift",
"Commands/ModulesCommand.swift",
"Models/GitLogEntry.swift",
"Models/ModuleStats.swift",
"Models/Outputs.swift"
],
"target_dependencies" : [
"PodExtractor",
"SPMExtractor",
"DependencyGraph",
"Shell"
],
"type" : "executable"
},
{
"c99name" : "Shell",
"module_type" : "SwiftTarget",
"name" : "Shell",
"path" : "Sources/Shell",
"product_memberships" : [
"jungle",
"PodExtractor",
"SPMExtractor",
"Shell"
],
"sources" : [
"Shell.swift"
],
"type" : "library"
},
{
"c99name" : "SPMExtractorTests",
"module_type" : "SwiftTarget",
"name" : "SPMExtractorTests",
"path" : "Tests/SPMExtractorTests",
"sources" : [
"SPMExtractorTests.swift"
],
"target_dependencies" : [
"SPMExtractor"
],
"type" : "test"
},
{
"c99name" : "SPMExtractor",
"module_type" : "SwiftTarget",
"name" : "SPMExtractor",
"path" : "Sources/SPMExtractor",
"product_memberships" : [
"jungle",
"SPMExtractor"
],
"sources" : [
"Module+Package.swift"
],
"target_dependencies" : [
"DependencyModule",
"Shell"
],
"type" : "library"
},
{
"c99name" : "PodExtractorTests",
"module_type" : "SwiftTarget",
"name" : "PodExtractorTests",
"path" : "Tests/PodExtractorTests",
"sources" : [
"PodExtractorTests.swift"
],
"target_dependencies" : [
"PodExtractor"
],
"type" : "test"
},
{
"c99name" : "PodExtractor",
"module_type" : "SwiftTarget",
"name" : "PodExtractor",
"path" : "Sources/PodExtractor",
"product_dependencies" : [
"Yams"
],
"product_memberships" : [
"jungle",
"PodExtractor"
],
"sources" : [
"Module+Podfile.swift"
],
"target_dependencies" : [
"DependencyModule",
"Shell"
],
"type" : "library"
},
{
"c99name" : "DependencyModule",
"module_type" : "SwiftTarget",
"name" : "DependencyModule",
"path" : "Sources/DependencyModule",
"product_memberships" : [
"jungle",
"PodExtractor",
"SPMExtractor",
"DependencyGraph"
],
"sources" : [
"Module.swift"
],
"type" : "library"
},
{
"c99name" : "DependencyGraphTests",
"module_type" : "SwiftTarget",
"name" : "DependencyGraphTests",
"path" : "Tests/DependencyGraphTests",
"sources" : [
"DependencyGraphTests.swift"
],
"target_dependencies" : [
"DependencyGraph"
],
"type" : "test"
},
{
"c99name" : "DependencyGraph",
"module_type" : "SwiftTarget",
"name" : "DependencyGraph",
"path" : "Sources/DependencyGraph",
"product_memberships" : [
"jungle",
"DependencyGraph"
],
"sources" : [
"Graph+Dot.swift",
"Graph+Make.swift",
"Graph+Stats.swift",
"Graph.swift"
],
"target_dependencies" : [
"DependencyModule"
],
"type" : "library"
}
],
"tools_version" : "5.7"
}
Done.