Skip to content

Commit 5cbae01

Browse files
committed
Linux fixes for excessive Swift invalidation
1 parent 35289aa commit 5cbae01

4 files changed

Lines changed: 9 additions & 5 deletions

File tree

Sources/SWBCore/SpecImplementations/Tools/SwiftCompiler.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1855,7 +1855,9 @@ public final class SwiftCompilerSpec : CompilerSpec, SpecIdentifierType, SwiftDi
18551855
cbc.scope.evaluate(BuiltinMacros.GCC_GENERATE_DEBUGGING_SYMBOLS) &&
18561856
emittingModuleSeparately {
18571857
let moduleWrapOutput = Path(moduleFilePath.withoutSuffix + ".o")
1858-
moduleOutputPaths.append(moduleWrapOutput)
1858+
// The modulewrap task depends on the module, but its outputs are linking requirements,
1859+
// not downstream compilation requirements track it as an extra output.
1860+
extraOutputPaths.append(moduleWrapOutput)
18591861
}
18601862

18611863
let dependencyValidationPayload: SwiftDependencyValidationPayload?

Sources/SWBUniversalPlatform/Specs/Swift.xcspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1054,7 +1054,7 @@
10541054
{
10551055
Name = "SWIFT_AUTOLINK_EXTRACT_OUTPUT_PATH";
10561056
Type = Path;
1057-
DefaultValue = "$(PER_ARCH_OBJECT_FILE_DIR)/$(SWIFT_MODULE_NAME).autolink";
1057+
DefaultValue = "$(PER_ARCH_OBJECT_FILE_DIR)/$(SWIFT_MODULE_NAME)-swiftbuild.autolink";
10581058
},
10591059
{
10601060
Name = "SWIFT_VALIDATE_CLANG_MODULES_ONCE_PER_BUILD_SESSION";

Tests/SWBBuildSystemTests/BuildOperationTests.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,8 @@ fileprivate struct BuildOperationTests: CoreBasedTests {
156156
}
157157
#expect(String(decoding: executionResult.stderr, as: UTF8.self) == "")
158158
}
159+
160+
try await tester.checkNullBuild(runDestination: destination, signableTargets: Set(provisioningInputs.keys), signableTargetInputs: provisioningInputs)
159161
}
160162
}
161163

Tests/SWBTaskConstructionTests/SwiftTaskConstructionTests.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3727,14 +3727,14 @@ fileprivate struct SwiftTaskConstructionTests: CoreBasedTests {
37273727
results.checkNoDiagnostics()
37283728

37293729
results.checkTask(.matchRuleType("SwiftAutolinkExtract")) { task in
3730-
task.checkCommandLineMatches([.suffix("swift-autolink-extract"), .suffix("File1.o"), .suffix("File2.o"), "-o", .suffix("Tool.autolink")])
3730+
task.checkCommandLineMatches([.suffix("swift-autolink-extract"), .suffix("File1.o"), .suffix("File2.o"), "-o", .suffix("Tool-swiftbuild.autolink")])
37313731
task.checkInputs([.pathPattern(.suffix("File1.o")), .pathPattern(.suffix("File2.o")), .any, .any, .any])
3732-
task.checkOutputs([.pathPattern(.suffix("Tool.autolink"))])
3732+
task.checkOutputs([.pathPattern(.suffix("Tool-swiftbuild.autolink"))])
37333733
results.checkTaskFollows(task, .matchRuleType("SwiftDriver Compilation"))
37343734
}
37353735
results.checkTask(.matchRuleType("Ld")) { task in
37363736
results.checkTaskFollows(task, .matchRuleType("SwiftAutolinkExtract"))
3737-
task.checkInputs(contain: [.pathPattern(.suffix("Tool.autolink"))])
3737+
task.checkInputs(contain: [.pathPattern(.suffix("Tool-swiftbuild.autolink"))])
37383738
}
37393739
}
37403740
}

0 commit comments

Comments
 (0)