Skip to content

Commit d1d2d17

Browse files
Revert "Remove most deprecated APIs (#5756)" (#5791)
This reverts commit 486ec2d.
1 parent 867a453 commit d1d2d17

17 files changed

+667
-2
lines changed

Sources/Basics/Observability.swift

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -470,6 +470,21 @@ public struct ObservabilityMetadata: CustomDebugStringConvertible {
470470
}
471471
}
472472

473+
@available(*, deprecated, message: "temporary for transition DiagnosticsEngine -> DiagnosticsEmitter")
474+
public func droppingLegacyKeys() -> ObservabilityMetadata? {
475+
var metadata = ObservabilityMetadata()
476+
self.forEach { (key, value) in
477+
if key.keyType == LegacyLocationKey.self {
478+
return
479+
}
480+
if key.keyType == LegacyDataKey.self {
481+
return
482+
}
483+
metadata._storage[key] = value
484+
}
485+
return metadata.isEmpty ? .none : metadata
486+
}
487+
473488
/// A type-erased `ObservabilityMetadataKey` used when iterating through the `ObservabilityMetadata` using its `forEach` method.
474489
public struct AnyKey {
475490
/// The key's type represented erased to an `Any.Type`.
@@ -556,6 +571,53 @@ extension Diagnostic {
556571
}
557572
}
558573

574+
@available(*, deprecated, message: "temporary for transition DiagnosticsEngine -> DiagnosticsEmitter")
575+
extension ObservabilitySystem {
576+
public convenience init(diagnosticEngine: DiagnosticsEngine) {
577+
self.init(DiagnosticsEngineAdapter(diagnosticEngine: diagnosticEngine))
578+
}
579+
580+
private struct DiagnosticsEngineAdapter: ObservabilityHandlerProvider, DiagnosticsHandler {
581+
let diagnosticEngine: DiagnosticsEngine
582+
583+
var diagnosticsHandler: DiagnosticsHandler { self }
584+
585+
func handleDiagnostic(scope: ObservabilityScope, diagnostic: Diagnostic) {
586+
diagnosticEngine.emit(.init(diagnostic))
587+
}
588+
}
589+
}
590+
591+
@available(*, deprecated, message: "temporary for transition DiagnosticsEngine -> DiagnosticsEmitter")
592+
extension TSCBasic.Diagnostic {
593+
public init(_ diagnostic: Diagnostic) {
594+
let location: DiagnosticLocation
595+
if let legacyLocation = diagnostic.metadata?.legacyDiagnosticLocation {
596+
location = legacyLocation.underlying
597+
} else {
598+
location = UnknownLocation.location
599+
}
600+
601+
let data: DiagnosticData
602+
if let legacyData = diagnostic.metadata?.legacyDiagnosticData {
603+
data = legacyData.underlying
604+
} else {
605+
data = StringDiagnostic(diagnostic.message)
606+
}
607+
608+
switch diagnostic.severity {
609+
case .error:
610+
self = .init(message: .error(data), location: location)
611+
case .warning:
612+
self = .init(message: .warning(data), location: location)
613+
case .info:
614+
self = .init(message: .note(data), location: location)
615+
case .debug:
616+
self = .init(message: .note(data), location: location)
617+
}
618+
}
619+
}
620+
559621
@available(*, deprecated, message: "temporary for transition DiagnosticsEngine -> DiagnosticsEmitter")
560622
extension ObservabilityMetadata {
561623
public var legacyDiagnosticLocation: DiagnosticLocationWrapper? {

Sources/Build/BuildOperationBuildSystemDelegateHandler.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,11 @@ private final class InProcessTool: Tool {
270270
self.type = type
271271
}
272272

273+
@available(*, deprecated, message: "Use the overload that returns an Optional")
274+
func createCommand(_ name: String) -> ExternalCommand {
275+
return type.init(self.context)
276+
}
277+
273278
func createCommand(_ name: String) -> ExternalCommand? {
274279
return type.init(self.context)
275280
}

Sources/Build/SPMSwiftDriverExecutor.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ final class SPMSwiftDriverExecutor: DriverExecutor {
4444
forceResponseFiles: Bool,
4545
recordedInputModificationDates: [TypedVirtualPath : TimePoint]) throws -> ProcessResult {
4646
let arguments: [String] = try resolver.resolveArgumentList(for: job,
47-
useResponseFiles: forceResponseFiles ? .forced : .heuristic)
47+
forceResponseFiles: forceResponseFiles)
4848

4949
try job.verifyInputsNotModified(since: recordedInputModificationDates,
5050
fileSystem: fileSystem)
@@ -74,7 +74,7 @@ final class SPMSwiftDriverExecutor: DriverExecutor {
7474
func description(of job: Job, forceResponseFiles: Bool) throws -> String {
7575
// FIXME: This is duplicated from SwiftDriver, maybe it shouldn't be a protocol requirement.
7676
let (args, usedResponseFile) = try resolver.resolveArgumentList(for: job,
77-
useResponseFiles: forceResponseFiles ? .forced : .heuristic)
77+
forceResponseFiles: forceResponseFiles)
7878
var result = args.joined(separator: " ")
7979

8080
if usedResponseFile {

Sources/PackageCollections/API.swift

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,41 @@ public protocol PackageCollectionsProtocol {
106106
callback: @escaping (Result<PackageCollectionsModel.Collection, Error>) -> Void
107107
)
108108

109+
// MARK: - Package APIs
110+
111+
/// Returns metadata for the package identified by the given `PackageReference`, along with the
112+
/// identifiers of `PackageCollection`s where the package is found.
113+
///
114+
/// A failure is returned if the package is not found.
115+
///
116+
/// - Parameters:
117+
/// - reference: The package reference
118+
/// - callback: The closure to invoke when result becomes available
119+
// deprecated 9/21
120+
@available(*, deprecated, message: "use getPackageMetadata(identity:) instead")
121+
func getPackageMetadata(
122+
_ reference: PackageReference,
123+
callback: @escaping (Result<PackageCollectionsModel.PackageMetadata, Error>) -> Void
124+
)
125+
126+
/// Returns metadata for the package identified by the given `PackageReference`, along with the
127+
/// identifiers of `PackageCollection`s where the package is found.
128+
///
129+
/// A failure is returned if the package is not found.
130+
///
131+
/// - Parameters:
132+
/// - reference: The package reference
133+
/// - collections: Optional. If specified, only look for package in these collections. Data from the most recently
134+
/// processed collection will be used.
135+
/// - callback: The closure to invoke when result becomes available
136+
// deprecated 9/21
137+
@available(*, deprecated, message: "use getPackageMetadata(identity:) instead")
138+
func getPackageMetadata(
139+
_ reference: PackageReference,
140+
collections: Set<PackageCollectionsModel.CollectionIdentifier>?,
141+
callback: @escaping (Result<PackageCollectionsModel.PackageMetadata, Error>) -> Void
142+
)
143+
109144
/// Returns metadata for the package identified by the given `PackageIdentity`, along with the
110145
/// identifiers of `PackageCollection`s where the package is found.
111146
///

Sources/PackageCollections/Model/PackageTypes.swift

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,24 @@ extension PackageCollectionsModel {
8585
/// The package's programming languages
8686
public let languages: Set<String>?
8787

88+
// deprecated 9/21
89+
@available(*, deprecated, message: "use identity and location instead")
90+
public var reference: PackageReference {
91+
guard let url = URL(string: self.location) else {
92+
fatalError("invalid url \(self.location)")
93+
}
94+
return .init(identity: self.identity, kind: .remoteSourceControl(url), name: nil)
95+
}
96+
97+
// deprecated 9/21
98+
@available(*, deprecated, message: "use identity and location instead")
99+
public var repository: RepositorySpecifier {
100+
guard let url = URL(string: self.location) else {
101+
fatalError("invalid url \(self.location)")
102+
}
103+
return .init(url: url)
104+
}
105+
88106
/// Initializes a `Package`
89107
init(
90108
identity: PackageIdentity,
@@ -141,6 +159,27 @@ extension PackageCollectionsModel.Package {
141159

142160
/// When the package version was created
143161
public let createdAt: Date?
162+
163+
@available(*, deprecated, message: "use manifests instead")
164+
public var packageName: String { self.defaultManifest!.packageName }
165+
166+
@available(*, deprecated, message: "use manifests instead")
167+
public var targets: [Target] { self.defaultManifest!.targets }
168+
169+
@available(*, deprecated, message: "use manifests instead")
170+
public var products: [Product] { self.defaultManifest!.products }
171+
172+
@available(*, deprecated, message: "use manifests instead")
173+
public var toolsVersion: ToolsVersion { self.defaultManifest!.toolsVersion }
174+
175+
@available(*, deprecated, message: "use manifests instead")
176+
public var minimumPlatformVersions: [SupportedPlatform]? { nil }
177+
178+
@available(*, deprecated, message: "use verifiedCompatibility instead")
179+
public var verifiedPlatforms: [PackageModel.Platform]? { nil }
180+
181+
@available(*, deprecated, message: "use verifiedCompatibility instead")
182+
public var verifiedSwiftVersions: [SwiftLanguageVersion]? { nil }
144183

145184
public struct Manifest: Equatable, Codable {
146185
/// The Swift tools version specified in `Package.swift`.

Sources/PackageCollections/Model/TargetListResult.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,15 @@ extension PackageCollectionsModel.TargetListResult {
4848

4949
/// Package collections that contain this package and at least one of the `versions`
5050
public let collections: [PackageCollectionsModel.CollectionIdentifier]
51+
52+
// deprecated 9/2021
53+
@available(*, deprecated, message: "use identity and location instead")
54+
public var repository: RepositorySpecifier {
55+
guard let url = URL(string: self.location) else {
56+
fatalError("invalid url \(self.location)")
57+
}
58+
return .init(url: url)
59+
}
5160
}
5261
}
5362

Sources/PackageCollections/PackageCollections.swift

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -393,6 +393,21 @@ public struct PackageCollections: PackageCollectionsProtocol, Closable {
393393

394394
// MARK: - Package Metadata
395395

396+
// deprecated 9/21
397+
@available(*, deprecated, message: "user identity based API instead")
398+
public func getPackageMetadata(_ reference: PackageReference,
399+
callback: @escaping (Result<PackageCollectionsModel.PackageMetadata, Error>) -> Void) {
400+
self.getPackageMetadata(reference, collections: nil, callback: callback)
401+
}
402+
403+
// deprecated 9/21
404+
@available(*, deprecated, message: "user identity based API instead")
405+
public func getPackageMetadata(_ reference: PackageReference,
406+
collections: Set<PackageCollectionsModel.CollectionIdentifier>?,
407+
callback: @escaping (Result<PackageCollectionsModel.PackageMetadata, Error>) -> Void) {
408+
self.getPackageMetadata(identity: reference.identity, location: reference.locationString, collections: .none, callback: callback)
409+
}
410+
396411
public func getPackageMetadata(identity: PackageIdentity,
397412
location: String? = .none,
398413
callback: @escaping (Result<PackageCollectionsModel.PackageMetadata, Error>) -> Void) {

Sources/PackageGraph/DependencyMirrors.swift

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@ public final class DependencyMirrors: Equatable {
3636
self.visited = .init()
3737
}
3838

39+
@available(*, deprecated)
40+
private convenience init(_ mirrors: [Mirror]) {
41+
self.init(Dictionary(mirrors.map({ ($0.original, $0.mirror) }), uniquingKeysWith: { first, _ in first }))
42+
}
43+
3944
public static func == (lhs: DependencyMirrors, rhs: DependencyMirrors) -> Bool {
4045
return lhs.mapping == rhs.mapping
4146
}
@@ -184,3 +189,45 @@ extension DependencyMirrors: ExpressibleByDictionaryLiteral {
184189
self.init(Dictionary(elements, uniquingKeysWith: { first, _ in first }))
185190
}
186191
}
192+
193+
@available(*, deprecated)
194+
extension DependencyMirrors: JSONMappable, JSONSerializable {
195+
public convenience init(json: JSON) throws {
196+
self.init(try [Mirror](json: json))
197+
}
198+
199+
public func toJSON() -> JSON {
200+
let mirrors = self.index.map { Mirror(original: $0.key, mirror: $0.value) }
201+
return .array(mirrors.sorted(by: { $0.original < $1.mirror }).map { $0.toJSON() })
202+
}
203+
}
204+
205+
/// An individual repository mirror.
206+
@available(*, deprecated)
207+
private struct Mirror {
208+
/// The original repository path.
209+
let original: String
210+
211+
/// The mirrored repository path.
212+
let mirror: String
213+
214+
init(original: String, mirror: String) {
215+
self.original = original
216+
self.mirror = mirror
217+
}
218+
}
219+
220+
@available(*, deprecated)
221+
extension Mirror: JSONMappable, JSONSerializable {
222+
init(json: JSON) throws {
223+
self.original = try json.get("original")
224+
self.mirror = try json.get("mirror")
225+
}
226+
227+
func toJSON() -> JSON {
228+
.init([
229+
"original": original,
230+
"mirror": mirror
231+
])
232+
}
233+
}

Sources/PackageGraph/DependencyResolver.swift

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,63 @@ public protocol DependencyResolverDelegate {
4646
func solved(result: [DependencyResolver.Binding])
4747
}
4848

49+
@available(*, deprecated, message: "user verbosity flags instead")
50+
public struct TracingDependencyResolverDelegate: DependencyResolverDelegate {
51+
private let stream: OutputByteStream
52+
53+
public init (path: AbsolutePath) throws {
54+
self.stream = try LocalFileOutputByteStream(path, closeOnDeinit: true, buffered: false)
55+
}
56+
57+
public init (stream: OutputByteStream) {
58+
self.stream = stream
59+
}
60+
61+
public func willResolve(term: Term) {
62+
self.log("resolving: \(term.node.package.identity)")
63+
}
64+
65+
public func didResolve(term: Term, version: Version, duration: DispatchTimeInterval) {
66+
self.log("resolved: \(term.node.package.identity) @ \(version)")
67+
}
68+
69+
public func derived(term: Term) {
70+
self.log("derived: \(term.node.package.identity)")
71+
}
72+
73+
public func conflict(conflict: Incompatibility) {
74+
self.log("conflict: \(conflict)")
75+
}
76+
77+
public func failedToResolve(incompatibility: Incompatibility) {
78+
self.log("failed to resolve: \(incompatibility)")
79+
}
80+
81+
public func satisfied(term: Term, by assignment: Assignment, incompatibility: Incompatibility) {
82+
log("CR: \(term) is satisfied by \(assignment)")
83+
log("CR: which is caused by \(assignment.cause?.description ?? "")")
84+
log("CR: new incompatibility \(incompatibility)")
85+
}
86+
87+
public func partiallySatisfied(term: Term, by assignment: Assignment, incompatibility: Incompatibility, difference: Term) {
88+
log("CR: \(term) is partially satisfied by \(assignment)")
89+
log("CR: which is caused by \(assignment.cause?.description ?? "")")
90+
log("CR: new incompatibility \(incompatibility)")
91+
}
92+
93+
public func solved(result: [DependencyResolver.Binding]) {
94+
self.log("solved:")
95+
for (package, binding, _) in result {
96+
self.log("\(package) \(binding)")
97+
}
98+
}
99+
100+
private func log(_ message: String) {
101+
self.stream <<< message <<< "\n"
102+
self.stream.flush()
103+
}
104+
}
105+
49106
public struct ObservabilityDependencyResolverDelegate: DependencyResolverDelegate {
50107
private let observabilityScope: ObservabilityScope
51108

Sources/PackageLoading/IdentityResolver.swift

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ import TSCBasic
1616

1717
// TODO: refactor this when adding registry support
1818
public protocol IdentityResolver {
19+
// deprecated 9/21
20+
@available(*, deprecated, message: "use resolveIdentity for url or path instead")
21+
func resolveIdentity(for location: String) -> PackageIdentity
1922
func resolveIdentity(for packageKind: PackageReference.Kind) throws -> PackageIdentity
2023
func resolveIdentity(for url: URL) throws -> PackageIdentity
2124
func resolveIdentity(for path: AbsolutePath) throws -> PackageIdentity
@@ -29,6 +32,13 @@ public struct DefaultIdentityResolver: IdentityResolver {
2932
self.locationMapper = locationMapper
3033
}
3134

35+
// deprecated 9/21
36+
@available(*, deprecated, message: "use resolveIdentity for url or path instead")
37+
public func resolveIdentity(for location: String) -> PackageIdentity {
38+
let location = self.mappedLocation(for: location)
39+
return PackageIdentity(urlString: location)
40+
}
41+
3242
public func resolveIdentity(for packageKind: PackageReference.Kind) throws -> PackageIdentity {
3343
switch packageKind {
3444
case .root(let path):

0 commit comments

Comments
 (0)