Build Information
Successful build of Run, reference 0.1.1 (5a2866
), with Swift 6.1 for macOS (SPM) on 25 Apr 2025 17:32:01 UTC.
Swift 6 data race errors: 5
Build Command
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures
Build Log
========================================
RunAll
========================================
Builder version: 4.61.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/getGuaka/Run.git
Reference: 0.1.1
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/getGuaka/Run
* tag 0.1.1 -> FETCH_HEAD
HEAD is now at 5a2866c Fix execute ls test on Linux
Cloned https://github.com/getGuaka/Run.git
Revision (git rev-parse @):
5a2866c0ae4266e0406d85f16adf65a30a626d7f
SUCCESS checkout https://github.com/getGuaka/Run.git at 0.1.1
Fetching https://github.com/getGuaka/Prompt.git
Fetching https://github.com/Quick/Quick.git
Fetching https://github.com/getGuaka/Args.git
Fetching https://github.com/Quick/Nimble.git
[1/34] Fetching args
[35/78] Fetching args, prompt
[79/14833] Fetching args, prompt, quick
[817/34400] Fetching args, prompt, quick, nimble
Fetched https://github.com/getGuaka/Prompt.git from cache (1.79s)
Fetched https://github.com/Quick/Quick.git from cache (1.79s)
Fetched https://github.com/Quick/Nimble.git from cache (1.79s)
Computing version for https://github.com/Quick/Nimble.git
Fetched https://github.com/getGuaka/Args.git from cache (1.79s)
Computed https://github.com/Quick/Nimble.git at 7.3.1 (2.44s)
Computing version for https://github.com/Quick/Quick.git
Computed https://github.com/Quick/Quick.git at 1.3.2 (0.63s)
Computing version for https://github.com/getGuaka/Prompt.git
Computed https://github.com/getGuaka/Prompt.git at 0.1.1 (0.60s)
Computing version for https://github.com/getGuaka/Args.git
Computed https://github.com/getGuaka/Args.git at 0.1.1 (0.60s)
Creating working copy for https://github.com/Quick/Nimble.git
Working copy of https://github.com/Quick/Nimble.git resolved at 7.3.1
Creating working copy for https://github.com/Quick/Quick.git
Working copy of https://github.com/Quick/Quick.git resolved at 1.3.2
Creating working copy for https://github.com/getGuaka/Prompt.git
Working copy of https://github.com/getGuaka/Prompt.git resolved at 0.1.1
Creating working copy for https://github.com/getGuaka/Args.git
Working copy of https://github.com/getGuaka/Args.git resolved at 0.1.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": "run",
"name": "Run",
"url": "https://github.com/getGuaka/Run.git",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/Run",
"dependencies": [
{
"identity": "prompt",
"name": "Prompt",
"url": "https://github.com/getGuaka/Prompt.git",
"version": "0.1.1",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/Prompt",
"dependencies": [
{
"identity": "args",
"name": "Args",
"url": "https://github.com/getGuaka/Args.git",
"version": "0.1.1",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/Args",
"dependencies": [
{
"identity": "quick",
"name": "Quick",
"url": "https://github.com/Quick/Quick.git",
"version": "1.3.4",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/Quick",
"dependencies": [
{
"identity": "nimble",
"name": "Nimble",
"url": "https://github.com/Quick/Nimble.git",
"version": "7.3.4",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/Nimble",
"dependencies": [
]
}
]
},
{
"identity": "nimble",
"name": "Nimble",
"url": "https://github.com/Quick/Nimble.git",
"version": "7.3.4",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/Nimble",
"dependencies": [
]
}
]
},
{
"identity": "quick",
"name": "Quick",
"url": "https://github.com/Quick/Quick.git",
"version": "1.3.4",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/Quick",
"dependencies": [
{
"identity": "nimble",
"name": "Nimble",
"url": "https://github.com/Quick/Nimble.git",
"version": "7.3.4",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/Nimble",
"dependencies": [
]
}
]
},
{
"identity": "nimble",
"name": "Nimble",
"url": "https://github.com/Quick/Nimble.git",
"version": "7.3.4",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/Nimble",
"dependencies": [
]
}
]
},
{
"identity": "quick",
"name": "Quick",
"url": "https://github.com/Quick/Quick.git",
"version": "1.3.4",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/Quick",
"dependencies": [
{
"identity": "nimble",
"name": "Nimble",
"url": "https://github.com/Quick/Nimble.git",
"version": "7.3.4",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/Nimble",
"dependencies": [
]
}
]
},
{
"identity": "nimble",
"name": "Nimble",
"url": "https://github.com/Quick/Nimble.git",
"version": "7.3.4",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/Nimble",
"dependencies": [
]
}
]
}
]
}
Fetching https://github.com/getGuaka/Run.git
[1/53] Fetching run
Fetched https://github.com/getGuaka/Run.git from cache (0.58s)
Fetching https://github.com/Quick/Nimble.git from cache
Fetching https://github.com/Quick/Quick.git from cache
Fetching https://github.com/getGuaka/Prompt.git from cache
Fetched https://github.com/Quick/Nimble.git from cache (0.57s)
Fetched https://github.com/getGuaka/Prompt.git from cache (0.57s)
Fetched https://github.com/Quick/Quick.git from cache (0.57s)
Computing version for https://github.com/getGuaka/Prompt.git
Computed https://github.com/getGuaka/Prompt.git at 0.1.1 (0.64s)
Fetching https://github.com/getGuaka/Args.git from cache
Fetched https://github.com/getGuaka/Args.git from cache (0.47s)
Computing version for https://github.com/getGuaka/Args.git
Computed https://github.com/getGuaka/Args.git at 0.1.1 (0.52s)
Computing version for https://github.com/Quick/Quick.git
Computed https://github.com/Quick/Quick.git at 1.3.4 (0.61s)
Computing version for https://github.com/Quick/Nimble.git
Computed https://github.com/Quick/Nimble.git at 7.3.4 (0.04s)
Creating working copy for https://github.com/getGuaka/Run.git
Working copy of https://github.com/getGuaka/Run.git resolved at 0.1.1 (5a2866c)
Creating working copy for https://github.com/Quick/Nimble.git
Working copy of https://github.com/Quick/Nimble.git resolved at 7.3.4
Creating working copy for https://github.com/Quick/Quick.git
Working copy of https://github.com/Quick/Quick.git resolved at 1.3.4
Creating working copy for https://github.com/getGuaka/Prompt.git
Working copy of https://github.com/getGuaka/Prompt.git resolved at 0.1.1
Creating working copy for https://github.com/getGuaka/Args.git
Working copy of https://github.com/getGuaka/Args.git resolved at 0.1.1
warning: '.resolve-product-dependencies': dependency 'run' is not used by any target
Found 3 product dependencies
- Prompt
- Quick
- Nimble
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.1
Building package at path: $PWD
https://github.com/getGuaka/Run.git
https://github.com/getGuaka/Run.git
{
"dependencies" : [
{
"identity" : "prompt",
"requirement" : {
"range" : [
{
"lower_bound" : "0.1.1",
"upper_bound" : "1.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/getGuaka/Prompt.git"
},
{
"identity" : "quick",
"requirement" : {
"range" : [
{
"lower_bound" : "1.3.0",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/Quick/Quick.git"
},
{
"identity" : "nimble",
"requirement" : {
"range" : [
{
"lower_bound" : "7.3.0",
"upper_bound" : "8.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/Quick/Nimble.git"
}
],
"manifest_display_name" : "Run",
"name" : "Run",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
],
"products" : [
{
"name" : "Run",
"targets" : [
"Run"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "RunTests",
"module_type" : "SwiftTarget",
"name" : "RunTests",
"path" : "Tests/RunTests",
"product_dependencies" : [
"Quick",
"Nimble"
],
"sources" : [
"RunnerTests.swift",
"XCTestManifests.swift"
],
"target_dependencies" : [
"Run"
],
"type" : "test"
},
{
"c99name" : "Run",
"module_type" : "SwiftTarget",
"name" : "Run",
"path" : "Sources/Run",
"product_dependencies" : [
"Prompt"
],
"product_memberships" : [
"Run"
],
"sources" : [
"CommandExecutor.swift",
"RunResults.swift",
"Runner.swift",
"RunnerSettings.swift",
"ShortHandRunner.swift",
"TaskPipe.swift"
],
"type" : "library"
}
],
"tools_version" : "4.0"
}
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures
Building for debugging...
[0/4] Write sources
[3/4] Write swift-version-2F0A5646E1D333AE.txt
[5/10] Compiling Args ArgsParser.swift
[6/10] Compiling Args ProcessInfo.swift
[7/10] Compiling Args ArgConvertible.swift
[8/10] Compiling Args Args.swift
[9/10] Compiling Args Argument.swift
[10/10] Emitting module Args
[11/20] Compiling Prompt PromptReader.swift
[12/20] Compiling Prompt PromptPrinter.swift
[13/21] Compiling Prompt Choose.swift
[14/21] Compiling Prompt AskerValidator.swift
[15/21] Compiling Prompt Ask.swift
[16/21] Compiling Prompt Agree.swift
[17/21] Compiling Prompt AgreeSettings.swift
[18/21] Compiling Prompt AskSettings.swift
[19/21] Compiling Prompt ChooseSettings.swift
[20/21] Emitting module Prompt
[21/21] Compiling Prompt PromptSettings.swift
[22/28] Compiling Run ShortHandRunner.swift
[23/28] Compiling Run RunResults.swift
[24/28] Compiling Run RunnerSettings.swift
/Users/admin/builder/spi-builder-workspace/Sources/Run/RunnerSettings.swift:34:23: warning: static property 'None' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
32 |
33 | /// Dont echo anything, this is the default settings
34 | public static var None = EchoSettings(rawValue: 0)
| |- warning: static property 'None' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'None' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'None' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
35 |
36 | /// Echo the stdout from the run command to the terminal
/Users/admin/builder/spi-builder-workspace/Sources/Run/RunnerSettings.swift:37:23: warning: static property 'Stdout' is not concurrency-safe because non-'Sendable' type 'EchoSettings' may have shared mutable state; this is an error in the Swift 6 language mode
23 |
24 | /// Echo settings
25 | public struct EchoSettings: OptionSet {
| `- note: consider making struct 'EchoSettings' conform to the 'Sendable' protocol
26 |
27 | public let rawValue: Int
:
35 |
36 | /// Echo the stdout from the run command to the terminal
37 | public static let Stdout = EchoSettings(rawValue: 1 << 0)
| |- warning: static property 'Stdout' is not concurrency-safe because non-'Sendable' type 'EchoSettings' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'Stdout' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
38 |
39 | /// Echo the stderr from the run command to the terminal
/Users/admin/builder/spi-builder-workspace/Sources/Run/RunnerSettings.swift:40:23: warning: static property 'Stderr' is not concurrency-safe because non-'Sendable' type 'EchoSettings' may have shared mutable state; this is an error in the Swift 6 language mode
23 |
24 | /// Echo settings
25 | public struct EchoSettings: OptionSet {
| `- note: consider making struct 'EchoSettings' conform to the 'Sendable' protocol
26 |
27 | public let rawValue: Int
:
38 |
39 | /// Echo the stderr from the run command to the terminal
40 | public static let Stderr = EchoSettings(rawValue: 1 << 1)
| |- warning: static property 'Stderr' is not concurrency-safe because non-'Sendable' type 'EchoSettings' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'Stderr' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
41 |
42 | /// Echo the command executed to the terminal
/Users/admin/builder/spi-builder-workspace/Sources/Run/RunnerSettings.swift:43:23: warning: static property 'Command' is not concurrency-safe because non-'Sendable' type 'EchoSettings' may have shared mutable state; this is an error in the Swift 6 language mode
23 |
24 | /// Echo settings
25 | public struct EchoSettings: OptionSet {
| `- note: consider making struct 'EchoSettings' conform to the 'Sendable' protocol
26 |
27 | public let rawValue: Int
:
41 |
42 | /// Echo the command executed to the terminal
43 | public static let Command = EchoSettings(rawValue: 1 << 2)
| |- warning: static property 'Command' is not concurrency-safe because non-'Sendable' type 'EchoSettings' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'Command' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
44 | }
45 |
[25/28] Compiling Run TaskPipe.swift
[26/28] Compiling Run Runner.swift
[27/28] Emitting module Run
/Users/admin/builder/spi-builder-workspace/Sources/Run/CommandExecutor.swift:16:16: warning: static property 'currentTaskExecutor' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 | class CommandExecutor {
15 |
16 | static var currentTaskExecutor: TaskExecutor = ActualTaskExecutor()
| |- warning: static property 'currentTaskExecutor' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'currentTaskExecutor' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'currentTaskExecutor' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |
18 | class func execute(_ commandParts: [String]) -> ExecutorReturnValue {
/Users/admin/builder/spi-builder-workspace/Sources/Run/RunnerSettings.swift:34:23: warning: static property 'None' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
32 |
33 | /// Dont echo anything, this is the default settings
34 | public static var None = EchoSettings(rawValue: 0)
| |- warning: static property 'None' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'None' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'None' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
35 |
36 | /// Echo the stdout from the run command to the terminal
/Users/admin/builder/spi-builder-workspace/Sources/Run/RunnerSettings.swift:37:23: warning: static property 'Stdout' is not concurrency-safe because non-'Sendable' type 'EchoSettings' may have shared mutable state; this is an error in the Swift 6 language mode
23 |
24 | /// Echo settings
25 | public struct EchoSettings: OptionSet {
| `- note: consider making struct 'EchoSettings' conform to the 'Sendable' protocol
26 |
27 | public let rawValue: Int
:
35 |
36 | /// Echo the stdout from the run command to the terminal
37 | public static let Stdout = EchoSettings(rawValue: 1 << 0)
| |- warning: static property 'Stdout' is not concurrency-safe because non-'Sendable' type 'EchoSettings' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'Stdout' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
38 |
39 | /// Echo the stderr from the run command to the terminal
/Users/admin/builder/spi-builder-workspace/Sources/Run/RunnerSettings.swift:40:23: warning: static property 'Stderr' is not concurrency-safe because non-'Sendable' type 'EchoSettings' may have shared mutable state; this is an error in the Swift 6 language mode
23 |
24 | /// Echo settings
25 | public struct EchoSettings: OptionSet {
| `- note: consider making struct 'EchoSettings' conform to the 'Sendable' protocol
26 |
27 | public let rawValue: Int
:
38 |
39 | /// Echo the stderr from the run command to the terminal
40 | public static let Stderr = EchoSettings(rawValue: 1 << 1)
| |- warning: static property 'Stderr' is not concurrency-safe because non-'Sendable' type 'EchoSettings' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'Stderr' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
41 |
42 | /// Echo the command executed to the terminal
/Users/admin/builder/spi-builder-workspace/Sources/Run/RunnerSettings.swift:43:23: warning: static property 'Command' is not concurrency-safe because non-'Sendable' type 'EchoSettings' may have shared mutable state; this is an error in the Swift 6 language mode
23 |
24 | /// Echo settings
25 | public struct EchoSettings: OptionSet {
| `- note: consider making struct 'EchoSettings' conform to the 'Sendable' protocol
26 |
27 | public let rawValue: Int
:
41 |
42 | /// Echo the command executed to the terminal
43 | public static let Command = EchoSettings(rawValue: 1 << 2)
| |- warning: static property 'Command' is not concurrency-safe because non-'Sendable' type 'EchoSettings' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'Command' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
44 | }
45 |
[28/28] Compiling Run CommandExecutor.swift
/Users/admin/builder/spi-builder-workspace/Sources/Run/CommandExecutor.swift:16:16: warning: static property 'currentTaskExecutor' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 | class CommandExecutor {
15 |
16 | static var currentTaskExecutor: TaskExecutor = ActualTaskExecutor()
| |- warning: static property 'currentTaskExecutor' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'currentTaskExecutor' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'currentTaskExecutor' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |
18 | class func execute(_ commandParts: [String]) -> ExecutorReturnValue {
/Users/admin/builder/spi-builder-workspace/Sources/Run/CommandExecutor.swift:71:13: warning: variable 'outputPipe' was never mutated; consider changing to 'let' constant
69 | var childFDActions: posix_spawn_file_actions_t = posix_spawn_file_actions_t()
70 | #endif
71 | var outputPipe: [Int32] = [-1, -1]
| `- warning: variable 'outputPipe' was never mutated; consider changing to 'let' constant
72 |
73 | posix_spawn_file_actions_init(&childFDActions)
Build complete! (6.89s)
Build complete.
{
"dependencies" : [
{
"identity" : "prompt",
"requirement" : {
"range" : [
{
"lower_bound" : "0.1.1",
"upper_bound" : "1.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/getGuaka/Prompt.git"
},
{
"identity" : "quick",
"requirement" : {
"range" : [
{
"lower_bound" : "1.3.0",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/Quick/Quick.git"
},
{
"identity" : "nimble",
"requirement" : {
"range" : [
{
"lower_bound" : "7.3.0",
"upper_bound" : "8.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/Quick/Nimble.git"
}
],
"manifest_display_name" : "Run",
"name" : "Run",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
],
"products" : [
{
"name" : "Run",
"targets" : [
"Run"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "RunTests",
"module_type" : "SwiftTarget",
"name" : "RunTests",
"path" : "Tests/RunTests",
"product_dependencies" : [
"Quick",
"Nimble"
],
"sources" : [
"RunnerTests.swift",
"XCTestManifests.swift"
],
"target_dependencies" : [
"Run"
],
"type" : "test"
},
{
"c99name" : "Run",
"module_type" : "SwiftTarget",
"name" : "Run",
"path" : "Sources/Run",
"product_dependencies" : [
"Prompt"
],
"product_memberships" : [
"Run"
],
"sources" : [
"CommandExecutor.swift",
"RunResults.swift",
"Runner.swift",
"RunnerSettings.swift",
"ShortHandRunner.swift",
"TaskPipe.swift"
],
"type" : "library"
}
],
"tools_version" : "4.0"
}
Done.