From 4a69bd4b8ec74175cc83f3a0edc1ceb15822377c Mon Sep 17 00:00:00 2001 From: Martin Kinkelin Date: Fri, 24 Jan 2025 15:32:28 +0100 Subject: [PATCH 01/12] LDC: Fix ddox regression (prevent colliding HTML output files) --- source/dub/compilers/ldc.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/dub/compilers/ldc.d b/source/dub/compilers/ldc.d index 0ca58c29e2..5f74cc78d9 100644 --- a/source/dub/compilers/ldc.d +++ b/source/dub/compilers/ldc.d @@ -50,7 +50,7 @@ class LDCCompiler : Compiler { tuple(BuildOption.color, ["-enable-color"]), tuple(BuildOption._docs, ["-Dd=docs"]), - tuple(BuildOption._ddox, ["-Xf=docs.json", "-Dd=__dummy_docs"]), + tuple(BuildOption._ddox, ["-Xf=docs.json", "-Dd=__dummy_docs", "-oq"]), ]; @property string name() const { return "ldc"; } From b0cc8ea274455d494a3b6a54d05a019800df338d Mon Sep 17 00:00:00 2001 From: Dennis Korpel Date: Wed, 5 Mar 2025 12:28:38 +0100 Subject: [PATCH 02/12] update version to v1.39.0 --- source/dub/version_.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/dub/version_.d b/source/dub/version_.d index 456ebcb987..8afd1774c8 100644 --- a/source/dub/version_.d +++ b/source/dub/version_.d @@ -1,2 +1,2 @@ module dub.version_; -enum dubVersion = "v1.39.0-rc.1"; +enum dubVersion = "v1.39.0"; From 7285fe88df386734bdcac4e89d4dd5cd2e5a3429 Mon Sep 17 00:00:00 2001 From: Dennis Korpel Date: Wed, 5 Mar 2025 15:33:14 +0100 Subject: [PATCH 03/12] purge changelog --- changelog/selections_from_parent_dir.dd | 16 ---------------- 1 file changed, 16 deletions(-) delete mode 100644 changelog/selections_from_parent_dir.dd diff --git a/changelog/selections_from_parent_dir.dd b/changelog/selections_from_parent_dir.dd deleted file mode 100644 index 923d8e49d1..0000000000 --- a/changelog/selections_from_parent_dir.dd +++ /dev/null @@ -1,16 +0,0 @@ -`dub.selections.json` files are now looked up in parent directories too - -In case the root package directory doesn't contain a `dub.selections.json` -file, dub now looks in parent directories too and potentially uses the -first (deepest) one it finds - if and only if that JSON file contains an -optional new `"inheritable": true` flag. - -This allows using a 'central' `dub.selections.json` file for a repository -containing multiple dub projects, making it automatically apply to all -builds in that source tree if located in the repository root directory -(unless a local `dub.selections.json` overrides it). - -Such an inherited selections file is never mutated when running dub for a -nested project, i.e., changes are always saved to a *local* -`dub.selections.json` file. E.g., when running `dub upgrade` for a nested -project. From d95544f07a67c014d28cd0f700742aa084b9c8d3 Mon Sep 17 00:00:00 2001 From: Dennis Korpel Date: Sun, 9 Mar 2025 17:13:21 +0100 Subject: [PATCH 04/12] update version to v1.40.0-beta.1 --- source/dub/version_.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/dub/version_.d b/source/dub/version_.d index 8afd1774c8..7e3812ea33 100644 --- a/source/dub/version_.d +++ b/source/dub/version_.d @@ -1,2 +1,2 @@ module dub.version_; -enum dubVersion = "v1.39.0"; +enum dubVersion = "v1.40.0-beta.1"; From e4a0d603132fe901ecab528d80d26572ccd57228 Mon Sep 17 00:00:00 2001 From: Dennis Korpel Date: Fri, 21 Mar 2025 20:28:03 +0100 Subject: [PATCH 05/12] update version to v1.40.0-rc.1 --- source/dub/version_.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/dub/version_.d b/source/dub/version_.d index 7e3812ea33..7cb31fe303 100644 --- a/source/dub/version_.d +++ b/source/dub/version_.d @@ -1,2 +1,2 @@ module dub.version_; -enum dubVersion = "v1.40.0-beta.1"; +enum dubVersion = "v1.40.0-rc.1"; From ac94c79cbe16c5e2cfec1ad9129c15d75f0dc6fc Mon Sep 17 00:00:00 2001 From: Dennis Korpel Date: Mon, 31 Mar 2025 12:17:32 +0200 Subject: [PATCH 06/12] update version to v1.40.0 --- source/dub/version_.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/dub/version_.d b/source/dub/version_.d index 7cb31fe303..45b139b208 100644 --- a/source/dub/version_.d +++ b/source/dub/version_.d @@ -1,2 +1,2 @@ module dub.version_; -enum dubVersion = "v1.40.0-rc.1"; +enum dubVersion = "v1.40.0"; From b39e3118ba619d78549d4b928a369c790254b7ce Mon Sep 17 00:00:00 2001 From: Dennis Korpel Date: Mon, 31 Mar 2025 13:34:01 +0200 Subject: [PATCH 07/12] purge changelog --- changelog/fix-cimport-paths.dd | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 changelog/fix-cimport-paths.dd diff --git a/changelog/fix-cimport-paths.dd b/changelog/fix-cimport-paths.dd deleted file mode 100644 index 7bab23dc4c..0000000000 --- a/changelog/fix-cimport-paths.dd +++ /dev/null @@ -1,3 +0,0 @@ -Fix issue where cImportPaths wasn't working with dmd and ldc - -dub was passing -I instead of -P-I as is required by those compilers From f788ceba0902f6557b0079a12d718f5457be3057 Mon Sep 17 00:00:00 2001 From: Dennis Korpel Date: Fri, 2 May 2025 11:36:51 +0200 Subject: [PATCH 08/12] update version to v1.41.0-beta.1 --- source/dub/version_.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/dub/version_.d b/source/dub/version_.d index 45b139b208..9dfc1f91ca 100644 --- a/source/dub/version_.d +++ b/source/dub/version_.d @@ -1,2 +1,2 @@ module dub.version_; -enum dubVersion = "v1.40.0"; +enum dubVersion = "v1.41.0-beta.1"; From ea58df6a2a995c49e0db1389f4a4577719917b53 Mon Sep 17 00:00:00 2001 From: Mathias Lang Date: Thu, 22 May 2025 19:49:34 +0200 Subject: [PATCH 09/12] fix: Don't add single package files to sourceFiles They get added automatically via the mainSourceFile path, so rely on this. This work around a bug in Windows + git bash where the file gets mentioned twice on the command line. --- source/dub/dub.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/dub/dub.d b/source/dub/dub.d index 11cf840b82..85cc375076 100644 --- a/source/dub/dub.d +++ b/source/dub/dub.d @@ -599,7 +599,7 @@ class Dub { enforce(recipe.buildSettings.cSourcePaths.length == 0, "Single-file packages are not allowed to specify C source paths."); enforce(recipe.buildSettings.importPaths.length == 0, "Single-file packages are not allowed to specify import paths."); enforce(recipe.buildSettings.cImportPaths.length == 0, "Single-file packages are not allowed to specify C import paths."); - recipe.buildSettings.sourceFiles[""] = [path.toNativeString()]; + recipe.buildSettings.sourceFiles[""] = []; recipe.buildSettings.sourcePaths[""] = []; recipe.buildSettings.cSourcePaths[""] = []; recipe.buildSettings.importPaths[""] = []; From cd40abb6f6de497cc64fb0f55e15c5cc12349b4d Mon Sep 17 00:00:00 2001 From: Bastiaan Veelo Date: Thu, 19 Jun 2025 12:51:09 +0200 Subject: [PATCH 10/12] Configure executable sub-packages. Fixes #595 Error when using an executable subConfiguration. Fixes #3029 Default configuration is ignored when sub-package is executable. --- source/dub/project.d | 10 ++++++++-- .../issue3029_subpack_exe_default_conf/.no_run | 0 .../.no_test | 0 .../dub.json | 10 ++++++++++ .../sub/dub.json | 18 ++++++++++++++++++ .../sub/source/app.d | 15 +++++++++++++++ test/issue595-subpack-exe-subconfig/.no_run | 0 test/issue595-subpack-exe-subconfig/.no_test | 0 test/issue595-subpack-exe-subconfig/dub.json | 13 +++++++++++++ .../sub/dub.json | 15 +++++++++++++++ .../sub/source/app.d | 13 +++++++++++++ 11 files changed, 92 insertions(+), 2 deletions(-) create mode 100644 test/issue3029_subpack_exe_default_conf/.no_run create mode 100644 test/issue3029_subpack_exe_default_conf/.no_test create mode 100644 test/issue3029_subpack_exe_default_conf/dub.json create mode 100644 test/issue3029_subpack_exe_default_conf/sub/dub.json create mode 100644 test/issue3029_subpack_exe_default_conf/sub/source/app.d create mode 100644 test/issue595-subpack-exe-subconfig/.no_run create mode 100644 test/issue595-subpack-exe-subconfig/.no_test create mode 100644 test/issue595-subpack-exe-subconfig/dub.json create mode 100644 test/issue595-subpack-exe-subconfig/sub/dub.json create mode 100644 test/issue595-subpack-exe-subconfig/sub/source/app.d diff --git a/source/dub/project.d b/source/dub/project.d index 112b495e76..199249a5a7 100644 --- a/source/dub/project.d +++ b/source/dub/project.d @@ -749,7 +749,13 @@ class Project { } else { auto subconf = pack.package_.getSubConfiguration(c, packages[dp].package_, platform); if (!subconf.empty) setConfigs(only(subconf)); - else setConfigs(packages[dp].package_.getPlatformConfigurations(platform)); + else { + setConfigs(packages[dp].package_.getPlatformConfigurations(platform)); + if (depconfigs[dp].length == 0) { + // Try with the executables too + setConfigs(packages[dp].package_.getPlatformConfigurations(platform, true)); + } + } } // if no valid configuration was found for a dependency, don't include the @@ -791,7 +797,7 @@ class Project { if (auto pc = pack.name in m_overriddenConfigs) determineDependencyConfigs(pack_idx, *pc); else - foreach (c; pack.package_.getPlatformConfigurations(platform, pack.package_ is m_rootPackage && allow_non_library)) + foreach (c; pack.package_.getPlatformConfigurations(platform, allow_non_library)) determineDependencyConfigs(pack_idx, c); } diff --git a/test/issue3029_subpack_exe_default_conf/.no_run b/test/issue3029_subpack_exe_default_conf/.no_run new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/issue3029_subpack_exe_default_conf/.no_test b/test/issue3029_subpack_exe_default_conf/.no_test new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/issue3029_subpack_exe_default_conf/dub.json b/test/issue3029_subpack_exe_default_conf/dub.json new file mode 100644 index 0000000000..28c1957fcd --- /dev/null +++ b/test/issue3029_subpack_exe_default_conf/dub.json @@ -0,0 +1,10 @@ +{ + "name": "issue3029_subpack_exe_default_conf", + "targetType": "none", + "subPackages": [ + "sub" + ], + "dependencies": { + ":sub": "*" + } +} diff --git a/test/issue3029_subpack_exe_default_conf/sub/dub.json b/test/issue3029_subpack_exe_default_conf/sub/dub.json new file mode 100644 index 0000000000..9ad1d54790 --- /dev/null +++ b/test/issue3029_subpack_exe_default_conf/sub/dub.json @@ -0,0 +1,18 @@ +{ + "name": "sub", + "targetType": "executable", + "configurations": [ + { + "name": "default", + "versions": [ + "special" + ] + } + ], + "postBuildCommands-windows": [ + "$DUB_TARGET_NAME" + ], + "postBuildCommands-posix": [ + "./$DUB_TARGET_NAME" + ] +} diff --git a/test/issue3029_subpack_exe_default_conf/sub/source/app.d b/test/issue3029_subpack_exe_default_conf/sub/source/app.d new file mode 100644 index 0000000000..df1ff59b8d --- /dev/null +++ b/test/issue3029_subpack_exe_default_conf/sub/source/app.d @@ -0,0 +1,15 @@ +module app; + +int main() +{ + version (special) + { + // Expected. + return 0; + } + else + { + // Failure. + return 1; + } +} diff --git a/test/issue595-subpack-exe-subconfig/.no_run b/test/issue595-subpack-exe-subconfig/.no_run new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/issue595-subpack-exe-subconfig/.no_test b/test/issue595-subpack-exe-subconfig/.no_test new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/issue595-subpack-exe-subconfig/dub.json b/test/issue595-subpack-exe-subconfig/dub.json new file mode 100644 index 0000000000..10c6e18694 --- /dev/null +++ b/test/issue595-subpack-exe-subconfig/dub.json @@ -0,0 +1,13 @@ +{ + "name": "issue595-subpack-exe-subconfig", + "targetType": "none", + "subPackages": [ + "sub" + ], + "dependencies": { + ":sub": "*" + }, + "subConfigurations": { + "issue595-subpack-exe-subconfig:sub": "special" + } +} diff --git a/test/issue595-subpack-exe-subconfig/sub/dub.json b/test/issue595-subpack-exe-subconfig/sub/dub.json new file mode 100644 index 0000000000..43e7686e41 --- /dev/null +++ b/test/issue595-subpack-exe-subconfig/sub/dub.json @@ -0,0 +1,15 @@ +{ + "name": "sub", + "targetType": "executable", + "configurations": [ + { + "name": "default" + }, + { + "name": "special", + "versions": [ + "special" + ] + } + ] +} diff --git a/test/issue595-subpack-exe-subconfig/sub/source/app.d b/test/issue595-subpack-exe-subconfig/sub/source/app.d new file mode 100644 index 0000000000..a70f12436d --- /dev/null +++ b/test/issue595-subpack-exe-subconfig/sub/source/app.d @@ -0,0 +1,13 @@ +import std.stdio; + +void main() +{ + version (special) + { + writeln("Special version"); + } + else + { + writeln("Standard version"); + } +} From 59c08ed1c788db1c02807c6b3cdad846c342efd2 Mon Sep 17 00:00:00 2001 From: Dennis Korpel Date: Fri, 12 Dec 2025 15:40:38 +0100 Subject: [PATCH 11/12] update version to v1.41.0 --- source/dub/version_.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/dub/version_.d b/source/dub/version_.d index 9dfc1f91ca..171fb6c3d2 100644 --- a/source/dub/version_.d +++ b/source/dub/version_.d @@ -1,2 +1,2 @@ module dub.version_; -enum dubVersion = "v1.41.0-beta.1"; +enum dubVersion = "v1.41.0"; From 889cd295d20a168a0f8fa7f546ccdc83cd49288c Mon Sep 17 00:00:00 2001 From: Dennis Korpel Date: Wed, 7 Jan 2026 12:25:32 +0100 Subject: [PATCH 12/12] purge changelog --- changelog/add-dest.dd | 5 ----- changelog/add-frameworks.dd | 14 -------------- 2 files changed, 19 deletions(-) delete mode 100644 changelog/add-dest.dd delete mode 100644 changelog/add-frameworks.dd diff --git a/changelog/add-dest.dd b/changelog/add-dest.dd deleted file mode 100644 index bd77bac705..0000000000 --- a/changelog/add-dest.dd +++ /dev/null @@ -1,5 +0,0 @@ -Added `--dest` command line build option. - -Adds support for specifying a root directory for staging, essentially -acts as a prefix to the `targetPath` and `workingDirectory` dubfile -entries. diff --git a/changelog/add-frameworks.dd b/changelog/add-frameworks.dd deleted file mode 100644 index 4d40e65f4e..0000000000 --- a/changelog/add-frameworks.dd +++ /dev/null @@ -1,14 +0,0 @@ -Add `frameworks` dubfile key. - -Adds support for specifying macOS frameworks to link against, -this replaces the need to manually specify frameworks via lflags or dflags. - -Before: -------- -lflags "-framework" "Cocoa" -------- - -After: -------- -frameworks "Cocoa" "OpenGL" --------