@@ -145,7 +145,13 @@ extension PackageGraph {
145
145
rootManifests: root. manifests,
146
146
unsafeAllowedPackages: unsafeAllowedPackages,
147
147
platformRegistry: customPlatformsRegistry ?? . default,
148
- xcTestMinimumDeploymentTargets: customXCTestMinimumDeploymentTargets ?? MinimumDeploymentTarget . default. xcTestMinimumDeploymentTargets,
148
+ derivedXCTestPlatformProvider: { declared in
149
+ if let customXCTestMinimumDeploymentTargets {
150
+ return customXCTestMinimumDeploymentTargets [ declared]
151
+ } else {
152
+ return MinimumDeploymentTarget . default. computeXCTestMinimumDeploymentTarget ( for: declared)
153
+ }
154
+ } ,
149
155
fileSystem: fileSystem,
150
156
observabilityScope: observabilityScope
151
157
)
@@ -226,7 +232,7 @@ private func createResolvedPackages(
226
232
rootManifests: [ PackageIdentity : Manifest ] ,
227
233
unsafeAllowedPackages: Set < PackageReference > ,
228
234
platformRegistry: PlatformRegistry ,
229
- xcTestMinimumDeploymentTargets : [ PackageModel . Platform : PlatformVersion ] ,
235
+ derivedXCTestPlatformProvider : @escaping ( _ declared : PackageModel . Platform ) -> PlatformVersion ? ,
230
236
fileSystem: FileSystem ,
231
237
observabilityScope: ObservabilityScope
232
238
) throws -> [ ResolvedPackage ] {
@@ -349,16 +355,8 @@ private func createResolvedPackages(
349
355
350
356
packageBuilder. platforms = computePlatforms (
351
357
package : package ,
352
- usingXCTest: false ,
353
- platformRegistry: platformRegistry,
354
- xcTestMinimumDeploymentTargets: xcTestMinimumDeploymentTargets
355
- )
356
-
357
- let testPlatforms = computePlatforms (
358
- package : package ,
359
- usingXCTest: true ,
360
358
platformRegistry: platformRegistry,
361
- xcTestMinimumDeploymentTargets : xcTestMinimumDeploymentTargets
359
+ derivedXCTestPlatformProvider : derivedXCTestPlatformProvider
362
360
)
363
361
364
362
// Create target builders for each target in the package.
@@ -380,7 +378,7 @@ private func createResolvedPackages(
380
378
}
381
379
}
382
380
targetBuilder. defaultLocalization = packageBuilder. defaultLocalization
383
- targetBuilder. platforms = targetBuilder . target . type == . test ? testPlatforms : packageBuilder. platforms
381
+ targetBuilder. platforms = packageBuilder. platforms
384
382
}
385
383
386
384
// Create product builders for each product in the package. A product can only contain a target present in the same package.
@@ -734,9 +732,8 @@ private class DuplicateProductsChecker {
734
732
735
733
private func computePlatforms(
736
734
package : Package ,
737
- usingXCTest: Bool ,
738
735
platformRegistry: PlatformRegistry ,
739
- xcTestMinimumDeploymentTargets : [ PackageModel . Platform : PlatformVersion ]
736
+ derivedXCTestPlatformProvider : @escaping ( _ declared : PackageModel . Platform ) -> PlatformVersion ?
740
737
) -> SupportedPlatforms {
741
738
742
739
// the supported platforms as declared in the manifest
@@ -750,67 +747,9 @@ private func computePlatforms(
750
747
)
751
748
}
752
749
753
- // the derived platforms based on known minimum deployment target logic
754
- var derivedPlatforms = [ SupportedPlatform] ( )
755
-
756
- /// Add each declared platform to the supported platforms list.
757
- for platform in package . manifest. platforms {
758
- let declaredPlatform = platformRegistry. platformByName [ platform. platformName]
759
- ?? PackageModel . Platform. custom ( name: platform. platformName, oldestSupportedVersion: platform. version)
760
- var version = PlatformVersion ( platform. version)
761
-
762
- if usingXCTest, let xcTestMinimumDeploymentTarget = xcTestMinimumDeploymentTargets [ declaredPlatform] , version < xcTestMinimumDeploymentTarget {
763
- version = xcTestMinimumDeploymentTarget
764
- }
765
-
766
- // If the declared version is smaller than the oldest supported one, we raise the derived version to that.
767
- if version < declaredPlatform. oldestSupportedVersion {
768
- version = declaredPlatform. oldestSupportedVersion
769
- }
770
-
771
- let supportedPlatform = SupportedPlatform (
772
- platform: declaredPlatform,
773
- version: version,
774
- options: platform. options
775
- )
776
-
777
- derivedPlatforms. append ( supportedPlatform)
778
- }
779
-
780
- // Find the undeclared platforms.
781
- let remainingPlatforms = Set ( platformRegistry. platformByName. keys) . subtracting ( derivedPlatforms. map ( { $0. platform. name } ) )
782
-
783
- /// Start synthesizing for each undeclared platform.
784
- for platformName in remainingPlatforms. sorted ( ) {
785
- let platform = platformRegistry. platformByName [ platformName] !
786
-
787
- let minimumSupportedVersion : PlatformVersion
788
- if usingXCTest, let xcTestMinimumDeploymentTarget = xcTestMinimumDeploymentTargets [ platform] , xcTestMinimumDeploymentTarget > platform. oldestSupportedVersion {
789
- minimumSupportedVersion = xcTestMinimumDeploymentTarget
790
- } else {
791
- minimumSupportedVersion = platform. oldestSupportedVersion
792
- }
793
-
794
- let oldestSupportedVersion : PlatformVersion
795
- if platform == . macCatalyst, let iOS = derivedPlatforms. first ( where: { $0. platform == . iOS } ) {
796
- // If there was no deployment target specified for Mac Catalyst, fall back to the iOS deployment target.
797
- oldestSupportedVersion = max ( minimumSupportedVersion, iOS. version)
798
- } else {
799
- oldestSupportedVersion = minimumSupportedVersion
800
- }
801
-
802
- let supportedPlatform = SupportedPlatform (
803
- platform: platform,
804
- version: oldestSupportedVersion,
805
- options: [ ]
806
- )
807
-
808
- derivedPlatforms. append ( supportedPlatform)
809
- }
810
-
811
750
return SupportedPlatforms (
812
751
declared: declaredPlatforms. sorted ( by: { $0. platform. name < $1. platform. name } ) ,
813
- derived : derivedPlatforms . sorted ( by : { $0 . platform . name < $1 . platform . name } )
752
+ derivedXCTestPlatformProvider : derivedXCTestPlatformProvider
814
753
)
815
754
}
816
755
@@ -934,7 +873,7 @@ private final class ResolvedTargetBuilder: ResolvedBuilder<ResolvedTarget> {
934
873
var defaultLocalization : String ? = nil
935
874
936
875
/// The platforms supported by this package.
937
- var platforms : SupportedPlatforms = . init( declared: [ ] , derived : [ ] )
876
+ var platforms : SupportedPlatforms = . init( declared: [ ] , derivedXCTestPlatformProvider : . none )
938
877
939
878
init (
940
879
target: Target ,
@@ -1026,7 +965,7 @@ private final class ResolvedPackageBuilder: ResolvedBuilder<ResolvedPackage> {
1026
965
var defaultLocalization : String ? = nil
1027
966
1028
967
/// The platforms supported by this package.
1029
- var platforms : SupportedPlatforms = . init( declared: [ ] , derived : [ ] )
968
+ var platforms : SupportedPlatforms = . init( declared: [ ] , derivedXCTestPlatformProvider : . none )
1030
969
1031
970
/// If the given package's source is a registry release, this provides additional metadata and signature information.
1032
971
var registryMetadata : RegistryReleaseMetadata ?
0 commit comments