@@ -153,13 +153,9 @@ extension PackageGraph {
153
153
rootManifests: root. manifests,
154
154
unsafeAllowedPackages: unsafeAllowedPackages,
155
155
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
- } ,
156
+ platformVersionProvider: . init(
157
+ implementation: . customXCTestMinimumDeploymentTargets( customXCTestMinimumDeploymentTargets)
158
+ ) ,
163
159
fileSystem: fileSystem,
164
160
observabilityScope: observabilityScope
165
161
)
@@ -240,7 +236,7 @@ private func createResolvedPackages(
240
236
rootManifests: [ PackageIdentity : Manifest ] ,
241
237
unsafeAllowedPackages: Set < PackageReference > ,
242
238
platformRegistry: PlatformRegistry ,
243
- derivedXCTestPlatformProvider : @escaping ( _ declared : PackageModel . Platform ) -> PlatformVersion ? ,
239
+ platformVersionProvider : PlatformVersionProvider ,
244
240
fileSystem: FileSystem ,
245
241
observabilityScope: ObservabilityScope
246
242
) throws -> [ ResolvedPackage ] {
@@ -257,7 +253,8 @@ private func createResolvedPackages(
257
253
package ,
258
254
productFilter: node. productFilter,
259
255
isAllowedToVendUnsafeProducts: isAllowedToVendUnsafeProducts,
260
- allowedToOverride: allowedToOverride
256
+ allowedToOverride: allowedToOverride,
257
+ platformVersionProvider: platformVersionProvider
261
258
)
262
259
}
263
260
@@ -361,14 +358,19 @@ private func createResolvedPackages(
361
358
362
359
packageBuilder. defaultLocalization = package . manifest. defaultLocalization
363
360
364
- packageBuilder. platforms = computePlatforms (
361
+ packageBuilder. supportedPlatforms = computePlatforms (
365
362
package : package ,
366
- platformRegistry: platformRegistry,
367
- derivedXCTestPlatformProvider: derivedXCTestPlatformProvider
363
+ platformRegistry: platformRegistry
368
364
)
369
365
370
366
// Create target builders for each target in the package.
371
- let targetBuilders = package . targets. map { ResolvedTargetBuilder ( target: $0, observabilityScope: packageObservabilityScope) }
367
+ let targetBuilders = package . targets. map {
368
+ ResolvedTargetBuilder (
369
+ target: $0,
370
+ observabilityScope: packageObservabilityScope,
371
+ platformVersionProvider: platformVersionProvider
372
+ )
373
+ }
372
374
packageBuilder. targets = targetBuilders
373
375
374
376
// Establish dependencies between the targets. A target can only depend on another target present in the same package.
@@ -386,7 +388,7 @@ private func createResolvedPackages(
386
388
}
387
389
}
388
390
targetBuilder. defaultLocalization = packageBuilder. defaultLocalization
389
- targetBuilder. platforms = packageBuilder. platforms
391
+ targetBuilder. supportedPlatforms = packageBuilder. supportedPlatforms
390
392
}
391
393
392
394
// Create product builders for each product in the package. A product can only contain a target present in the same package.
@@ -743,10 +745,8 @@ private class DuplicateProductsChecker {
743
745
744
746
private func computePlatforms(
745
747
package : Package ,
746
- platformRegistry: PlatformRegistry ,
747
- derivedXCTestPlatformProvider: @escaping ( _ declared: PackageModel . Platform ) -> PlatformVersion ?
748
- ) -> SupportedPlatforms {
749
-
748
+ platformRegistry: PlatformRegistry
749
+ ) -> [ SupportedPlatform ] {
750
750
// the supported platforms as declared in the manifest
751
751
let declaredPlatforms : [ SupportedPlatform ] = package . manifest. platforms. map { platform in
752
752
let declaredPlatform = platformRegistry. platformByName [ platform. platformName]
@@ -758,10 +758,7 @@ private func computePlatforms(
758
758
)
759
759
}
760
760
761
- return SupportedPlatforms (
762
- declared: declaredPlatforms. sorted ( by: { $0. platform. name < $1. platform. name } ) ,
763
- derivedXCTestPlatformProvider: derivedXCTestPlatformProvider
764
- )
761
+ return declaredPlatforms. sorted ( by: { $0. platform. name < $1. platform. name } )
765
762
}
766
763
767
764
// Track and override module aliases specified for targets in a package graph
@@ -888,18 +885,22 @@ private final class ResolvedTargetBuilder: ResolvedBuilder<ResolvedTarget> {
888
885
var defaultLocalization : String ? = nil
889
886
890
887
/// The platforms supported by this package.
891
- var platforms : SupportedPlatforms = . init( declared: [ ] , derivedXCTestPlatformProvider: . none)
888
+ var supportedPlatforms : [ SupportedPlatform ] = [ ]
889
+
890
+ let platformVersionProvider : PlatformVersionProvider
892
891
893
892
init (
894
893
target: Target ,
895
- observabilityScope: ObservabilityScope
894
+ observabilityScope: ObservabilityScope ,
895
+ platformVersionProvider: PlatformVersionProvider
896
896
) {
897
897
self . target = target
898
898
self . diagnosticsEmitter = observabilityScope. makeDiagnosticsEmitter ( ) {
899
899
var metadata = ObservabilityMetadata ( )
900
900
metadata. targetName = target. name
901
901
return metadata
902
902
}
903
+ self . platformVersionProvider = platformVersionProvider
903
904
}
904
905
905
906
func diagnoseInvalidUseOfUnsafeFlags( _ product: ResolvedProduct ) throws {
@@ -934,7 +935,8 @@ private final class ResolvedTargetBuilder: ResolvedBuilder<ResolvedTarget> {
934
935
target: self . target,
935
936
dependencies: dependencies,
936
937
defaultLocalization: self . defaultLocalization,
937
- platforms: self . platforms
938
+ supportedPlatforms: self . supportedPlatforms,
939
+ platformVersionProvider: self . platformVersionProvider
938
940
)
939
941
}
940
942
}
@@ -983,27 +985,37 @@ private final class ResolvedPackageBuilder: ResolvedBuilder<ResolvedPackage> {
983
985
var defaultLocalization : String ? = nil
984
986
985
987
/// The platforms supported by this package.
986
- var platforms : SupportedPlatforms = . init ( declared : [ ] , derivedXCTestPlatformProvider : . none )
988
+ var supportedPlatforms : [ SupportedPlatform ] = [ ]
987
989
988
990
/// If the given package's source is a registry release, this provides additional metadata and signature information.
989
991
var registryMetadata : RegistryReleaseMetadata ?
990
992
991
- init ( _ package : Package , productFilter: ProductFilter , isAllowedToVendUnsafeProducts: Bool , allowedToOverride: Bool ) {
993
+ let platformVersionProvider : PlatformVersionProvider
994
+
995
+ init (
996
+ _ package : Package ,
997
+ productFilter: ProductFilter ,
998
+ isAllowedToVendUnsafeProducts: Bool ,
999
+ allowedToOverride: Bool ,
1000
+ platformVersionProvider: PlatformVersionProvider
1001
+ ) {
992
1002
self . package = package
993
1003
self . productFilter = productFilter
994
1004
self . isAllowedToVendUnsafeProducts = isAllowedToVendUnsafeProducts
995
1005
self . allowedToOverride = allowedToOverride
1006
+ self . platformVersionProvider = platformVersionProvider
996
1007
}
997
1008
998
1009
override func constructImpl( ) throws -> ResolvedPackage {
999
1010
return ResolvedPackage (
1000
1011
package : self . package ,
1001
1012
defaultLocalization: self . defaultLocalization,
1002
- platforms : self . platforms ,
1013
+ supportedPlatforms : self . supportedPlatforms ,
1003
1014
dependencies: try self . dependencies. map { try $0. construct ( ) } ,
1004
1015
targets: try self . targets. map { try $0. construct ( ) } ,
1005
1016
products: try self . products. map { try $0. construct ( ) } ,
1006
- registryMetadata: self . registryMetadata
1017
+ registryMetadata: self . registryMetadata,
1018
+ platformVersionProvider: self . platformVersionProvider
1007
1019
)
1008
1020
}
1009
1021
}
0 commit comments