Build Information
Successful build of forensiclens, reference v2.1.0 (58abb0), with Swift 6.4 for macOS (SPM) on 13 Oct 2026 12:34:51 UTC.
Swift 6 data race errors: 0
Build Command
env DEVELOPER_DIR=/Applications/Xcode-27.0.0.app xcrun swift build --arch arm64Build Log
========================================
RunAll
========================================
Builder version: 5.1.2
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/Deipedra34/ForensicLens.git
Reference: v2.1.0
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/Deipedra34/ForensicLens
* tag v2.1.0 -> FETCH_HEAD
HEAD is now at 58abb0d Add rotation/scale-tolerant clone detection via feature matching and RANSAC
Cloned https://github.com/Deipedra34/ForensicLens.git
Revision (git rev-parse @):
58abb0dfe6a5e0b171886ed5f31c6a2b3be33f00
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/Deipedra34/ForensicLens.git at v2.1.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",
"traits": [
"default"
],
"dependencies": [
{
"identity": "forensiclens",
"name": "forensiclens",
"url": "https://github.com/Deipedra34/ForensicLens.git",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/ForensicLens",
"traits": [
"default"
],
"dependencies": [
]
}
]
}
Fetching https://github.com/Deipedra34/ForensicLens.git
[1/444] Fetching forensiclens
Fetched https://github.com/Deipedra34/ForensicLens.git (1.05s)
Creating working copy for https://github.com/Deipedra34/ForensicLens.git
Working copy of https://github.com/Deipedra34/ForensicLens.git resolved at v2.1.0 (58abb0d)
Found 0 product dependencies
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.4
Building package at path: $PWD
https://github.com/Deipedra34/ForensicLens.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-27.0.0.app xcrun swift build --arch arm64
Building for debugging...
[Computing dependencies]
[Pre-planning 1 / 328]
[Planning deferred tasks]
[67 / 139]
[70 / 141] ImageDecoding
[79 / 160]
[86 / 160] ImageDecoding
[94 / 161]
[97 / 161] CStbImage
[98 / 161] ImageDecoding
[100 / 161] BenchmarkReporting
[107 / 205]
[112 / 205]
[115 / 205]
[116 / 205]
[120 / 205]
[122 / 205]
[125 / 205]
[128 / 205]
[130 / 205]
[131 / 205]
[142 / 205] ForensicLens
[143 / 205] BenchmarkReporting
[160 / 205]
[162 / 207]
[163 / 208]
[166 / 213] forensiclens-benchmark-product
[168 / 218] forensiclens-readme-updater-product
[173 / 218] HTMLReporting
[191 / 219] ForensicLens-product
[191 / 219] HTMLReporting
[193 / 219] HTMLReporting
[202 / 224] BatchProcessing
[215 / 226] BatchProcessing
[216 / 226] forensiclens-cli-product
[227 / 238] forensiclens-eval-product
[230 / 238] forensiclens-cli-product
[232 / 238] forensiclens-eval-product
[234 / 238] forensiclens-cli-product
Build complete! (10.47 sec)
Build complete.
{
"dependencies" : [
],
"manifest_display_name" : "forensiclens",
"name" : "forensiclens",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "12.0"
}
],
"products" : [
{
"name" : "ForensicLens",
"targets" : [
"ForensicLens"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "forensiclens-cli",
"targets" : [
"forensiclens-cli"
],
"type" : {
"executable" : null
}
},
{
"name" : "forensiclens-eval",
"targets" : [
"forensiclens-eval"
],
"type" : {
"executable" : null
}
},
{
"name" : "forensiclens-readme-updater",
"targets" : [
"forensiclens-readme-updater"
],
"type" : {
"executable" : null
}
},
{
"name" : "forensiclens-benchmark",
"targets" : [
"forensiclens-benchmark"
],
"type" : {
"executable" : null
}
}
],
"targets" : [
{
"c99name" : "forensiclens_readme_updater",
"module_type" : "SwiftTarget",
"name" : "forensiclens-readme-updater",
"path" : "Sources/forensiclens-readme-updater",
"product_memberships" : [
"forensiclens-readme-updater"
],
"sources" : [
"Entrypoint.swift",
"ReadmeUpdater.swift"
],
"target_dependencies" : [
"BenchmarkReporting"
],
"type" : "executable"
},
{
"c99name" : "forensiclens_eval",
"module_type" : "SwiftTarget",
"name" : "forensiclens-eval",
"path" : "Sources/forensiclens-eval",
"product_memberships" : [
"forensiclens-eval"
],
"sources" : [
"ClassificationMetrics.swift",
"Entrypoint.swift",
"EvalCLI.swift",
"EvaluationReport.swift",
"Evaluator.swift",
"LabeledDataset.swift"
],
"target_dependencies" : [
"ForensicLens",
"ImageDecoding",
"BatchProcessing"
],
"type" : "executable"
},
{
"c99name" : "forensiclens_cli",
"module_type" : "SwiftTarget",
"name" : "forensiclens-cli",
"path" : "Sources/forensiclens-cli",
"product_memberships" : [
"forensiclens-cli"
],
"sources" : [
"BatchReport.swift",
"BatchReportFormatter.swift",
"CLI.swift",
"Entrypoint.swift"
],
"target_dependencies" : [
"ForensicLens",
"ImageDecoding",
"HTMLReporting",
"BatchProcessing"
],
"type" : "executable"
},
{
"c99name" : "forensiclens_benchmark",
"module_type" : "SwiftTarget",
"name" : "forensiclens-benchmark",
"path" : "Sources/forensiclens-benchmark",
"product_memberships" : [
"forensiclens-benchmark"
],
"sources" : [
"main.swift"
],
"target_dependencies" : [
"ForensicLens",
"ImageDecoding",
"BenchmarkReporting"
],
"type" : "executable"
},
{
"c99name" : "ImageDecoding",
"module_type" : "SwiftTarget",
"name" : "ImageDecoding",
"path" : "Sources/ImageDecoding",
"product_memberships" : [
"ForensicLens",
"forensiclens-cli",
"forensiclens-eval",
"forensiclens-benchmark"
],
"sources" : [
"ImageData.swift",
"ImageDecoder.swift",
"ImageEncoder.swift",
"ImageFormat.swift",
"PixelBuffer.swift"
],
"target_dependencies" : [
"CStbImage"
],
"type" : "library"
},
{
"c99name" : "HTMLReporting",
"module_type" : "SwiftTarget",
"name" : "HTMLReporting",
"path" : "Sources/HTMLReporting",
"product_memberships" : [
"forensiclens-cli",
"forensiclens-eval"
],
"sources" : [
"EmbeddedImage.swift",
"HTMLReportGenerator.swift",
"HTMLReportIndex.swift",
"HTMLTemplate.swift"
],
"target_dependencies" : [
"ForensicLens",
"ImageDecoding"
],
"type" : "library"
},
{
"c99name" : "ForensicLensTests",
"module_type" : "SwiftTarget",
"name" : "ForensicLensTests",
"path" : "Tests/ForensicLensTests",
"sources" : [
"BatchCommandTests.swift",
"CloneDetectionAnalyzerTests.swift",
"ConfigTests.swift",
"DoubleCompressionAnalyzerTests.swift",
"ELAAnalyzerTests.swift",
"EvaluationMetricsTests.swift",
"EvaluationToolTests.swift",
"FailThresholdTests.swift",
"FeatureCloneDetectionTests.swift",
"FeatureMatchingCLITests.swift",
"Fixtures.swift",
"HTMLReportTests.swift",
"MetadataAnalyzerTests.swift",
"RANSACAffineEstimatorTests.swift",
"ReadmeUpdaterTests.swift",
"ScoringTests.swift",
"TilingCLITests.swift",
"TilingTests.swift"
],
"target_dependencies" : [
"ForensicLens",
"ImageDecoding",
"HTMLReporting",
"BatchProcessing",
"forensiclens-cli",
"forensiclens-readme-updater",
"forensiclens-eval",
"BenchmarkReporting"
],
"type" : "test"
},
{
"c99name" : "ForensicLens",
"module_type" : "SwiftTarget",
"name" : "ForensicLens",
"path" : "Sources/ForensicLens",
"product_memberships" : [
"ForensicLens",
"forensiclens-cli",
"forensiclens-eval",
"forensiclens-benchmark"
],
"sources" : [
"Analyzer.swift",
"Analyzers/CloneDetectionAnalyzer.swift",
"Analyzers/DoubleCompressionAnalyzer.swift",
"Analyzers/DoubleCompressionMath.swift",
"Analyzers/ELAAnalyzer.swift",
"Analyzers/FeatureMatching/AffineTransform2D.swift",
"Analyzers/FeatureMatching/DescriptorMatcher.swift",
"Analyzers/FeatureMatching/FeatureCloneDetector.swift",
"Analyzers/FeatureMatching/FeatureExtractor.swift",
"Analyzers/FeatureMatching/RANSACAffineEstimator.swift",
"Analyzers/MetadataAnalyzer.swift",
"Config/ConfigLoader.swift",
"Config/ForensicLensConfig.swift",
"ForensicLensEngine.swift",
"Scoring/SuspicionScorer.swift",
"Tiling/PixelBuffer+Tiling.swift",
"Tiling/SpatialTileMerger.swift",
"Tiling/TilePlan.swift",
"Tiling/TiledCloneDetection.swift",
"Tiling/TilingCoordinator.swift"
],
"target_dependencies" : [
"ImageDecoding"
],
"type" : "library"
},
{
"c99name" : "CStbImage",
"module_type" : "ClangTarget",
"name" : "CStbImage",
"path" : "Sources/CStbImage",
"product_memberships" : [
"ForensicLens",
"forensiclens-cli",
"forensiclens-eval",
"forensiclens-benchmark"
],
"sources" : [
"cstbimage.c"
],
"type" : "library"
},
{
"c99name" : "BenchmarkReporting",
"module_type" : "SwiftTarget",
"name" : "BenchmarkReporting",
"path" : "Sources/BenchmarkReporting",
"product_memberships" : [
"forensiclens-readme-updater",
"forensiclens-benchmark"
],
"sources" : [
"BenchmarkResult.swift"
],
"type" : "library"
},
{
"c99name" : "BatchProcessing",
"module_type" : "SwiftTarget",
"name" : "BatchProcessing",
"path" : "Sources/BatchProcessing",
"product_memberships" : [
"forensiclens-cli",
"forensiclens-eval"
],
"sources" : [
"BatchFileAnalyzer.swift",
"BatchFileScanner.swift",
"BatchHTMLReports.swift",
"BatchRunner.swift"
],
"target_dependencies" : [
"ForensicLens",
"ImageDecoding",
"HTMLReporting"
],
"type" : "library"
}
],
"tools_version" : "5.9"
}
✅ Doc result (pending) reported
========================================
GenerateDocs
========================================
Generating docs at path: $PWD/.docs/deipedra34/forensiclens/v2.1.0
Repository: Deipedra34/ForensicLens
Swift version used: 6.4
Target: ForensicLens
Extracting symbol information for 'ForensicLens'...
Finished extracting symbol information for 'ForensicLens'. (1.88s)
Building documentation for 'ForensicLens'...
warning: Parameter 'image' is missing documentation
--> Sources/ForensicLens/ForensicLensEngine.swift:36:9-36:9
34 | /// tiling decision (`--tile-size` / `--no-tiling`). Defaults to
35 | /// `.none`, which leaves `config.tiling` in full control.
36 + ///
37 | /// Whether this image ends up tiled or not, both single-image and
38 | /// batch callers go through this one method -- tiling is an internal
Finished building documentation for 'ForensicLens' (0.22s)
Generated documentation archive at:
/Users/admin/builder/spi-builder-workspace/.docs/deipedra34/forensiclens/v2.1.0
Fetching https://github.com/swiftlang/swift-docc-plugin
[1/2345] Fetching swift-docc-plugin
Fetched https://github.com/swiftlang/swift-docc-plugin (1.30s)
Computing version for https://github.com/swiftlang/swift-docc-plugin
Computed https://github.com/swiftlang/swift-docc-plugin at 1.5.0 (3.53s)
Fetching https://github.com/swiftlang/swift-docc-symbolkit
[1/3837] Fetching swift-docc-symbolkit
Fetched https://github.com/swiftlang/swift-docc-symbolkit (1.24s)
Computing version for https://github.com/swiftlang/swift-docc-symbolkit
Computed https://github.com/swiftlang/swift-docc-symbolkit at 1.0.0 (1.98s)
Creating working copy for https://github.com/swiftlang/swift-docc-plugin
Working copy of https://github.com/swiftlang/swift-docc-plugin resolved at 1.5.0
Creating working copy for https://github.com/swiftlang/swift-docc-symbolkit
Working copy of https://github.com/swiftlang/swift-docc-symbolkit resolved at 1.0.0
Building for debugging...
[Planning 1 / 95]
[Planning deferred tasks]
[20 / 43] Snippets
[31 / 58] SymbolKit
[40 / 58] SymbolKit
[52 / 59] SymbolKit
[57 / 63] SymbolKit
[59 / 63] snippet-extract-product
[61 / 63] snippet-extract-product
Build complete! (2.29 sec)
Building for debugging...
[Planning deferred tasks]
[3 / 23]
[10 / 27] ImageDecoding
[14 / 24] ImageDecoding
[26 / 34] ForensicLens
[27 / 34] ForensicLens
[28 / 30] ForensicLens
Build complete! (1.66 sec)
560
5 /Users/admin/builder/spi-builder-workspace/.docs/deipedra34/forensiclens/v2.1.0
✅ Doc result (uploading) reported
========================================
SyncDocs
========================================
Doc archive source directory: $PWD/.docs/deipedra34/forensiclens/v2.1.0
File count: 560
Doc size: 5.0MB
Preparing doc bundle ...
Using presigned URL upload - AWS credentials not required
Uploading -deipedra34-forensiclens-v2.1.0-8b323e80.zip to presigned URL
Starting upload of 989043 bytes...
Upload completed successfully
Done.