@@ -144,7 +144,13 @@ extension PackageGraph {
144
144
rootManifests: root. manifests,
145
145
unsafeAllowedPackages: unsafeAllowedPackages,
146
146
platformRegistry: customPlatformsRegistry ?? . default,
147
- xcTestMinimumDeploymentTargets: customXCTestMinimumDeploymentTargets ?? MinimumDeploymentTarget . default. xcTestMinimumDeploymentTargets,
147
+ derivedXCTestPlatformProvider: { declared in
148
+ if let customXCTestMinimumDeploymentTargets {
149
+ return customXCTestMinimumDeploymentTargets [ declared]
150
+ } else {
151
+ return MinimumDeploymentTarget . default. computeXCTestMinimumDeploymentTarget ( for: declared)
152
+ }
153
+ } ,
148
154
fileSystem: fileSystem,
149
155
observabilityScope: observabilityScope
150
156
)
@@ -225,7 +231,7 @@ private func createResolvedPackages(
225
231
rootManifests: [ PackageIdentity : Manifest ] ,
226
232
unsafeAllowedPackages: Set < PackageReference > ,
227
233
platformRegistry: PlatformRegistry ,
228
- xcTestMinimumDeploymentTargets : [ PackageModel . Platform : PlatformVersion ] ,
234
+ derivedXCTestPlatformProvider : @escaping ( _ declared : PackageModel . Platform ) -> PlatformVersion ? ,
229
235
fileSystem: FileSystem ,
230
236
observabilityScope: ObservabilityScope
231
237
) throws -> [ ResolvedPackage ] {
@@ -348,16 +354,8 @@ private func createResolvedPackages(
348
354
349
355
packageBuilder. platforms = computePlatforms (
350
356
package : package ,
351
- usingXCTest: false ,
352
- platformRegistry: platformRegistry,
353
- xcTestMinimumDeploymentTargets: xcTestMinimumDeploymentTargets
354
- )
355
-
356
- let testPlatforms = computePlatforms (
357
- package : package ,
358
- usingXCTest: true ,
359
357
platformRegistry: platformRegistry,
360
- xcTestMinimumDeploymentTargets : xcTestMinimumDeploymentTargets
358
+ derivedXCTestPlatformProvider : derivedXCTestPlatformProvider
361
359
)
362
360
363
361
// Create target builders for each target in the package.
@@ -379,7 +377,7 @@ private func createResolvedPackages(
379
377
}
380
378
}
381
379
targetBuilder. defaultLocalization = packageBuilder. defaultLocalization
382
- targetBuilder. platforms = targetBuilder . target . type == . test ? testPlatforms : packageBuilder. platforms
380
+ targetBuilder. platforms = packageBuilder. platforms
383
381
}
384
382
385
383
// Create product builders for each product in the package. A product can only contain a target present in the same package.
@@ -686,9 +684,8 @@ private class DuplicateProductsChecker {
686
684
687
685
private func computePlatforms(
688
686
package : Package ,
689
- usingXCTest: Bool ,
690
687
platformRegistry: PlatformRegistry ,
691
- xcTestMinimumDeploymentTargets : [ PackageModel . Platform : PlatformVersion ]
688
+ derivedXCTestPlatformProvider : @escaping ( _ declared : PackageModel . Platform ) -> PlatformVersion ?
692
689
) -> SupportedPlatforms {
693
690
694
691
// the supported platforms as declared in the manifest
@@ -702,67 +699,9 @@ private func computePlatforms(
702
699
)
703
700
}
704
701
705
- // the derived platforms based on known minimum deployment target logic
706
- var derivedPlatforms = [ SupportedPlatform] ( )
707
-
708
- /// Add each declared platform to the supported platforms list.
709
- for platform in package . manifest. platforms {
710
- let declaredPlatform = platformRegistry. platformByName [ platform. platformName]
711
- ?? PackageModel . Platform. custom ( name: platform. platformName, oldestSupportedVersion: platform. version)
712
- var version = PlatformVersion ( platform. version)
713
-
714
- if usingXCTest, let xcTestMinimumDeploymentTarget = xcTestMinimumDeploymentTargets [ declaredPlatform] , version < xcTestMinimumDeploymentTarget {
715
- version = xcTestMinimumDeploymentTarget
716
- }
717
-
718
- // If the declared version is smaller than the oldest supported one, we raise the derived version to that.
719
- if version < declaredPlatform. oldestSupportedVersion {
720
- version = declaredPlatform. oldestSupportedVersion
721
- }
722
-
723
- let supportedPlatform = SupportedPlatform (
724
- platform: declaredPlatform,
725
- version: version,
726
- options: platform. options
727
- )
728
-
729
- derivedPlatforms. append ( supportedPlatform)
730
- }
731
-
732
- // Find the undeclared platforms.
733
- let remainingPlatforms = Set ( platformRegistry. platformByName. keys) . subtracting ( derivedPlatforms. map ( { $0. platform. name } ) )
734
-
735
- /// Start synthesizing for each undeclared platform.
736
- for platformName in remainingPlatforms. sorted ( ) {
737
- let platform = platformRegistry. platformByName [ platformName] !
738
-
739
- let minimumSupportedVersion : PlatformVersion
740
- if usingXCTest, let xcTestMinimumDeploymentTarget = xcTestMinimumDeploymentTargets [ platform] , xcTestMinimumDeploymentTarget > platform. oldestSupportedVersion {
741
- minimumSupportedVersion = xcTestMinimumDeploymentTarget
742
- } else {
743
- minimumSupportedVersion = platform. oldestSupportedVersion
744
- }
745
-
746
- let oldestSupportedVersion : PlatformVersion
747
- if platform == . macCatalyst, let iOS = derivedPlatforms. first ( where: { $0. platform == . iOS } ) {
748
- // If there was no deployment target specified for Mac Catalyst, fall back to the iOS deployment target.
749
- oldestSupportedVersion = max ( minimumSupportedVersion, iOS. version)
750
- } else {
751
- oldestSupportedVersion = minimumSupportedVersion
752
- }
753
-
754
- let supportedPlatform = SupportedPlatform (
755
- platform: platform,
756
- version: oldestSupportedVersion,
757
- options: [ ]
758
- )
759
-
760
- derivedPlatforms. append ( supportedPlatform)
761
- }
762
-
763
702
return SupportedPlatforms (
764
703
declared: declaredPlatforms. sorted ( by: { $0. platform. name < $1. platform. name } ) ,
765
- derived : derivedPlatforms . sorted ( by : { $0 . platform . name < $1 . platform . name } )
704
+ derivedXCTestPlatformProvider : derivedXCTestPlatformProvider
766
705
)
767
706
}
768
707
@@ -886,7 +825,7 @@ private final class ResolvedTargetBuilder: ResolvedBuilder<ResolvedTarget> {
886
825
var defaultLocalization : String ? = nil
887
826
888
827
/// The platforms supported by this package.
889
- var platforms : SupportedPlatforms = . init( declared: [ ] , derived : [ ] )
828
+ var platforms : SupportedPlatforms = . init( declared: [ ] , derivedXCTestPlatformProvider : . none )
890
829
891
830
init (
892
831
target: Target ,
@@ -978,7 +917,7 @@ private final class ResolvedPackageBuilder: ResolvedBuilder<ResolvedPackage> {
978
917
var defaultLocalization : String ? = nil
979
918
980
919
/// The platforms supported by this package.
981
- var platforms : SupportedPlatforms = . init( declared: [ ] , derived : [ ] )
920
+ var platforms : SupportedPlatforms = . init( declared: [ ] , derivedXCTestPlatformProvider : . none )
982
921
983
922
/// If the given package's source is a registry release, this provides additional metadata and signature information.
984
923
var registryMetadata : RegistryReleaseMetadata ?
0 commit comments