From 966ff773ace4d8a40419f8c9729d972913bb014b Mon Sep 17 00:00:00 2001 From: hariprakaz Date: Fri, 10 Apr 2026 17:08:28 +0530 Subject: [PATCH 1/2] Fix mixed path separators on Windows in getPlatformSettings (issue #3070) --- source/dub/compilers/buildsettings.d | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/source/dub/compilers/buildsettings.d b/source/dub/compilers/buildsettings.d index 615685ed9..aef3fe8f4 100644 --- a/source/dub/compilers/buildsettings.d +++ b/source/dub/compilers/buildsettings.d @@ -545,6 +545,14 @@ void getPlatformSettings(in BuildSettingsTemplate this_, ref BuildSettings dst, // collect source files. Note: D source from 'sourcePaths' and C sources from 'cSourcePaths' are joint into 'sourceFiles' dst.addSourceFiles(collectFiles(this_.sourcePaths, "*.d")); dst.addSourceFiles(collectFiles(this_.cSourcePaths, "*.{c,i}")); + version (Windows) { + import std.path : buildNormalizedPath; + import std.algorithm : map; + import std.array : array; + dst.sourceFiles = dst.sourceFiles.map!buildNormalizedPath.array; + if (!dst.mainSourceFile.empty) + dst.mainSourceFile = buildNormalizedPath(dst.mainSourceFile); + } auto sourceFiles = dst.sourceFiles.sort(); // collect import files and remove sources From af9eb3de8683ffe4c1268b7389acd9443218d963 Mon Sep 17 00:00:00 2001 From: hariprakaz Date: Mon, 13 Apr 2026 18:44:18 +0530 Subject: [PATCH 2/2] Add test case for issue #3070 mixed path separators on Windows --- tests/issue3070/dub.json | 7 +++++++ tests/issue3070/src/main.d | 1 + tests/run.d | 1 + 3 files changed, 9 insertions(+) create mode 100644 tests/issue3070/dub.json create mode 100644 tests/issue3070/src/main.d create mode 100644 tests/run.d diff --git a/tests/issue3070/dub.json b/tests/issue3070/dub.json new file mode 100644 index 000000000..1ff76e84c --- /dev/null +++ b/tests/issue3070/dub.json @@ -0,0 +1,7 @@ +{ + "name": "issue3070", + "description": "Test mixed path separators do not duplicate mainSourceFile", + "targetType": "executable", + "sourcePaths": ["src"], + "mainSourceFile": "src/main.d" +} diff --git a/tests/issue3070/src/main.d b/tests/issue3070/src/main.d new file mode 100644 index 000000000..a74017975 --- /dev/null +++ b/tests/issue3070/src/main.d @@ -0,0 +1 @@ +void main() {} diff --git a/tests/run.d b/tests/run.d new file mode 100644 index 000000000..0a74f315b --- /dev/null +++ b/tests/run.d @@ -0,0 +1 @@ +runDubTest("issue3070");