diff --git a/source/dub/recipe/packagerecipe.d b/source/dub/recipe/packagerecipe.d index 016b5dd..331841d 100644 --- a/source/dub/recipe/packagerecipe.d +++ b/source/dub/recipe/packagerecipe.d @@ -169,8 +169,10 @@ if (!this.targetName.empty) dst.targetName = this.targetName; if (!this.workingDirectory.empty) dst.workingDirectory = this.workingDirectory; if (!this.mainSourceFile.empty) { - dst.mainSourceFile = this.mainSourceFile; - dst.addSourceFiles(this.mainSourceFile); + auto p = NativePath(this.mainSourceFile); + p.normalize(); + dst.mainSourceFile = p.toNativeString(); + dst.addSourceFiles(dst.mainSourceFile); } string[] collectFiles(in string[][string] paths_map, string pattern) @@ -297,3 +299,23 @@ return ret; } else static assert(false, "Unsupported type: "~T.stringof); } + +unittest { // issue #1407 - duplicate main source file + { + BuildSettingsTemplate t; + t.mainSourceFile = "./foo.d"; + t.sourceFiles[""] = ["foo.d"]; + BuildSettings bs; + t.getPlatformSettings(bs, BuildPlatform.init, NativePath("/")); + assert(bs.sourceFiles == ["foo.d"]); + } + + version (Windows) {{ + BuildSettingsTemplate t; + t.mainSourceFile = "src/foo.d"; + t.sourceFiles[""] = ["src\\foo.d"]; + BuildSettings bs; + t.getPlatformSettings(bs, BuildPlatform.init, NativePath("/")); + assert(bs.sourceFiles == ["src\\foo.d"]); + }} +}