Skip to content

Commit e266c21

Browse files
committed
[PackageLoading] Disable modulemap mixed with sources check
I found some bugs in the new target sources builder thanks to benchmark package. I'll fix them properly in a separate commit but these fixes should unblock CI. We also need to build swift benchmarks in SwiftPM PR testing. <rdar://problem/56780087>
1 parent d95146e commit e266c21

File tree

3 files changed

+11
-38
lines changed

3 files changed

+11
-38
lines changed

Sources/PackageLoading/PackageBuilder.swift

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -659,13 +659,19 @@ public final class PackageBuilder {
659659
throw ModuleError.invalidPublicHeadersDirectory(potentialModule.name)
660660
}
661661

662+
// Exclude public headers path directory from source searching if it's not
663+
// the target root.
664+
// FIXME: This means we'll try to assign rules to header files
665+
// which is currently not handled by the sources builder.
666+
let extraExcludes = publicHeadersPath != potentialModule.path ? [publicHeadersPath] : []
667+
662668
let sourcesBuilder = TargetSourcesBuilder(
663669
packageName: manifest.name,
664670
packagePath: packagePath,
665671
target: manifestTarget,
666672
path: potentialModule.path,
667673
additionalFileRules: additionalFileRules,
668-
extraExcludes: [publicHeadersPath],
674+
extraExcludes: extraExcludes,
669675
toolsVersion: manifest.toolsVersion,
670676
fs: fileSystem,
671677
diags: diagnostics

Sources/PackageLoading/TargetSourcesBuilder.swift

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -123,12 +123,6 @@ public struct TargetSourcesBuilder {
123123
throw Target.Error.mixedSources(targetPath)
124124
}
125125

126-
// Make sure there is no modulemap mixed with the sources.
127-
let moduleMapFiles = pathToRule.filter{ $0.value == .modulemap }
128-
if let moduleMapFile = moduleMapFiles.first {
129-
throw ModuleError.invalidLayout(.modulemapInSources(moduleMapFile.key))
130-
}
131-
132126
return (sources, resources)
133127
}
134128

Tests/PackageLoadingTests/PackageBuilderTests.swift

Lines changed: 4 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -166,12 +166,13 @@ class PackageBuilderTests: XCTestCase {
166166
}
167167

168168
func testModuleMapLayout() throws {
169-
var fs = InMemoryFileSystem(emptyFiles:
169+
let fs = InMemoryFileSystem(emptyFiles:
170170
"/Sources/clib/include/module.modulemap",
171171
"/Sources/clib/include/clib.h",
172-
"/Sources/clib/clib.c")
172+
"/Sources/clib/clib.c"
173+
)
173174

174-
var manifest = Manifest.createV4Manifest(
175+
let manifest = Manifest.createV4Manifest(
175176
name: "MyPackage",
176177
targets: [
177178
TargetDescription(name: "clib"),
@@ -183,34 +184,6 @@ class PackageBuilderTests: XCTestCase {
183184
moduleResult.checkSources(root: "/Sources/clib", paths: "clib.c")
184185
}
185186
}
186-
187-
fs = InMemoryFileSystem(emptyFiles:
188-
"/Sources/clib/module.modulemap",
189-
"/Sources/clib/foo.swift")
190-
manifest = Manifest.createV4Manifest(
191-
name: "MyPackage",
192-
targets: [
193-
TargetDescription(name: "clib"),
194-
]
195-
)
196-
PackageBuilderTester(manifest, in: fs) { result in
197-
result.checkDiagnostic("package has unsupported layout; modulemap '/Sources/clib/module.modulemap' should be inside the 'include' directory")
198-
}
199-
200-
fs = InMemoryFileSystem(emptyFiles:
201-
"/Sources/Foo/module.modulemap",
202-
"/Sources/Foo/foo.swift",
203-
"/Sources/Bar/bar.swift")
204-
manifest = Manifest.createV4Manifest(
205-
name: "MyPackage",
206-
targets: [
207-
TargetDescription(name: "Foo"),
208-
TargetDescription(name: "Bar"),
209-
]
210-
)
211-
PackageBuilderTester(manifest, in: fs) { result in
212-
result.checkDiagnostic("package has unsupported layout; modulemap '/Sources/Foo/module.modulemap' should be inside the 'include' directory")
213-
}
214187
}
215188

216189
func testDeclaredExecutableProducts() {

0 commit comments

Comments
 (0)