The Swift Package Index logo.Swift Package Index

Build Information

Successful build of ETTrace, reference v1.1.1 (01e1b0), with Swift 6.3 for macOS (SPM) on 15 Apr 2026 05:37:20 UTC.

Swift 6 data race errors: 0

Build Command

env DEVELOPER_DIR=/Applications/Xcode-26.4.0.app xcrun swift build --arch arm64

Build Log

========================================
RunAll
========================================
Builder version: 4.70.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/EmergeTools/ETTrace.git
Reference: v1.1.1
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/EmergeTools/ETTrace
 * tag               v1.1.1     -> FETCH_HEAD
HEAD is now at 01e1b0f Fix memory leak (#102)
Cloned https://github.com/EmergeTools/ETTrace.git
Revision (git rev-parse @):
01e1b0f7b71acac9b21bfbd47bd5f4ab480826db
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/EmergeTools/ETTrace.git at v1.1.1
Fetching https://github.com/EmergeTools/peertalk.git
Fetching https://github.com/httpswift/swifter.git
Fetching https://github.com/apple/swift-argument-parser.git
[1/6050] Fetching swifter
[62/6732] Fetching swifter, peertalk
[857/24255] Fetching swifter, peertalk, swift-argument-parser
Fetched https://github.com/httpswift/swifter.git from cache (1.71s)
Fetched https://github.com/apple/swift-argument-parser.git from cache (1.71s)
Fetched https://github.com/EmergeTools/peertalk.git from cache (1.71s)
Computing version for https://github.com/httpswift/swifter.git
Computed https://github.com/httpswift/swifter.git at 1.5.0 (4.95s)
Computing version for https://github.com/apple/swift-argument-parser.git
Computed https://github.com/apple/swift-argument-parser.git at 1.2.2 (0.73s)
Computing version for https://github.com/EmergeTools/peertalk.git
Computed https://github.com/EmergeTools/peertalk.git at 1.0.0 (0.68s)
Creating working copy for https://github.com/EmergeTools/peertalk.git
Working copy of https://github.com/EmergeTools/peertalk.git resolved at 1.0.0
Creating working copy for https://github.com/httpswift/swifter.git
Working copy of https://github.com/httpswift/swifter.git resolved at 1.5.0
Creating working copy for https://github.com/apple/swift-argument-parser.git
Working copy of https://github.com/apple/swift-argument-parser.git resolved at 1.2.2
========================================
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",
  "traits": [
    "default"
  ],
  "dependencies": [
    {
      "identity": "ettrace",
      "name": "ETTrace",
      "url": "https://github.com/EmergeTools/ETTrace.git",
      "version": "unspecified",
      "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/ETTrace",
      "traits": [
        "default"
      ],
      "dependencies": [
        {
          "identity": "peertalk",
          "name": "Peertalk",
          "url": "https://github.com/EmergeTools/peertalk.git",
          "version": "1.0.0",
          "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/peertalk",
          "traits": [
            "default"
          ],
          "dependencies": [
          ]
        },
        {
          "identity": "swift-argument-parser",
          "name": "swift-argument-parser",
          "url": "https://github.com/apple/swift-argument-parser.git",
          "version": "1.7.1",
          "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/swift-argument-parser",
          "traits": [
            "default"
          ],
          "dependencies": [
          ]
        },
        {
          "identity": "swifter",
          "name": "Swifter",
          "url": "https://github.com/httpswift/swifter.git",
          "version": "1.5.0",
          "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/swifter",
          "traits": [
            "default"
          ],
          "dependencies": [
          ]
        }
      ]
    }
  ]
}
Fetching https://github.com/EmergeTools/ETTrace.git
[1/1345] Fetching ettrace
Fetched https://github.com/EmergeTools/ETTrace.git from cache (1.22s)
Fetching https://github.com/EmergeTools/peertalk.git from cache
Fetching https://github.com/httpswift/swifter.git from cache
Fetching https://github.com/apple/swift-argument-parser.git from cache
Fetched https://github.com/apple/swift-argument-parser.git from cache (0.56s)
Fetched https://github.com/EmergeTools/peertalk.git from cache (0.56s)
Fetched https://github.com/httpswift/swifter.git from cache (0.56s)
Computing version for https://github.com/httpswift/swifter.git
Computed https://github.com/httpswift/swifter.git at 1.5.0 (0.63s)
Computing version for https://github.com/EmergeTools/peertalk.git
Computed https://github.com/EmergeTools/peertalk.git at 1.0.0 (0.03s)
Computing version for https://github.com/apple/swift-argument-parser.git
Computed https://github.com/apple/swift-argument-parser.git at 1.7.1 (0.62s)
Creating working copy for https://github.com/EmergeTools/ETTrace.git
Working copy of https://github.com/EmergeTools/ETTrace.git resolved at v1.1.1 (01e1b0f)
Creating working copy for https://github.com/EmergeTools/peertalk.git
Working copy of https://github.com/EmergeTools/peertalk.git resolved at 1.0.0
Creating working copy for https://github.com/apple/swift-argument-parser.git
Working copy of https://github.com/apple/swift-argument-parser.git resolved at 1.7.1
Creating working copy for https://github.com/httpswift/swifter.git
Working copy of https://github.com/httpswift/swifter.git resolved at 1.5.0
Found 3 product dependencies
  - Peertalk
  - swift-argument-parser
  - Swifter
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.3
Building package at path:  $PWD
https://github.com/EmergeTools/ETTrace.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-26.4.0.app xcrun swift build --arch arm64
[1/1] Compiling plugin GenerateManual
Building for debugging...
[1/34] Write swift-version--6988338F2F200930.txt
[2/34] Compiling FIRCLSUnwind.c
[3/34] Compiling FIRCLSInternalLogging.c
[4/34] Compiling FIRCLSUnwind_x86.c
[5/34] Write sources
[8/34] Compiling FIRCLSThreadState.c
[9/34] Compiling FIRCLSUnwind_arm.c
[10/53] Compiling FIRCLSEmerge.c
[11/53] Write sources
[12/53] Write ETTraceRunner-entitlement.plist
[13/53] Write sources
/Users/admin/builder/spi-builder-workspace/ETTrace/ETTrace/EMGChannelListener.m:121:95: warning: incompatible pointer types sending 'dispatch_data_t' (aka 'NSObject<OS_dispatch_data> *') to parameter of type 'NSData * _Nullable' [-Wincompatible-pointer-types]
  121 |     [self.peerChannel sendFrameOfType:PTFrameTypeResultsMetadata tag:PTFrameNoTag withPayload:dataFrame callback:nil];
      |                                                                                               ^~~~~~~~~
/Users/admin/builder/spi-builder-workspace/.build/checkouts/peertalk/peertalk/public/PTChannel.h:72:94: note: passing argument to parameter 'payload' here
   72 | - (void)sendFrameOfType:(uint32_t)frameType tag:(uint32_t)tag withPayload:(nullable NSData *)payload callback:(nullable void(^)(NSError * _Nullable error))callback NS_SWIFT_NAME(sendFrame(type:tag:payload:callback:));
      |                                                                                              ^
1 warning generated.
[15/59] Compiling ETTrace EMGChannelListener.m
[16/59] Compiling FIRCLSLogger.m
[16/59] Write sources
[18/59] Compiling CommunicationFrame EMGDummyEmptyClass.m
[19/59] Compiling Peertalk PTChannel.m
[20/59] Compiling ETTrace EMGPerfAnalysis.mm
[21/61] Compiling Peertalk PTUSBHub.m
[22/61] Compiling FIRCLSUtility.m
[23/61] Compiling Peertalk PTProtocol.m
[25/64] Compiling ArgumentParserToolInfo ToolInfo.swift
[26/64] Emitting module ArgumentParserToolInfo
[27/102] Compiling ArgumentParser AsyncParsableCommand.swift
[28/102] Compiling ArgumentParser CommandConfiguration.swift
[29/102] Compiling ArgumentParser EnumerableFlag.swift
[30/102] Compiling ArgumentParser ExpressibleByArgument.swift
[31/106] Compiling ArgumentParser ArgumentHelp.swift
[32/106] Compiling ArgumentParser ArgumentVisibility.swift
[33/106] Compiling ArgumentParser CompletionKind.swift
[34/106] Compiling ArgumentParser Errors.swift
[35/106] Emitting module ArgumentParser
[36/106] Compiling ArgumentParser Flag.swift
[37/106] Compiling ArgumentParser NameSpecification.swift
[38/106] Compiling ArgumentParser Option.swift
[39/106] Compiling ArgumentParser OptionGroup.swift
[40/106] Compiling ArgumentParser BashCompletionsGenerator.swift
[41/106] Compiling ArgumentParser CompletionsGenerator.swift
[42/106] Compiling ArgumentParser FishCompletionsGenerator.swift
[43/106] Compiling ArgumentParser ZshCompletionsGenerator.swift
[44/106] Compiling ArgumentParser Argument.swift
[45/106] Compiling ArgumentParser Platform.swift
[46/106] Compiling ArgumentParser SequenceExtensions.swift
[47/106] Compiling ArgumentParser StringExtensions.swift
[48/106] Compiling ArgumentParser Tree.swift
[49/106] Compiling ArgumentParser ArgumentDefinition.swift
[50/106] Compiling ArgumentParser ArgumentSet.swift
[51/106] Compiling ArgumentParser CommandParser.swift
[52/106] Compiling ArgumentParser InputKey.swift
[53/106] Compiling ArgumentParser ArgumentDecoder.swift
[54/106] Compiling ArgumentParser InputOrigin.swift
[55/108] Compiling ETModels ThreadNode.swift
[56/108] Compiling ArgumentParser HelpGenerator.swift
[57/108] Compiling ArgumentParser MessageInfo.swift
[58/108] Compiling ArgumentParser UsageGenerator.swift
[59/108] Compiling ArgumentParser CollectionExtensions.swift
[60/108] Compiling ETModels Sample.swift
[61/108] Compiling ETModels Flamegraph.swift
[62/108] Compiling ETModels FlamegraphEvent.swift
[63/108] Emitting module ETModels
[64/108] Compiling ETModels FlameNode.swift
[65/108] Compiling ArgumentParser Name.swift
[66/108] Compiling ArgumentParser Parsed.swift
[69/108] Compiling ArgumentParser ParsedValues.swift
[70/108] Compiling ArgumentParser ParserError.swift
[73/108] Compiling ArgumentParser ParsableArgumentsValidation.swift
[74/108] Compiling ArgumentParser ParsableCommand.swift
[79/108] Emitting module Swifter
[81/108] Compiling ArgumentParser ParsableArguments.swift
[82/108] Compiling TracerSwift UnsafeRawPointer+Commands.swift
[83/108] Compiling TracerSwift ThreadHelper.swift
[84/108] Emitting module TracerSwift
[94/108] Compiling Swifter String+SHA1.swift
[95/108] Compiling Swifter WebSockets.swift
[96/108] Compiling ArgumentParser HelpCommand.swift
[96/113] Compiling Tracer EMGTracer+PrintThreads.m
[97/113] Compiling JSONWrapper JSONWrapper.m
[100/113] Compiling Tracer EMGWriteLibraries.m
[101/113] Compiling Tracer EMGStackTraceRecorder.cpp
/Users/admin/builder/spi-builder-workspace/ETTrace/Tracer/EMGTracer.mm:105:24: warning: variable length arrays in C++ are a Clang extension [-Wvla-cxx-extension]
  105 |     u_char buildBuffer[bufferSize];
      |                        ^~~~~~~~~~
/Users/admin/builder/spi-builder-workspace/ETTrace/Tracer/EMGTracer.mm:105:24: note: read of non-const variable 'bufferSize' is not allowed in a constant expression
/Users/admin/builder/spi-builder-workspace/ETTrace/Tracer/EMGTracer.mm:98:12: note: declared here
   98 |     size_t bufferSize = 0;
      |            ^
1 warning generated.
[102/113] Compiling Tracer EMGTracer.mm
[103/113] Write Objects.LinkFileList
[104/113] Linking libETTrace.dylib
[106/113] Compiling Symbolicator FlamegraphGenerator.swift
[107/113] Compiling Symbolicator Models.swift
[108/113] Compiling Symbolicator Symbolicator.swift
[109/113] Compiling Symbolicator Utils.swift
[110/113] Emitting module Symbolicator
[111/122] Compiling ETTraceRunner ETTrace.swift
[112/122] Compiling ETTraceRunner CommunicationChannel.swift
/Users/admin/builder/spi-builder-workspace/ETTrace/ETTraceRunner/Devices/CommunicationChannel.swift:36:12: warning: capture of 'self' with non-Sendable type 'CommunicationChannel?' in a '@Sendable' closure [#SendableClosureCaptures]
 10 | import Peertalk
 11 |
 12 | class CommunicationChannel: NSObject {
    |       `- note: class 'CommunicationChannel' does not conform to the 'Sendable' protocol
 13 |
 14 |   lazy var channel = PTChannel(protocol: nil, delegate: self)
    :
 34 |     return await withCheckedContinuation { continuation in
 35 |       DispatchQueue.main.async { [weak self] in
 36 |         if self?.reportGenerated == true {
    |            `- warning: capture of 'self' with non-Sendable type 'CommunicationChannel?' in a '@Sendable' closure [#SendableClosureCaptures]
 37 |           continuation.resume()
 38 |         } else {
/Users/admin/builder/spi-builder-workspace/ETTrace/ETTraceRunner/Devices/CommunicationChannel.swift:48:26: warning: capture of 'self' with non-Sendable type 'CommunicationChannel?' in a '@Sendable' closure [#SendableClosureCaptures]
 10 | import Peertalk
 11 |
 12 | class CommunicationChannel: NSObject {
    |       `- note: class 'CommunicationChannel' does not conform to the 'Sendable' protocol
 13 |
 14 |   lazy var channel = PTChannel(protocol: nil, delegate: self)
    :
 46 |     return await withCheckedContinuation{ continuation in
 47 |       DispatchQueue.main.async { [weak self] in
 48 |         guard let self = self else { return }
    |                          `- warning: capture of 'self' with non-Sendable type 'CommunicationChannel?' in a '@Sendable' closure [#SendableClosureCaptures]
 49 |
 50 |         if self.resultsReceived == true {
[#SendableClosureCaptures]: <https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures>
[113/122] Compiling ETTraceRunner DeviceManager.swift
[114/122] Compiling ETTraceRunner SimulatorDeviceManager.swift
[115/122] Compiling ETTraceRunner main.swift
[116/122] Emitting module ETTraceRunner
[117/122] Compiling ETTraceRunner ResponseModel.swift
[118/122] Compiling ETTraceRunner PhysicalDeviceManager.swift
/Users/admin/builder/spi-builder-workspace/ETTrace/ETTraceRunner/Devices/PhysicalDeviceManager.swift:49:24: warning: capture of 'self' with non-Sendable type 'PhysicalDevicemanager?' in a '@Sendable' closure [#SendableClosureCaptures]
15 | }
16 |
17 | class PhysicalDevicemanager: DeviceManager {
   |       `- note: class 'PhysicalDevicemanager' does not conform to the 'Sendable' protocol
18 |
19 |     var communicationChannel: CommunicationChannel
   :
47 |               } else {
48 |                 observer = NotificationCenter.default.addObserver(forName:.deviceDidAttach, object: usbHub, queue: nil) {[weak self] notification in
49 |                     if self?.verbose == true {
   |                        `- warning: capture of 'self' with non-Sendable type 'PhysicalDevicemanager?' in a '@Sendable' closure [#SendableClosureCaptures]
50 |                       print("Device did attach notification")
51 |                     }
/Users/admin/builder/spi-builder-workspace/ETTrace/ETTraceRunner/Devices/PhysicalDeviceManager.swift:57:118: warning: capture of 'usbHub' with non-Sendable type 'PTUSBHub' in a '@Sendable' closure [#SendableClosureCaptures]
55 |                     self?.deviceID = deviceID
56 |
57 |                     NotificationCenter.default.removeObserver(self?.observer as Any, name: .deviceDidAttach, object: usbHub)
   |                                                                                                                      `- warning: capture of 'usbHub' with non-Sendable type 'PTUSBHub' in a '@Sendable' closure [#SendableClosureCaptures]
58 |
59 |                     self?.connect(withId: deviceID, usbHub: usbHub, continuation: continuation)
/Users/admin/builder/spi-builder-workspace/.build/checkouts/peertalk/peertalk/public/PTUSBHub.h:47:12: note: class 'PTUSBHub' does not conform to the 'Sendable' protocol
45 | } PTUSBHubError;
46 |
47 | @interface PTUSBHub : NSObject
   |            `- note: class 'PTUSBHub' does not conform to the 'Sendable' protocol
48 |
49 | // Shared, implicitly opened hub.
/Users/admin/builder/spi-builder-workspace/ETTrace/ETTraceRunner/Devices/PhysicalDeviceManager.swift:9:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Peertalk'
 7 |
 8 | import Foundation
 9 | import Peertalk
   | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Peertalk'
10 | import CommunicationFrame
11 |
[#SendableClosureCaptures]: <https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures>
[119/122] Compiling ETTraceRunner RunnerHelper.swift
[119/122] Write Objects.LinkFileList
[120/122] Linking ETTraceRunner
[121/122] Applying ETTraceRunner
Build complete! (18.98s)
Build complete.
{
  "cxx_language_standard" : "c++17",
  "dependencies" : [
    {
      "identity" : "peertalk",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.0.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/EmergeTools/peertalk.git"
    },
    {
      "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.git"
    },
    {
      "identity" : "swifter",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.5.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/httpswift/swifter.git"
    }
  ],
  "manifest_display_name" : "ETTrace",
  "name" : "ETTrace",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "13.0"
    },
    {
      "name" : "macos",
      "version" : "12.0"
    },
    {
      "name" : "tvos",
      "version" : "13.0"
    },
    {
      "name" : "visionos",
      "version" : "1.0"
    }
  ],
  "products" : [
    {
      "name" : "ETTrace",
      "targets" : [
        "ETTrace"
      ],
      "type" : {
        "library" : [
          "dynamic"
        ]
      }
    },
    {
      "name" : "Tracer",
      "targets" : [
        "Tracer"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "Symbolicator",
      "targets" : [
        "Symbolicator"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "ETTraceRunner",
      "targets" : [
        "ETTraceRunner"
      ],
      "type" : {
        "executable" : null
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "Unwinding",
      "module_type" : "ClangTarget",
      "name" : "Unwinding",
      "path" : "Unwinding/Crashlytics",
      "product_memberships" : [
        "ETTrace",
        "Tracer"
      ],
      "sources" : [
        "Crashlytics/Components/FIRCLSEmerge.c",
        "Crashlytics/Helpers/FIRCLSInternalLogging.c",
        "Crashlytics/Helpers/FIRCLSLogger.m",
        "Crashlytics/Helpers/FIRCLSThreadState.c",
        "Crashlytics/Helpers/FIRCLSUtility.m",
        "Crashlytics/Unwind/FIRCLSUnwind.c",
        "Crashlytics/Unwind/FIRCLSUnwind_arm.c",
        "Crashlytics/Unwind/FIRCLSUnwind_x86.c"
      ],
      "type" : "library"
    },
    {
      "c99name" : "TracerSwift",
      "module_type" : "SwiftTarget",
      "name" : "TracerSwift",
      "path" : "ETTrace/TracerSwift",
      "product_memberships" : [
        "ETTrace",
        "Tracer"
      ],
      "sources" : [
        "ThreadHelper.swift",
        "UnsafeRawPointer+Commands.swift"
      ],
      "target_dependencies" : [
        "Unwinding"
      ],
      "type" : "library"
    },
    {
      "c99name" : "Tracer",
      "module_type" : "ClangTarget",
      "name" : "Tracer",
      "path" : "ETTrace/Tracer",
      "product_memberships" : [
        "ETTrace",
        "Tracer"
      ],
      "sources" : [
        "EMGStackTraceRecorder.cpp",
        "EMGTracer+PrintThreads.m",
        "EMGTracer.mm",
        "EMGWriteLibraries.m"
      ],
      "target_dependencies" : [
        "Unwinding",
        "TracerSwift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "Symbolicator",
      "module_type" : "SwiftTarget",
      "name" : "Symbolicator",
      "path" : "ETTrace/Symbolicator",
      "product_memberships" : [
        "Symbolicator",
        "ETTraceRunner"
      ],
      "sources" : [
        "FlamegraphGenerator.swift",
        "Models.swift",
        "Symbolicator.swift",
        "Utils.swift"
      ],
      "target_dependencies" : [
        "ETModels"
      ],
      "type" : "library"
    },
    {
      "c99name" : "JSONWrapper",
      "module_type" : "ClangTarget",
      "name" : "JSONWrapper",
      "path" : "ETTrace/JSONWrapper",
      "product_memberships" : [
        "ETTraceRunner"
      ],
      "sources" : [
        "JSONWrapper.m"
      ],
      "target_dependencies" : [
        "ETModels"
      ],
      "type" : "library"
    },
    {
      "c99name" : "ETTraceRunner",
      "module_type" : "SwiftTarget",
      "name" : "ETTraceRunner",
      "path" : "ETTrace/ETTraceRunner",
      "product_dependencies" : [
        "Peertalk",
        "ArgumentParser",
        "Swifter"
      ],
      "product_memberships" : [
        "ETTraceRunner"
      ],
      "sources" : [
        "Devices/CommunicationChannel.swift",
        "Devices/DeviceManager.swift",
        "Devices/PhysicalDeviceManager.swift",
        "Devices/SimulatorDeviceManager.swift",
        "ETTrace.swift",
        "ResponseModels/ResponseModel.swift",
        "RunnerHelper.swift",
        "main.swift"
      ],
      "target_dependencies" : [
        "CommunicationFrame",
        "JSONWrapper",
        "ETModels",
        "Symbolicator"
      ],
      "type" : "executable"
    },
    {
      "c99name" : "ETTrace",
      "module_type" : "ClangTarget",
      "name" : "ETTrace",
      "path" : "ETTrace/ETTrace",
      "product_dependencies" : [
        "Peertalk"
      ],
      "product_memberships" : [
        "ETTrace"
      ],
      "sources" : [
        "EMGChannelListener.m",
        "EMGPerfAnalysis.mm"
      ],
      "target_dependencies" : [
        "Tracer",
        "CommunicationFrame"
      ],
      "type" : "library"
    },
    {
      "c99name" : "ETModels",
      "module_type" : "SwiftTarget",
      "name" : "ETModels",
      "path" : "ETTrace/ETModels",
      "product_memberships" : [
        "Symbolicator",
        "ETTraceRunner"
      ],
      "sources" : [
        "FlameNode.swift",
        "Flamegraph.swift",
        "FlamegraphEvent.swift",
        "Sample.swift",
        "ThreadNode.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "CommunicationFrame",
      "module_type" : "ClangTarget",
      "name" : "CommunicationFrame",
      "path" : "ETTrace/CommunicationFrame",
      "product_memberships" : [
        "ETTrace",
        "ETTraceRunner"
      ],
      "sources" : [
        "EMGDummyEmptyClass.m"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.9"
}
Done.