@@ -145,6 +145,13 @@ extension PackageGraph {
145
145
}
146
146
}
147
147
148
+ let platformVersionProvider : PlatformVersionProvider
149
+ if let customXCTestMinimumDeploymentTargets {
150
+ platformVersionProvider = . init( implementation: . customXCTestMinimumDeploymentTargets( customXCTestMinimumDeploymentTargets) )
151
+ } else {
152
+ platformVersionProvider = . init( implementation: . minimumDeploymentTargetDefault)
153
+ }
154
+
148
155
// Resolve dependencies and create resolved packages.
149
156
let resolvedPackages = try createResolvedPackages (
150
157
nodes: allNodes,
@@ -153,13 +160,7 @@ extension PackageGraph {
153
160
rootManifests: root. manifests,
154
161
unsafeAllowedPackages: unsafeAllowedPackages,
155
162
platformRegistry: customPlatformsRegistry ?? . default,
156
- derivedXCTestPlatformProvider: { declared in
157
- if let customXCTestMinimumDeploymentTargets {
158
- return customXCTestMinimumDeploymentTargets [ declared]
159
- } else {
160
- return MinimumDeploymentTarget . default. computeXCTestMinimumDeploymentTarget ( for: declared)
161
- }
162
- } ,
163
+ platformVersionProvider: platformVersionProvider,
163
164
fileSystem: fileSystem,
164
165
observabilityScope: observabilityScope
165
166
)
@@ -240,7 +241,7 @@ private func createResolvedPackages(
240
241
rootManifests: [ PackageIdentity : Manifest ] ,
241
242
unsafeAllowedPackages: Set < PackageReference > ,
242
243
platformRegistry: PlatformRegistry ,
243
- derivedXCTestPlatformProvider : @escaping ( _ declared : PackageModel . Platform ) -> PlatformVersion ? ,
244
+ platformVersionProvider : PlatformVersionProvider ,
244
245
fileSystem: FileSystem ,
245
246
observabilityScope: ObservabilityScope
246
247
) throws -> [ ResolvedPackage ] {
@@ -257,7 +258,8 @@ private func createResolvedPackages(
257
258
package ,
258
259
productFilter: node. productFilter,
259
260
isAllowedToVendUnsafeProducts: isAllowedToVendUnsafeProducts,
260
- allowedToOverride: allowedToOverride
261
+ allowedToOverride: allowedToOverride,
262
+ platformVersionProvider: platformVersionProvider
261
263
)
262
264
}
263
265
@@ -361,14 +363,19 @@ private func createResolvedPackages(
361
363
362
364
packageBuilder. defaultLocalization = package . manifest. defaultLocalization
363
365
364
- packageBuilder. platforms = computePlatforms (
366
+ packageBuilder. supportedPlatforms = computePlatforms (
365
367
package : package ,
366
- platformRegistry: platformRegistry,
367
- derivedXCTestPlatformProvider: derivedXCTestPlatformProvider
368
+ platformRegistry: platformRegistry
368
369
)
369
370
370
371
// Create target builders for each target in the package.
371
- let targetBuilders = package . targets. map { ResolvedTargetBuilder ( target: $0, observabilityScope: packageObservabilityScope) }
372
+ let targetBuilders = package . targets. map {
373
+ ResolvedTargetBuilder (
374
+ target: $0,
375
+ observabilityScope: packageObservabilityScope,
376
+ platformVersionProvider: platformVersionProvider
377
+ )
378
+ }
372
379
packageBuilder. targets = targetBuilders
373
380
374
381
// Establish dependencies between the targets. A target can only depend on another target present in the same package.
@@ -386,7 +393,7 @@ private func createResolvedPackages(
386
393
}
387
394
}
388
395
targetBuilder. defaultLocalization = packageBuilder. defaultLocalization
389
- targetBuilder. platforms = packageBuilder. platforms
396
+ targetBuilder. supportedPlatforms = packageBuilder. supportedPlatforms
390
397
}
391
398
392
399
// Create product builders for each product in the package. A product can only contain a target present in the same package.
@@ -743,10 +750,8 @@ private class DuplicateProductsChecker {
743
750
744
751
private func computePlatforms(
745
752
package : Package ,
746
- platformRegistry: PlatformRegistry ,
747
- derivedXCTestPlatformProvider: @escaping ( _ declared: PackageModel . Platform ) -> PlatformVersion ?
748
- ) -> SupportedPlatforms {
749
-
753
+ platformRegistry: PlatformRegistry
754
+ ) -> [ SupportedPlatform ] {
750
755
// the supported platforms as declared in the manifest
751
756
let declaredPlatforms : [ SupportedPlatform ] = package . manifest. platforms. map { platform in
752
757
let declaredPlatform = platformRegistry. platformByName [ platform. platformName]
@@ -758,10 +763,7 @@ private func computePlatforms(
758
763
)
759
764
}
760
765
761
- return SupportedPlatforms (
762
- declared: declaredPlatforms. sorted ( by: { $0. platform. name < $1. platform. name } ) ,
763
- derivedXCTestPlatformProvider: derivedXCTestPlatformProvider
764
- )
766
+ return declaredPlatforms. sorted ( by: { $0. platform. name < $1. platform. name } )
765
767
}
766
768
767
769
// Track and override module aliases specified for targets in a package graph
@@ -888,18 +890,22 @@ private final class ResolvedTargetBuilder: ResolvedBuilder<ResolvedTarget> {
888
890
var defaultLocalization : String ? = nil
889
891
890
892
/// The platforms supported by this package.
891
- var platforms : SupportedPlatforms = . init( declared: [ ] , derivedXCTestPlatformProvider: . none)
893
+ var supportedPlatforms : [ SupportedPlatform ] = [ ]
894
+
895
+ let platformVersionProvider : PlatformVersionProvider
892
896
893
897
init (
894
898
target: Target ,
895
- observabilityScope: ObservabilityScope
899
+ observabilityScope: ObservabilityScope ,
900
+ platformVersionProvider: PlatformVersionProvider
896
901
) {
897
902
self . target = target
898
903
self . diagnosticsEmitter = observabilityScope. makeDiagnosticsEmitter ( ) {
899
904
var metadata = ObservabilityMetadata ( )
900
905
metadata. targetName = target. name
901
906
return metadata
902
907
}
908
+ self . platformVersionProvider = platformVersionProvider
903
909
}
904
910
905
911
func diagnoseInvalidUseOfUnsafeFlags( _ product: ResolvedProduct ) throws {
@@ -934,7 +940,8 @@ private final class ResolvedTargetBuilder: ResolvedBuilder<ResolvedTarget> {
934
940
target: self . target,
935
941
dependencies: dependencies,
936
942
defaultLocalization: self . defaultLocalization,
937
- platforms: self . platforms
943
+ supportedPlatforms: self . supportedPlatforms,
944
+ platformVersionProvider: self . platformVersionProvider
938
945
)
939
946
}
940
947
}
@@ -983,27 +990,37 @@ private final class ResolvedPackageBuilder: ResolvedBuilder<ResolvedPackage> {
983
990
var defaultLocalization : String ? = nil
984
991
985
992
/// The platforms supported by this package.
986
- var platforms : SupportedPlatforms = . init ( declared : [ ] , derivedXCTestPlatformProvider : . none )
993
+ var supportedPlatforms : [ SupportedPlatform ] = [ ]
987
994
988
995
/// If the given package's source is a registry release, this provides additional metadata and signature information.
989
996
var registryMetadata : RegistryReleaseMetadata ?
990
997
991
- init ( _ package : Package , productFilter: ProductFilter , isAllowedToVendUnsafeProducts: Bool , allowedToOverride: Bool ) {
998
+ let platformVersionProvider : PlatformVersionProvider
999
+
1000
+ init (
1001
+ _ package : Package ,
1002
+ productFilter: ProductFilter ,
1003
+ isAllowedToVendUnsafeProducts: Bool ,
1004
+ allowedToOverride: Bool ,
1005
+ platformVersionProvider: PlatformVersionProvider
1006
+ ) {
992
1007
self . package = package
993
1008
self . productFilter = productFilter
994
1009
self . isAllowedToVendUnsafeProducts = isAllowedToVendUnsafeProducts
995
1010
self . allowedToOverride = allowedToOverride
1011
+ self . platformVersionProvider = platformVersionProvider
996
1012
}
997
1013
998
1014
override func constructImpl( ) throws -> ResolvedPackage {
999
1015
return ResolvedPackage (
1000
1016
package : self . package ,
1001
1017
defaultLocalization: self . defaultLocalization,
1002
- platforms : self . platforms ,
1018
+ supportedPlatforms : self . supportedPlatforms ,
1003
1019
dependencies: try self . dependencies. map { try $0. construct ( ) } ,
1004
1020
targets: try self . targets. map { try $0. construct ( ) } ,
1005
1021
products: try self . products. map { try $0. construct ( ) } ,
1006
- registryMetadata: self . registryMetadata
1022
+ registryMetadata: self . registryMetadata,
1023
+ platformVersionProvider: self . platformVersionProvider
1007
1024
)
1008
1025
}
1009
1026
}
0 commit comments