Build Information
Successful build of JSONDrivenUI, reference 0.4.0 (1cba81
), with Swift 6.0 for macOS (SPM) on 5 Nov 2024 02:19:04 UTC.
Swift 6 data race errors: 2
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/EnesKaraosman/JSONDrivenUI.git
Reference: 0.4.0
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/EnesKaraosman/JSONDrivenUI
* tag 0.4.0 -> FETCH_HEAD
HEAD is now at 1cba81c feat: add macOS12+ support (#2)
Cloned https://github.com/EnesKaraosman/JSONDrivenUI.git
Revision (git rev-parse @):
1cba81c6eaf25179c882d554faee6f4476f9747e
SUCCESS checkout https://github.com/EnesKaraosman/JSONDrivenUI.git at 0.4.0
Fetching https://github.com/onevcat/Kingfisher.git
[1/30999] Fetching kingfisher
Fetched https://github.com/onevcat/Kingfisher.git from cache (5.70s)
Computing version for https://github.com/onevcat/Kingfisher.git
Computed https://github.com/onevcat/Kingfisher.git at 7.12.0 (0.52s)
Creating working copy for https://github.com/onevcat/Kingfisher.git
Working copy of https://github.com/onevcat/Kingfisher.git resolved at 7.12.0
========================================
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": "jsondrivenui",
"name": "JSONDrivenUI",
"url": "https://github.com/EnesKaraosman/JSONDrivenUI.git",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/JSONDrivenUI",
"dependencies": [
{
"identity": "kingfisher",
"name": "Kingfisher",
"url": "https://github.com/onevcat/Kingfisher.git",
"version": "7.12.0",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/Kingfisher",
"dependencies": [
]
}
]
}
]
}
Fetching https://github.com/EnesKaraosman/JSONDrivenUI.git
[1/142] Fetching jsondrivenui
Fetched https://github.com/EnesKaraosman/JSONDrivenUI.git from cache (0.83s)
Fetching https://github.com/onevcat/Kingfisher.git from cache
Fetched https://github.com/onevcat/Kingfisher.git from cache (0.71s)
Computing version for https://github.com/onevcat/Kingfisher.git
Computed https://github.com/onevcat/Kingfisher.git at 7.12.0 (0.04s)
Creating working copy for https://github.com/EnesKaraosman/JSONDrivenUI.git
Working copy of https://github.com/EnesKaraosman/JSONDrivenUI.git resolved at 0.4.0 (1cba81c)
Creating working copy for https://github.com/onevcat/Kingfisher.git
Working copy of https://github.com/onevcat/Kingfisher.git resolved at 7.12.0
warning: '.resolve-product-dependencies': dependency 'jsondrivenui' is not used by any target
Found 1 product dependencies
- Kingfisher
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.0
Building package at path: $PWD
https://github.com/EnesKaraosman/JSONDrivenUI.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
Building for debugging...
[0/4] Write sources
[2/4] Copying PrivacyInfo.xcprivacy
[3/4] Write swift-version--7754E27361AE5C74.txt
[5/63] Emitting module Kingfisher
[6/69] Compiling Kingfisher ImageDataProvider.swift
[7/69] Compiling Kingfisher PHPickerResultImageDataProvider.swift
[8/69] Compiling Kingfisher Resource.swift
[9/69] Compiling Kingfisher Source.swift
[10/69] Compiling Kingfisher KF.swift
[11/69] Compiling Kingfisher KFOptionsSetter.swift
[12/69] Compiling Kingfisher Kingfisher.swift
[13/69] Compiling Kingfisher AuthenticationChallengeResponsable.swift
[14/69] Compiling Kingfisher ImageDataProcessor.swift
[15/69] Compiling Kingfisher ImageDownloader.swift
[16/69] Compiling Kingfisher ImageDownloaderDelegate.swift
[17/69] Compiling Kingfisher ImageModifier.swift
[18/69] Compiling Kingfisher ImagePrefetcher.swift
[19/69] Compiling Kingfisher KingfisherError.swift
[20/69] Compiling Kingfisher KingfisherManager.swift
[21/69] Compiling Kingfisher KingfisherOptionsInfo.swift
[22/69] Compiling Kingfisher Filter.swift
[23/69] Compiling Kingfisher GIFAnimatedImage.swift
[24/69] Compiling Kingfisher GraphicsContext.swift
[25/69] Compiling Kingfisher Image.swift
[26/69] Compiling Kingfisher Runtime.swift
[27/69] Compiling Kingfisher SizeExtensions.swift
[28/69] Compiling Kingfisher String+MD5.swift
[29/69] Compiling Kingfisher AnimatedImageView.swift
[30/69] Compiling Kingfisher Indicator.swift
[31/69] Compiling Kingfisher resource_bundle_accessor.swift
[32/69] Compiling Kingfisher ImageDrawing.swift
[33/69] Compiling Kingfisher ImageFormat.swift
[34/69] Compiling Kingfisher ImageProcessor.swift
[35/69] Compiling Kingfisher ImageProgressive.swift
[36/69] Compiling Kingfisher ImageTransition.swift
[37/69] Compiling Kingfisher Placeholder.swift
[38/69] Compiling Kingfisher ImageContext.swift
[39/69] Compiling Kingfisher KFAnimatedImage.swift
[40/69] Compiling Kingfisher KFImage.swift
[41/69] Compiling Kingfisher KFImageOptions.swift
[42/69] Compiling Kingfisher KFImageProtocol.swift
[43/69] Compiling Kingfisher KFImageRenderer.swift
[44/69] Compiling Kingfisher CacheSerializer.swift
[45/69] Compiling Kingfisher DiskStorage.swift
[46/69] Compiling Kingfisher FormatIndicatedCacheSerializer.swift
[47/69] Compiling Kingfisher ImageCache.swift
[48/69] Compiling Kingfisher MemoryStorage.swift
[49/69] Compiling Kingfisher Storage.swift
[50/69] Compiling Kingfisher CPListItem+Kingfisher.swift
[51/69] Compiling Kingfisher ImageView+Kingfisher.swift
[52/69] Compiling Kingfisher NSButton+Kingfisher.swift
[53/69] Compiling Kingfisher NSTextAttachment+Kingfisher.swift
[54/69] Compiling Kingfisher TVMonogramView+Kingfisher.swift
[55/69] Compiling Kingfisher UIButton+Kingfisher.swift
[56/69] Compiling Kingfisher WKInterfaceImage+Kingfisher.swift
[57/69] Compiling Kingfisher AVAssetImageDataProvider.swift
[58/69] Compiling Kingfisher Box.swift
[59/69] Compiling Kingfisher CallbackQueue.swift
[60/69] Compiling Kingfisher Delegate.swift
[61/69] Compiling Kingfisher DisplayLink.swift
[62/69] Compiling Kingfisher ExtensionHelpers.swift
[63/69] Compiling Kingfisher Result.swift
[64/69] Compiling Kingfisher RedirectHandler.swift
[65/69] Compiling Kingfisher RequestModifier.swift
[66/69] Compiling Kingfisher RetryStrategy.swift
[67/69] Compiling Kingfisher SessionDataTask.swift
[68/69] Compiling Kingfisher SessionDelegate.swift
[69/69] Compiling Kingfisher ImageBinder.swift
[70/81] Compiling JSONDrivenUI Values.swift
[71/81] Compiling JSONDrivenUI ViewMaterial.swift
[72/81] Compiling JSONDrivenUI JSONDataViewProtocol.swift
[73/81] Compiling JSONDrivenUI PresentableProtocol.swift
[74/81] Compiling JSONDrivenUI JSONDataView.swift
/Users/admin/builder/spi-builder-workspace/Sources/JSONDrivenUI/JSONDataView.swift:14:12: warning: main actor-isolated initializer 'init(json:)' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
8 | import SwiftUI
9 |
10 | public struct JSONDataView: View, JSONDataViewProtocol {
| `- note: add '@preconcurrency' to the 'JSONDataViewProtocol' conformance to defer isolation checking to run time
11 |
12 | public var json: Data
13 |
14 | public init(json: Data) {
| |- warning: main actor-isolated initializer 'init(json:)' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
| `- note: add 'nonisolated' to 'init(json:)' to make this initializer not isolated to the actor
15 | self.json = json
16 | }
/Users/admin/builder/spi-builder-workspace/Sources/JSONDrivenUI/Protocols/JSONDataViewProtocol.swift:13:5: note: mark the protocol requirement 'init(json:)' 'async' to allow actor-isolated conformances
11 | var json: Data { get }
12 |
13 | init(json: Data)
| `- note: mark the protocol requirement 'init(json:)' 'async' to allow actor-isolated conformances
14 | }
15 |
/Users/admin/builder/spi-builder-workspace/Sources/JSONDrivenUI/JSONDataView.swift:18:30: warning: main actor-isolated instance method 'toPresentable()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
16 | }
17 |
18 | @ViewBuilder public func toPresentable() -> some View {
| |- warning: main actor-isolated instance method 'toPresentable()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
| `- note: add 'nonisolated' to 'toPresentable()' to make this instance method not isolated to the actor
19 | if let material = try? JSONDecoder().decode(
20 | ViewMaterial.self,
/Users/admin/builder/spi-builder-workspace/Sources/JSONDrivenUI/Protocols/PresentableProtocol.swift:13:10: note: mark the protocol requirement 'toPresentable()' 'async' to allow actor-isolated conformances
11 | associatedtype Content: View
12 |
13 | func toPresentable() -> Content
| `- note: mark the protocol requirement 'toPresentable()' 'async' to allow actor-isolated conformances
14 | }
15 |
[75/81] Compiling JSONDrivenUI ViewProperties.swift
[76/82] Compiling JSONDrivenUI ViewType.swift
[77/82] Compiling JSONDrivenUI View+Extensions.swift
[78/82] Compiling JSONDrivenUI ModifierFactory.swift
[79/82] Compiling JSONDrivenUI ViewFactory.swift
/Users/admin/builder/spi-builder-workspace/Sources/JSONDrivenUI/Factories/ViewFactory.swift:28:17: warning: call to main actor-isolated initializer 'init(axis:content:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
26 |
27 | ScrollView(axis, showsIndicators: showsIndicators) {
28 | AxisBasedStack(axis: axis) {
| `- warning: call to main actor-isolated initializer 'init(axis:content:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
29 | ForEach(subviews) { (subview) in
30 | ViewFactory(material: subview).toPresentable()
/Users/admin/builder/spi-builder-workspace/Sources/JSONDrivenUI/AxisBasedStack.swift:15:5: note: calls to initializer 'init(axis:content:)' from outside of its actor context are implicitly asynchronous
13 | let content: Content
14 |
15 | init(axis: Axis.Set, @ViewBuilder content: () -> Content) {
| `- note: calls to initializer 'init(axis:content:)' from outside of its actor context are implicitly asynchronous
16 | self.axis = axis
17 | self.content = content()
/Users/admin/builder/spi-builder-workspace/Sources/JSONDrivenUI/Factories/ViewFactory.swift:42:13: warning: call to main actor-isolated initializer 'init(_:rowContent:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
38 |
39 | // MARK: - List
40 | @ViewBuilder func list() -> some View {
| `- note: add '@MainActor' to make instance method 'list()' part of global actor 'MainActor'
41 | if let subviews = material.subviews {
42 | List(subviews) {
| `- warning: call to main actor-isolated initializer 'init(_:rowContent:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
43 | ViewFactory(material: $0).toPresentable()
44 | }
SwiftUI.List:4:39: note: calls to initializer 'init(_:rowContent:)' from outside of its actor context are implicitly asynchronous
2 | extension List where SelectionValue == Never {
3 | @MainActor @preconcurrency public init(@ViewBuilder content: () -> Content)
4 | @MainActor @preconcurrency public init<Data, RowContent>(_ data: Data, @ViewBuilder rowContent: @escaping (Data.Element) -> RowContent) where Content == ForEach<Data, Data.Element.ID, RowContent>, Data : RandomAccessCollection, RowContent : View, Data.Element : Identifiable
| `- note: calls to initializer 'init(_:rowContent:)' from outside of its actor context are implicitly asynchronous
5 | @available(iOS 14.0, macOS 11.0, *)
6 | @available(tvOS, unavailable)
/Users/admin/builder/spi-builder-workspace/Sources/JSONDrivenUI/Factories/ViewFactory.swift:151:18: warning: call to main actor-isolated instance method 'resizable(capInsets:resizingMode:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
137 |
138 | // MARK: - Image
139 | @ViewBuilder func image() -> some View {
| `- note: add '@MainActor' to make instance method 'image()' part of global actor 'MainActor'
140 | if let systemIconName = material.values?.systemIconName {
141 | Image(systemName: systemIconName)
:
149 | } else if let remoteUrl = material.values?.imageUrl {
150 | KFImage(URL(string: remoteUrl))
151 | .resizable()
| `- warning: call to main actor-isolated instance method 'resizable(capInsets:resizingMode:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
152 | .scaledToFit()
153 | } else {
/Users/admin/builder/spi-builder-workspace/.build/checkouts/Kingfisher/Sources/SwiftUI/KFImage.swift:51:17: note: calls to instance method 'resizable(capInsets:resizingMode:)' from outside of its actor context are implicitly asynchronous
49 | extension KFImage {
50 |
51 | public func resizable(
| `- note: calls to instance method 'resizable(capInsets:resizingMode:)' from outside of its actor context are implicitly asynchronous
52 | capInsets: EdgeInsets = EdgeInsets(),
53 | resizingMode: Image.ResizingMode = .stretch) -> KFImage
/Users/admin/builder/spi-builder-workspace/Sources/JSONDrivenUI/Factories/ViewFactory.swift:161:9: warning: call to main actor-isolated initializer 'init(minLength:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
157 |
158 | // MARK: - Spacer
159 | @ViewBuilder func spacer() -> some View {
| `- note: add '@MainActor' to make instance method 'spacer()' part of global actor 'MainActor'
160 | let minLength = material.properties?.minLength.toCGFloat()
161 | Spacer(minLength: minLength)
| `- warning: call to main actor-isolated initializer 'init(minLength:)' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
162 | }
163 |
SwiftUICore.Spacer:4:50: note: calls to initializer 'init(minLength:)' from outside of its actor context are implicitly asynchronous
2 | @MainActor @frozen @preconcurrency public struct Spacer {
3 | @MainActor @preconcurrency public var minLength: CGFloat?
4 | @MainActor @inlinable @preconcurrency public init(minLength: CGFloat? = nil)
| `- note: calls to initializer 'init(minLength:)' from outside of its actor context are implicitly asynchronous
5 | @available(iOS 13.0, tvOS 13.0, watchOS 6.0, macOS 10.15, *)
6 | public typealias Body = Never
/Users/admin/builder/spi-builder-workspace/Sources/JSONDrivenUI/Factories/ViewFactory.swift:187:42: warning: call to main actor-isolated instance method 'embedInAnyView()' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
181 | }
182 |
183 | @ViewBuilder func toPresentable() -> some View {
| `- note: add '@MainActor' to make instance method 'toPresentable()' part of global actor 'MainActor'
184 |
185 | let prop = material.properties
186 |
187 | let uiComponent = buildDefault().embedInAnyView()
| `- warning: call to main actor-isolated instance method 'embedInAnyView()' in a synchronous nonisolated context; this is an error in the Swift 6 language mode
188 | uiComponent
189 | .modifier(ModifierFactory.PaddingModifier(padding: prop?.padding.toCGFloat()))
/Users/admin/builder/spi-builder-workspace/Sources/JSONDrivenUI/Extensions/View+Extensions.swift:12:10: note: calls to instance method 'embedInAnyView()' from outside of its actor context are implicitly asynchronous
10 | internal extension View {
11 |
12 | func embedInAnyView() -> AnyView {
| `- note: calls to instance method 'embedInAnyView()' from outside of its actor context are implicitly asynchronous
13 | AnyView(self)
14 | }
/Users/admin/builder/spi-builder-workspace/Sources/JSONDrivenUI/Factories/ViewFactory.swift:28:17: warning: sending task-isolated value of type '() -> ForEach<[ViewMaterial], UUID, some View>' with later accesses to main actor-isolated context risks causing data races; this is an error in the Swift 6 language mode
26 |
27 | ScrollView(axis, showsIndicators: showsIndicators) {
28 | AxisBasedStack(axis: axis) {
| `- warning: sending task-isolated value of type '() -> ForEach<[ViewMaterial], UUID, some View>' with later accesses to main actor-isolated context risks causing data races; this is an error in the Swift 6 language mode
29 | ForEach(subviews) { (subview) in
30 | ViewFactory(material: subview).toPresentable()
/Users/admin/builder/spi-builder-workspace/Sources/JSONDrivenUI/Factories/ViewFactory.swift:42:13: warning: sending 'subviews' risks causing data races; this is an error in the Swift 6 language mode
40 | @ViewBuilder func list() -> some View {
41 | if let subviews = material.subviews {
42 | List(subviews) {
| |- warning: sending 'subviews' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'subviews' to main actor-isolated callee risks causing data races between main actor-isolated and task-isolated uses
43 | ViewFactory(material: $0).toPresentable()
44 | }
/Users/admin/builder/spi-builder-workspace/Sources/JSONDrivenUI/Factories/ViewFactory.swift:187:42: warning: sending task-isolated value of type 'some View' with later accesses to main actor-isolated context risks causing data races; this is an error in the Swift 6 language mode
185 | let prop = material.properties
186 |
187 | let uiComponent = buildDefault().embedInAnyView()
| `- warning: sending task-isolated value of type 'some View' with later accesses to main actor-isolated context risks causing data races; this is an error in the Swift 6 language mode
188 | uiComponent
189 | .modifier(ModifierFactory.PaddingModifier(padding: prop?.padding.toCGFloat()))
[80/82] Emitting module JSONDrivenUI
/Users/admin/builder/spi-builder-workspace/Sources/JSONDrivenUI/JSONDataView.swift:14:12: warning: main actor-isolated initializer 'init(json:)' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
8 | import SwiftUI
9 |
10 | public struct JSONDataView: View, JSONDataViewProtocol {
| `- note: add '@preconcurrency' to the 'JSONDataViewProtocol' conformance to defer isolation checking to run time
11 |
12 | public var json: Data
13 |
14 | public init(json: Data) {
| |- warning: main actor-isolated initializer 'init(json:)' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
| `- note: add 'nonisolated' to 'init(json:)' to make this initializer not isolated to the actor
15 | self.json = json
16 | }
/Users/admin/builder/spi-builder-workspace/Sources/JSONDrivenUI/Protocols/JSONDataViewProtocol.swift:13:5: note: mark the protocol requirement 'init(json:)' 'async' to allow actor-isolated conformances
11 | var json: Data { get }
12 |
13 | init(json: Data)
| `- note: mark the protocol requirement 'init(json:)' 'async' to allow actor-isolated conformances
14 | }
15 |
/Users/admin/builder/spi-builder-workspace/Sources/JSONDrivenUI/JSONDataView.swift:18:30: warning: main actor-isolated instance method 'toPresentable()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
16 | }
17 |
18 | @ViewBuilder public func toPresentable() -> some View {
| |- warning: main actor-isolated instance method 'toPresentable()' cannot be used to satisfy nonisolated protocol requirement; this is an error in the Swift 6 language mode
| `- note: add 'nonisolated' to 'toPresentable()' to make this instance method not isolated to the actor
19 | if let material = try? JSONDecoder().decode(
20 | ViewMaterial.self,
/Users/admin/builder/spi-builder-workspace/Sources/JSONDrivenUI/Protocols/PresentableProtocol.swift:13:10: note: mark the protocol requirement 'toPresentable()' 'async' to allow actor-isolated conformances
11 | associatedtype Content: View
12 |
13 | func toPresentable() -> Content
| `- note: mark the protocol requirement 'toPresentable()' 'async' to allow actor-isolated conformances
14 | }
15 |
[81/82] Compiling JSONDrivenUI AxisBasedStack.swift
[82/82] Compiling JSONDrivenUI Color+Extensions.swift
Build complete! (35.26s)
warning: 'kingfisher': found 1 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
/Users/admin/builder/spi-builder-workspace/.build/checkouts/Kingfisher/Sources/Info.plist
Build complete.
{
"dependencies" : [
{
"identity" : "kingfisher",
"requirement" : {
"range" : [
{
"lower_bound" : "7.11.0",
"upper_bound" : "8.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/onevcat/Kingfisher.git"
}
],
"manifest_display_name" : "JSONDrivenUI",
"name" : "JSONDrivenUI",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "14.0"
},
{
"name" : "macos",
"version" : "12.0"
}
],
"products" : [
{
"name" : "JSONDrivenUI",
"targets" : [
"JSONDrivenUI"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "JSONDrivenUITests",
"module_type" : "SwiftTarget",
"name" : "JSONDrivenUITests",
"path" : "Tests/JSONDrivenUITests",
"sources" : [
"JSONDrivenUITests.swift",
"XCTestManifests.swift"
],
"target_dependencies" : [
"JSONDrivenUI"
],
"type" : "test"
},
{
"c99name" : "JSONDrivenUI",
"module_type" : "SwiftTarget",
"name" : "JSONDrivenUI",
"path" : "Sources/JSONDrivenUI",
"product_dependencies" : [
"Kingfisher"
],
"product_memberships" : [
"JSONDrivenUI"
],
"sources" : [
"AxisBasedStack.swift",
"Extensions/Color+Extensions.swift",
"Extensions/View+Extensions.swift",
"Factories/ModifierFactory.swift",
"Factories/ViewFactory.swift",
"JSONDataView.swift",
"Protocols/JSONDataViewProtocol.swift",
"Protocols/PresentableProtocol.swift",
"Values.swift",
"ViewMaterial.swift",
"ViewProperties.swift",
"ViewType.swift"
],
"type" : "library"
}
],
"tools_version" : "5.8"
}
Done.