diff --git a/changelog/path-dep-fix.dd b/changelog/path-dep-fix.dd new file mode 100644 index 0000000..2798729 --- /dev/null +++ b/changelog/path-dep-fix.dd @@ -0,0 +1,7 @@ +Path dependencies of path-based sub-packages have been fixed + +Path-based dependencies in path-based sub-packages in DUB v1.30.0 and 1.31.0 +have had regressed and didn't resolve properly. (dub.selections.json could be +used to workaround this issue before) + +From this release, these resolve properly again. diff --git a/source/dub/dub.d b/source/dub/dub.d index 12c0eca..d321369 100644 --- a/source/dub/dub.d +++ b/source/dub/dub.d @@ -1631,7 +1631,7 @@ protected override Dependency[] getSpecificConfigs(string pack, TreeNodes nodes) { if (!nodes.configs.path.empty || !nodes.configs.repository.empty) { - if (getPackage(pack, nodes.configs)) return [nodes.configs]; + if (getPackage(nodes.pack, nodes.configs)) return [nodes.configs]; else return null; } else return null; diff --git a/source/dub/recipe/packagerecipe.d b/source/dub/recipe/packagerecipe.d index d282233..ce406bc 100644 --- a/source/dub/recipe/packagerecipe.d +++ b/source/dub/recipe/packagerecipe.d @@ -38,7 +38,8 @@ } /** - Returns the name of the top level package for a given (sub) package name. + Returns the name of the top level package for a given (sub) package name of + format `"basePackageName"` or `"basePackageName:subPackageName"`. In case of a top level package, the qualified name is returned unmodified. */ @@ -48,7 +49,8 @@ } /** - Returns the qualified sub package part of the given package name. + Returns the qualified sub package part of the given package name of format + `"basePackageName:subPackageName"`, or empty string if none. This is the part of the package name excluding the base package name. See also $(D getBasePackageName). diff --git a/test/issue2587-subpackage-dependency-resolution.sh b/test/issue2587-subpackage-dependency-resolution.sh new file mode 100755 index 0000000..bee1454 --- /dev/null +++ b/test/issue2587-subpackage-dependency-resolution.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +set -e + +. $(dirname "${BASH_SOURCE[0]}")/common.sh +cd "${CURR_DIR}/issue2587-subpackage-dependency-resolution/a" + +rm -f dub.selections.json +$DUB upgrade -v +$DUB run + +rm -f dub.selections.json +$DUB run diff --git a/test/issue2587-subpackage-dependency-resolution/.no_build b/test/issue2587-subpackage-dependency-resolution/.no_build new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/issue2587-subpackage-dependency-resolution/.no_build diff --git a/test/issue2587-subpackage-dependency-resolution/.no_run b/test/issue2587-subpackage-dependency-resolution/.no_run new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/issue2587-subpackage-dependency-resolution/.no_run diff --git a/test/issue2587-subpackage-dependency-resolution/.no_test b/test/issue2587-subpackage-dependency-resolution/.no_test new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/issue2587-subpackage-dependency-resolution/.no_test diff --git a/test/issue2587-subpackage-dependency-resolution/a/.gitignore b/test/issue2587-subpackage-dependency-resolution/a/.gitignore new file mode 100644 index 0000000..7b9e404 --- /dev/null +++ b/test/issue2587-subpackage-dependency-resolution/a/.gitignore @@ -0,0 +1,16 @@ +.dub +docs.json +__dummy.html +docs/ +/a +a.so +a.dylib +a.dll +a.a +a.lib +a-test-* +*.exe +*.pdb +*.o +*.obj +*.lst diff --git a/test/issue2587-subpackage-dependency-resolution/a/dub.json b/test/issue2587-subpackage-dependency-resolution/a/dub.json new file mode 100644 index 0000000..febb36a --- /dev/null +++ b/test/issue2587-subpackage-dependency-resolution/a/dub.json @@ -0,0 +1,6 @@ +{ + "name": "a", + "dependencies": { + "b": {"path":"../b"} + } +} diff --git a/test/issue2587-subpackage-dependency-resolution/a/source/app.d b/test/issue2587-subpackage-dependency-resolution/a/source/app.d new file mode 100644 index 0000000..8d1ede9 --- /dev/null +++ b/test/issue2587-subpackage-dependency-resolution/a/source/app.d @@ -0,0 +1,7 @@ +import b, c; + +void main() +{ + doB(); + doC(); +} diff --git a/test/issue2587-subpackage-dependency-resolution/b/.gitignore b/test/issue2587-subpackage-dependency-resolution/b/.gitignore new file mode 100644 index 0000000..d699f7e --- /dev/null +++ b/test/issue2587-subpackage-dependency-resolution/b/.gitignore @@ -0,0 +1,16 @@ +.dub +docs.json +__dummy.html +docs/ +/b +b.so +b.dylib +b.dll +b.a +b.lib +b-test-* +*.exe +*.pdb +*.o +*.obj +*.lst diff --git a/test/issue2587-subpackage-dependency-resolution/b/dub.json b/test/issue2587-subpackage-dependency-resolution/b/dub.json new file mode 100644 index 0000000..94a359b --- /dev/null +++ b/test/issue2587-subpackage-dependency-resolution/b/dub.json @@ -0,0 +1,14 @@ +{ + "name": "b", + "dependencies": { + "b:sub":"*" + }, + "subPackages": [ + { + "name": "sub", + "dependencies": { + "c": {"path":"../c"} + } + } + ] +} diff --git a/test/issue2587-subpackage-dependency-resolution/b/source/b.d b/test/issue2587-subpackage-dependency-resolution/b/source/b.d new file mode 100644 index 0000000..ae8b14a --- /dev/null +++ b/test/issue2587-subpackage-dependency-resolution/b/source/b.d @@ -0,0 +1,5 @@ +module b; + +void doB() +{ +} diff --git a/test/issue2587-subpackage-dependency-resolution/c/.gitignore b/test/issue2587-subpackage-dependency-resolution/c/.gitignore new file mode 100644 index 0000000..7c7bbbd --- /dev/null +++ b/test/issue2587-subpackage-dependency-resolution/c/.gitignore @@ -0,0 +1,16 @@ +.dub +docs.json +__dummy.html +docs/ +/c +c.so +c.dylib +c.dll +c.a +c.lib +c-test-* +*.exe +*.pdb +*.o +*.obj +*.lst diff --git a/test/issue2587-subpackage-dependency-resolution/c/dub.json b/test/issue2587-subpackage-dependency-resolution/c/dub.json new file mode 100644 index 0000000..16e56e9 --- /dev/null +++ b/test/issue2587-subpackage-dependency-resolution/c/dub.json @@ -0,0 +1,3 @@ +{ + "name": "c" +} diff --git a/test/issue2587-subpackage-dependency-resolution/c/source/c.d b/test/issue2587-subpackage-dependency-resolution/c/source/c.d new file mode 100644 index 0000000..6886227 --- /dev/null +++ b/test/issue2587-subpackage-dependency-resolution/c/source/c.d @@ -0,0 +1,5 @@ +module c; + +void doC() +{ +}