Skip to content

Revert "Add an integration with swift-api-digester" #744

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jul 6, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Package.resolved

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion Sources/SwiftDriver/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@ add_library(SwiftDriver
"IncrementalCompilation/SourceFileDependencyGraph.swift"
"IncrementalCompilation/TwoDMap.swift"

Jobs/APIDigesterJobs.swift
Jobs/AutolinkExtractJob.swift
Jobs/BackendJob.swift
Jobs/CommandLineArguments.swift
Expand Down
94 changes: 1 addition & 93 deletions Sources/SwiftDriver/Driver/Driver.swift
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,6 @@ public struct Driver {
case missingProfilingData(String)
case conditionalCompilationFlagHasRedundantPrefix(String)
case conditionalCompilationFlagIsNotValidIdentifier(String)
case baselineGenerationRequiresTopLevelModule(String)
case optionRequiresAnother(String, String)
// Explicit Module Build Failures
case malformedModuleDependency(String, String)
case missingPCMArguments(String)
Expand Down Expand Up @@ -102,10 +100,6 @@ public struct Driver {
return "unable to load output file map '\(path)': no such file or directory"
case .missingExternalDependency(let moduleName):
return "Missing External dependency info for module: \(moduleName)"
case .baselineGenerationRequiresTopLevelModule(let arg):
return "generating a baseline with '\(arg)' is only supported with '-emit-module' or '-emit-module-path'"
case .optionRequiresAnother(let first, let second):
return "'\(first)' cannot be specified if '\(second)' is not present"
}
}
}
Expand Down Expand Up @@ -294,12 +288,6 @@ public struct Driver {
/// Path to the Swift module source information file.
let moduleSourceInfoPath: VirtualPath.Handle?

/// Path to the module's digester baseline file.
let digesterBaselinePath: VirtualPath.Handle?

/// The mode the API digester should run in.
let digesterMode: DigesterMode

/// Force the driver to emit the module first and then run compile jobs. This could be used to unblock
/// dependencies in parallel builds.
var forceEmitModuleBeforeCompile: Bool = false
Expand Down Expand Up @@ -547,16 +535,6 @@ public struct Driver {
self.numThreads = Self.determineNumThreads(&parsedOptions, compilerMode: compilerMode, diagnosticsEngine: diagnosticEngine)
self.numParallelJobs = Self.determineNumParallelJobs(&parsedOptions, diagnosticsEngine: diagnosticEngine, env: env)

var mode = DigesterMode.api
if let modeArg = parsedOptions.getLastArgument(.digesterMode)?.asSingle {
if let digesterMode = DigesterMode(rawValue: modeArg) {
mode = digesterMode
} else {
diagnosticsEngine.emit(Error.invalidArgumentValue(Option.digesterMode.spelling, modeArg))
}
}
self.digesterMode = mode

Self.validateWarningControlArgs(&parsedOptions, diagnosticEngine: diagnosticEngine)
Self.validateProfilingArgs(&parsedOptions,
fileSystem: fileSystem,
Expand Down Expand Up @@ -609,7 +587,7 @@ public struct Driver {
diagnosticEngine: diagnosticEngine,
toolchain: toolchain,
targetInfo: frontendTargetInfo)

Self.validateSanitizerAddressUseOdrIndicatorFlag(&parsedOptions, diagnosticEngine: diagnosticsEngine, addressSanitizerEnabled: enabledSanitizers.contains(.address))

Self.validateSanitizerRecoverArgValues(&parsedOptions, diagnosticEngine: diagnosticsEngine, enabledSanitizers: enabledSanitizers)
Expand Down Expand Up @@ -685,15 +663,6 @@ public struct Driver {
outputFileMap: self.outputFileMap,
moduleName: moduleOutputInfo.name,
projectDirectory: projectDirectory)
self.digesterBaselinePath = try Self.computeDigesterBaselineOutputPath(
&parsedOptions,
moduleOutputPath: self.moduleOutputInfo.output?.outputPath,
mode: self.digesterMode,
compilerOutputType: compilerOutputType,
compilerMode: compilerMode,
outputFileMap: self.outputFileMap,
moduleName: moduleOutputInfo.name,
projectDirectory: projectDirectory)
self.swiftInterfacePath = try Self.computeSupplementaryOutputPath(
&parsedOptions, type: .swiftInterface, isOutputOptions: [.emitModuleInterface],
outputPath: .emitModuleInterfacePath,
Expand Down Expand Up @@ -731,12 +700,6 @@ public struct Driver {
outputFileMap: self.outputFileMap,
moduleName: moduleOutputInfo.name)

Self.validateDigesterArgs(&parsedOptions,
moduleOutputInfo: moduleOutputInfo,
digesterMode: self.digesterMode,
swiftInterfacePath: self.swiftInterfacePath,
diagnosticEngine: diagnosticsEngine)

try verifyOutputOptions()
}

Expand Down Expand Up @@ -2233,36 +2196,6 @@ extension Driver {
}
}

static func validateDigesterArgs(_ parsedOptions: inout ParsedOptions,
moduleOutputInfo: ModuleOutputInfo,
digesterMode: DigesterMode,
swiftInterfacePath: VirtualPath.Handle?,
diagnosticEngine: DiagnosticsEngine) {
if moduleOutputInfo.output?.isTopLevel != true {
for arg in parsedOptions.arguments(for: .emitDigesterBaseline, .emitDigesterBaselinePath, .compareToBaselinePath) {
diagnosticEngine.emit(Error.baselineGenerationRequiresTopLevelModule(arg.option.spelling))
}
}

if parsedOptions.hasArgument(.serializeBreakingChangesPath) && !parsedOptions.hasArgument(.compareToBaselinePath) {
diagnosticEngine.emit(Error.optionRequiresAnother(Option.serializeBreakingChangesPath.spelling,
Option.compareToBaselinePath.spelling))
}
if parsedOptions.hasArgument(.digesterBreakageAllowlistPath) && !parsedOptions.hasArgument(.compareToBaselinePath) {
diagnosticEngine.emit(Error.optionRequiresAnother(Option.digesterBreakageAllowlistPath.spelling,
Option.compareToBaselinePath.spelling))
}
if digesterMode == .abi && !parsedOptions.hasArgument(.enableLibraryEvolution) {
diagnosticEngine.emit(Error.optionRequiresAnother("\(Option.digesterMode.spelling) abi",
Option.enableLibraryEvolution.spelling))
}
if digesterMode == .abi && swiftInterfacePath == nil {
diagnosticEngine.emit(Error.optionRequiresAnother("\(Option.digesterMode.spelling) abi",
Option.emitModuleInterface.spelling))
}
}


static func validateProfilingArgs(_ parsedOptions: inout ParsedOptions,
fileSystem: FileSystem,
workingDirectory: AbsolutePath?,
Expand Down Expand Up @@ -2717,31 +2650,6 @@ extension Driver {
projectDirectory: projectDirectory)
}

static func computeDigesterBaselineOutputPath(
_ parsedOptions: inout ParsedOptions,
moduleOutputPath: VirtualPath.Handle?,
mode: DigesterMode,
compilerOutputType: FileType?,
compilerMode: CompilerMode,
outputFileMap: OutputFileMap?,
moduleName: String,
projectDirectory: VirtualPath.Handle?
) throws -> VirtualPath.Handle? {
// Only emit a baseline if at least of the arguments was provided.
guard parsedOptions.hasArgument(.emitDigesterBaseline, .emitDigesterBaselinePath) else { return nil }
return try computeModuleAuxiliaryOutputPath(&parsedOptions,
moduleOutputPath: moduleOutputPath,
type: mode.baselineFileType,
isOutput: .emitDigesterBaseline,
outputPath: .emitDigesterBaselinePath,
compilerOutputType: compilerOutputType,
compilerMode: compilerMode,
outputFileMap: outputFileMap,
moduleName: moduleName,
projectDirectory: projectDirectory)
}



/// Determine the output path for a module auxiliary output.
static func computeModuleAuxiliaryOutputPath(
Expand Down
7 changes: 0 additions & 7 deletions Sources/SwiftDriver/Driver/OutputFileMap.swift
Original file line number Diff line number Diff line change
Expand Up @@ -54,13 +54,6 @@ public struct OutputFileMap: Hashable, Codable {
}
return VirtualPath.lookup(path).replacingExtension(with: outputType).intern()

case .jsonAPIBaseline, .jsonABIBaseline:
// Infer paths for these entities using .swiftsourceinfo path.
guard let path = entries[inputFile]?[.swiftSourceInfoFile] else {
return nil
}
return VirtualPath.lookup(path).replacingExtension(with: outputType).intern()

case .object:
// We may generate .o files from bitcode .bc files, but the output file map
// uses .swift file as the key for .o file paths. So we need to dig further.
Expand Down
152 changes: 0 additions & 152 deletions Sources/SwiftDriver/Jobs/APIDigesterJobs.swift

This file was deleted.

4 changes: 2 additions & 2 deletions Sources/SwiftDriver/Jobs/CompileJob.swift
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ extension Driver {
.privateSwiftInterface, .swiftSourceInfoFile, .diagnostics, .objcHeader, .swiftDeps,
.remap, .tbd, .moduleTrace, .yamlOptimizationRecord, .bitstreamOptimizationRecord, .pcm,
.pch, .clangModuleMap, .jsonCompilerFeatures, .jsonTargetInfo, .jsonSwiftArtifacts,
.indexUnitOutputPath, .modDepCache, .jsonAPIBaseline, .jsonABIBaseline, nil:
.indexUnitOutputPath, .modDepCache, nil:
return false
}
}
Expand Down Expand Up @@ -444,7 +444,7 @@ extension FileType {
.diagnostics, .objcHeader, .image, .swiftDeps, .moduleTrace, .tbd,
.yamlOptimizationRecord, .bitstreamOptimizationRecord, .swiftInterface,
.privateSwiftInterface, .swiftSourceInfoFile, .clangModuleMap, .jsonSwiftArtifacts,
.indexUnitOutputPath, .modDepCache, .jsonAPIBaseline, .jsonABIBaseline:
.indexUnitOutputPath, .modDepCache:
fatalError("Output type can never be a primary output")
}
}
Expand Down
Loading