Skip to content

Commit 754b3ca

Browse files
authored
Merge pull request #66 from SwiftPackageIndex/spi-processing-docs
Added documentation for `SPI_PROCESSING`
2 parents 73a5ada + e517266 commit 754b3ca

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

Sources/SPIManifest/Documentation.docc/CommonUseCases.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,16 @@ builder:
8383

8484
There is also a `target:` key in order to configure a specific target instead of a scheme, where applicable.
8585

86+
### Implementing custom package logic with SPI_PROCESSING
87+
88+
When the Swift Package Index processes your package, you’ll find the `SPI_PROCESSING` environment variable set during all processessing, in particular the following:
89+
90+
- **Analysis**: Swift Package Index extracts package metadata by running `swift package dump-package`. Packages _must_ pass analysis to be included in the index.
91+
- **Compatibility builds**: Swift Package Index runs either `swift build` or `xcodebuild` to determine Swift version and platform compatibility.
92+
93+
See the [swift-java](https://swiftpackageindex.com/swiftlang/swift-java) package for an example of a package using this feature, where the authors [bypass a JDK requirement](https://github.com/swiftlang/swift-java/blob/a3791cf7c94146a34f96fd9ad53efef9d58c2a1b/Package.swift#L35) during analysis. Without this exception, the Swift Package Index analysis machines couldn’t successfully run `swift package dump-package`.
94+
95+
In addition, the variable `SPI_BUILD` is set exclusively during the compatibility build phase. This allows package authors to include specific package manifest configurations for builds in the context of the Swift Package Index. Again, the [swift-java](https://swiftpackageindex.com/swiftlang/swift-java) package is an example of a package making use of this capability.
8696

8797
## Images for Linux
8898

0 commit comments

Comments
 (0)