Skip to content

Commit fd5d8f2

Browse files
committed
Add support for empty source packages
1 parent 5cd5792 commit fd5d8f2

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

Sources/Transmute/transmute().swift

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,25 @@
1010

1111
import PackageType
1212
import Utility
13+
import func libc.exit
1314

14-
public func transmute(packages: [Package]) throws -> ([Module], [Product]) {
15+
public func transmute(packages: [Package], rootdir: String) throws -> ([Module], [Product]) {
1516

1617
var products: [Product] = []
1718
var map: [Package: [Module]] = [:]
1819

1920
for package in packages {
20-
let modules = try package.modules()
21+
22+
let modules: [Module]
23+
do {
24+
modules = try package.modules()
25+
} catch Package.ModuleError.NoModules(let pkg) where pkg.path == rootdir {
26+
//Ignore and print warning if root package doesn't contain any sources
27+
print("warning: root package '\(pkg)' does not contain any sources")
28+
if packages.count == 1 { exit(0) } //Exit now if there is no more packages
29+
modules = []
30+
}
31+
2132
let testModules = try package.testModules()
2233
products += try package.products(modules, tests: testModules)
2334

Sources/swift-build/main.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ do {
4444
case .Build(let conf):
4545
let dirs = try directories()
4646
let packages = try fetch(dirs.root)
47-
let (modules, products) = try transmute(packages)
47+
let (modules, products) = try transmute(packages, rootdir: dirs.root)
4848
let yaml = try describe(dirs.build, conf, modules, products, Xcc: opts.Xcc, Xld: opts.Xld, Xswiftc: opts.Xswiftc)
4949
try build(YAMLPath: yaml, target: "default")
5050

0 commit comments

Comments
 (0)