diff --git a/CHANGELOG.md b/CHANGELOG.md index c35abd6..9017de7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,9 +5,12 @@ ------------------- - Fixed a regression in 1.8.0 that caused linker files specified as `sourceFiles` to not get inherited properly - [issue #1408][issue1408], [pull #1409][issue1409] +- Fixed a regression in 1.8.0 that caused `mainSourceFile` to be passed twice to the compiler on Windows - [issue #1407][issue1407], [pull #1410][issue1410] +[issue1407]: https://github.com/dlang/dub/issues/1407 [issue1408]: https://github.com/dlang/dub/issues/1408 [issue1409]: https://github.com/dlang/dub/issues/1409 +[issue1410]: https://github.com/dlang/dub/issues/1410 v1.8.0 - 2018-03-01 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"]); + }} +}