Skip to content

Commit 38a7d0e

Browse files
authored
Change TargetGroup enum param to packageAccess bool in target declaration (#6463)
* Change TargetGroup enum param to packageAccess bool in target declaration Resolves rdar://108361064
1 parent aa0670b commit 38a7d0e

File tree

28 files changed

+102
-188
lines changed

28 files changed

+102
-188
lines changed

Fixtures/Miscellaneous/TargetGrouping/libPkg/Package.swift

Lines changed: 0 additions & 19 deletions
This file was deleted.
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
// swift-tools-version:999.0
2+
import PackageDescription
3+
4+
let package = Package(
5+
name: "libPkg",
6+
products: [
7+
.executable(name: "ExampleApp", targets: ["ExampleApp"]),
8+
.library(name: "MainLib", targets: ["MainLib"]),
9+
],
10+
targets: [
11+
.executableTarget(name: "ExampleApp", dependencies: ["MainLib"], packageAccess: false),
12+
.target(name: "MainLib", dependencies: ["Core"], packageAccess: true),
13+
.target(name: "Core", dependencies: ["DataManager"]),
14+
.target(name: "DataManager", dependencies: ["DataModel"]),
15+
.target(name: "DataModel"),
16+
.testTarget(name: "MainLibTests", dependencies: ["MainLib"]),
17+
.testTarget(name: "BlackBoxTests", dependencies: ["MainLib"], packageAccess: false)
18+
]
19+
)

Sources/Build/BuildDescription/SwiftTargetBuildDescription.swift

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -385,17 +385,14 @@ public final class SwiftTargetBuildDescription {
385385
try self.fileSystem.writeIfChanged(path: path, bytes: stream.bytes)
386386
}
387387

388-
private func packageNameArgumentIfSupported(with pkg: ResolvedPackage, group: Target.Group) -> [String] {
388+
private func packageNameArgumentIfSupported(with pkg: ResolvedPackage, packageAccess: Bool) -> [String] {
389389
let flag = "-package-name"
390390
if pkg.manifest.usePackageNameFlag,
391391
driverSupport.checkToolchainDriverFlags(flags: [flag], toolchain: self.buildParameters.toolchain, fileSystem: self.fileSystem) {
392-
switch group {
393-
case .package:
392+
if packageAccess {
394393
let pkgID = pkg.identity.description.spm_mangledToC99ExtendedIdentifier()
395394
return [flag, pkgID]
396-
case .excluded:
397-
return []
398-
}
395+
}
399396
}
400397
return []
401398
}
@@ -520,7 +517,7 @@ public final class SwiftTargetBuildDescription {
520517
}
521518
}
522519

523-
args += self.packageNameArgumentIfSupported(with: self.package, group: self.target.group)
520+
args += self.packageNameArgumentIfSupported(with: self.package, packageAccess: self.target.packageAccess)
524521
args += try self.macroArguments()
525522

526523
return args
@@ -534,7 +531,7 @@ public final class SwiftTargetBuildDescription {
534531

535532
result.append("-module-name")
536533
result.append(self.target.c99name)
537-
result.append(contentsOf: packageNameArgumentIfSupported(with: self.package, group: self.target.group))
534+
result.append(contentsOf: packageNameArgumentIfSupported(with: self.package, packageAccess: self.target.packageAccess))
538535
if !scanInvocation {
539536
result.append("-emit-dependencies")
540537

@@ -580,7 +577,7 @@ public final class SwiftTargetBuildDescription {
580577
result.append("-emit-module")
581578
result.append("-emit-module-path")
582579
result.append(self.moduleOutputPath.pathString)
583-
result.append(contentsOf: packageNameArgumentIfSupported(with: self.package, group: self.target.group))
580+
result.append(contentsOf: packageNameArgumentIfSupported(with: self.package, packageAccess: self.target.packageAccess))
584581
result += self.buildParameters.toolchain.extraFlags.swiftCompilerFlags
585582

586583
result.append("-Xfrontend")
@@ -626,7 +623,7 @@ public final class SwiftTargetBuildDescription {
626623

627624
result.append("-module-name")
628625
result.append(self.target.c99name)
629-
result.append(contentsOf: packageNameArgumentIfSupported(with: self.package, group: self.target.group))
626+
result.append(contentsOf: packageNameArgumentIfSupported(with: self.package, packageAccess: self.target.packageAccess))
630627
result.append("-incremental")
631628
result.append("-emit-dependencies")
632629

Sources/Build/BuildPlan.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -282,8 +282,8 @@ public class BuildPlan: SPMBuildCore.BuildPlan {
282282

283283
let discoveryTarget = SwiftTarget(
284284
name: discoveryTargetName,
285-
group: .package, // test target is allowed access to package decls by default
286285
dependencies: testProduct.underlyingProduct.targets.map { .target($0, conditions: []) },
286+
packageAccess: true, // test target is allowed access to package decls by default
287287
testDiscoverySrc: Sources(paths: discoveryPaths, root: discoveryDerivedDir)
288288
)
289289
let discoveryResolvedTarget = ResolvedTarget(
@@ -314,9 +314,9 @@ public class BuildPlan: SPMBuildCore.BuildPlan {
314314

315315
let entryPointTarget = SwiftTarget(
316316
name: testProduct.name,
317-
group: .package, // test target is allowed access to package decls by default
318317
type: .library,
319318
dependencies: testProduct.underlyingProduct.targets.map { .target($0, conditions: []) } + [.target(discoveryTarget, conditions: [])],
319+
packageAccess: true, // test target is allowed access to package decls
320320
testEntryPointSources: entryPointSources
321321
)
322322
let entryPointResolvedTarget = ResolvedTarget(
@@ -344,8 +344,8 @@ public class BuildPlan: SPMBuildCore.BuildPlan {
344344
// Allow using the explicitly-specified test entry point target, but still perform test discovery and thus declare a dependency on the discovery targets.
345345
let entryPointTarget = SwiftTarget(
346346
name: entryPointResolvedTarget.underlyingTarget.name,
347-
group: entryPointResolvedTarget.group,
348347
dependencies: entryPointResolvedTarget.underlyingTarget.dependencies + [.target(discoveryTargets.target, conditions: [])],
348+
packageAccess: entryPointResolvedTarget.packageAccess,
349349
testEntryPointSources: entryPointResolvedTarget.underlyingTarget.sources
350350
)
351351
let entryPointResolvedTarget = ResolvedTarget(
@@ -999,18 +999,18 @@ private extension PackageModel.SwiftTarget {
999999
/// Initialize a SwiftTarget representing a test entry point.
10001000
convenience init(
10011001
name: String,
1002-
group: Group,
10031002
type: PackageModel.Target.Kind? = nil,
10041003
dependencies: [PackageModel.Target.Dependency],
1004+
packageAccess: Bool,
10051005
testEntryPointSources sources: Sources
10061006
) {
10071007
self.init(
10081008
name: name,
1009-
group: group,
10101009
type: type ?? .executable,
10111010
path: .root,
10121011
sources: sources,
10131012
dependencies: dependencies,
1013+
packageAccess: packageAccess,
10141014
swiftVersion: .v5,
10151015
usesUnsafeFlags: false
10161016
)

Sources/CompilerPluginSupport/TargetExtensions.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,23 @@ public extension Target {
1616
@available(_PackageDescription, introduced: 999.0)
1717
static func macro(
1818
name: String,
19-
group: TargetGroup = .package,
2019
dependencies: [Dependency] = [],
2120
path: String? = nil,
2221
exclude: [String] = [],
2322
sources: [String]? = nil,
23+
packageAccess: Bool = true,
2424
swiftSettings: [SwiftSetting]? = nil,
2525
linkerSettings: [LinkerSetting]? = nil,
2626
plugins: [PluginUsage]? = nil
2727
) -> Target {
2828
return Target(name: name,
29-
group: group,
3029
dependencies: dependencies,
3130
path: path,
3231
exclude: exclude,
3332
sources: sources,
3433
publicHeadersPath: nil,
3534
type: .macro,
35+
packageAccess: packageAccess,
3636
swiftSettings: swiftSettings,
3737
linkerSettings: linkerSettings,
3838
plugins: plugins)

Sources/PackageDescription/PackageDescriptionSerialization.swift

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -166,11 +166,6 @@ enum Serialization {
166166
case `macro`
167167
}
168168

169-
enum TargetGroup: Codable {
170-
case package
171-
case excluded
172-
}
173-
174169
enum PluginCapability: Codable {
175170
case buildTool
176171
case command(intent: PluginCommandIntent, permissions: [PluginPermission])
@@ -201,7 +196,6 @@ enum Serialization {
201196

202197
struct Target: Codable {
203198
let name: String
204-
let group: TargetGroup
205199
let path: String?
206200
let url: String?
207201
let sources: [String]?
@@ -210,6 +204,7 @@ enum Serialization {
210204
let dependencies: [TargetDependency]
211205
let publicHeadersPath: String?
212206
let type: TargetType
207+
let packageAccess: Bool
213208
let pkgConfig: String?
214209
let providers: [SystemPackageProvider]?
215210
let pluginCapability: PluginCapability?

Sources/PackageDescription/PackageDescriptionSerializationConversion.swift

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -219,15 +219,6 @@ extension Serialization.TargetType {
219219
}
220220
}
221221

222-
extension Serialization.TargetGroup {
223-
init(_ type: PackageDescription.Target.TargetGroup) {
224-
switch type {
225-
case .package: self = .package
226-
case .excluded: self = .excluded
227-
}
228-
}
229-
}
230-
231222
extension Serialization.PluginCapability {
232223
init(_ capability: PackageDescription.Target.PluginCapability) {
233224
switch capability {
@@ -279,7 +270,7 @@ extension Serialization.PluginUsage {
279270
extension Serialization.Target {
280271
init(_ target: PackageDescription.Target) {
281272
self.name = target.name
282-
self.group = .init(target.group)
273+
self.packageAccess = target.packageAccess
283274
self.path = target.path
284275
self.url = target.url
285276
self.sources = target.sources

0 commit comments

Comments
 (0)