diff --git a/source/dub/packagemanager.d b/source/dub/packagemanager.d index 27405b5..134eade 100644 --- a/source/dub/packagemanager.d +++ b/source/dub/packagemanager.d @@ -224,7 +224,7 @@ foreach (p; getPackageIterator(base_package.name~":"~sub_name)) if (p.parentPackage is base_package) return p; - enforce(silent_fail, "Sub package "~base_package.name~":"~sub_name~" doesn't exist."); + enforce(silent_fail, "Sub package \""~base_package.name~":"~sub_name~"\" doesn't exist."); return null; } diff --git a/source/dub/project.d b/source/dub/project.d index 6a19be1..fb006c2 100644 --- a/source/dub/project.d +++ b/source/dub/project.d @@ -314,7 +314,8 @@ auto idx = m_dependencies.countUntil!(d => getBasePackageName(d.name) == basename); auto bp = m_dependencies[idx].basePackage; vspec = Dependency(bp.path); - p = m_packageManager.getSubPackage(bp, subname, false); + if (subname.length) p = m_packageManager.getSubPackage(bp, subname, false); + else p = bp; } else { logDiagnostic("%sVersion selection for dependency %s (%s) of %s is missing.", indent, basename, dep.name, pack.name); diff --git a/test/issue959-path-based-subpack-dep/dub.sdl b/test/issue959-path-based-subpack-dep/dub.sdl new file mode 100644 index 0000000..727af60 --- /dev/null +++ b/test/issue959-path-based-subpack-dep/dub.sdl @@ -0,0 +1,6 @@ +name "bar" +mainSourceFile "main.d" +targetType "executable" + +dependency "foo" path="foo" +dependency "foo:baz" path="foo" diff --git a/test/issue959-path-based-subpack-dep/foo/dub.sdl b/test/issue959-path-based-subpack-dep/foo/dub.sdl new file mode 100644 index 0000000..8266250 --- /dev/null +++ b/test/issue959-path-based-subpack-dep/foo/dub.sdl @@ -0,0 +1,8 @@ +name "foo" +targetType "sourceLibrary" + +subPackage { + name "baz" + targetType "sourceLibrary" + dependency "foo" path="." +} diff --git a/test/issue959-path-based-subpack-dep/main.d b/test/issue959-path-based-subpack-dep/main.d new file mode 100644 index 0000000..05a37e9 --- /dev/null +++ b/test/issue959-path-based-subpack-dep/main.d @@ -0,0 +1 @@ +void main() {} \ No newline at end of file