diff --git a/source/dub/project.d b/source/dub/project.d index d406421..1c5b4a2 100644 --- a/source/dub/project.d +++ b/source/dub/project.d @@ -384,7 +384,7 @@ resolveSubPackage(p, false); } - if (!p && !vspec.path.empty) { + if (!p && !vspec.path.empty && is_desired) { NativePath path = vspec.path; if (!path.absolute) path = pack.path ~ path; logDiagnostic("%sAdding local %s in %s", indent, dep.name, path); diff --git a/test/issue2046-ignored-optional-with-path/.no_build b/test/issue2046-ignored-optional-with-path/.no_build new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/issue2046-ignored-optional-with-path/.no_build diff --git a/test/issue2046-ignored-optional-with-path/.no_run b/test/issue2046-ignored-optional-with-path/.no_run new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/issue2046-ignored-optional-with-path/.no_run diff --git a/test/issue2046-ignored-optional-with-path/.no_test b/test/issue2046-ignored-optional-with-path/.no_test new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/issue2046-ignored-optional-with-path/.no_test diff --git a/test/issue2046-ignored-optional-with-path/dub.json b/test/issue2046-ignored-optional-with-path/dub.json new file mode 100644 index 0000000..ef1f533 --- /dev/null +++ b/test/issue2046-ignored-optional-with-path/dub.json @@ -0,0 +1,6 @@ +{ + "name": "issue2046", + "dependencies": { + "libbar": "*" + } +} diff --git a/test/issue2046-ignored-optional-with-path/dub.selections.json-nofoo b/test/issue2046-ignored-optional-with-path/dub.selections.json-nofoo new file mode 100644 index 0000000..36ce7a9 --- /dev/null +++ b/test/issue2046-ignored-optional-with-path/dub.selections.json-nofoo @@ -0,0 +1,6 @@ +{ + "fileVersion": 1, + "versions": { + "libbar": {"path":"libbar"} + } +} diff --git a/test/issue2046-ignored-optional-with-path/dub.selections.json-usefoo b/test/issue2046-ignored-optional-with-path/dub.selections.json-usefoo new file mode 100644 index 0000000..0a1cfd3 --- /dev/null +++ b/test/issue2046-ignored-optional-with-path/dub.selections.json-usefoo @@ -0,0 +1,7 @@ +{ + "fileVersion": 1, + "versions": { + "libfoo": {"path":"libfoo"}, + "libbar": {"path":"libbar"} + } +} diff --git a/test/issue2046-ignored-optional-with-path/libbar/dub.json b/test/issue2046-ignored-optional-with-path/libbar/dub.json new file mode 100644 index 0000000..79b37bc --- /dev/null +++ b/test/issue2046-ignored-optional-with-path/libbar/dub.json @@ -0,0 +1,6 @@ +{ + "name": "libbar", + "dependencies": { + "libfoo": {"path": "../libfoo", "version": "*", "optional": true} + } +} diff --git a/test/issue2046-ignored-optional-with-path/libbar/source/libbar/bar.d b/test/issue2046-ignored-optional-with-path/libbar/source/libbar/bar.d new file mode 100644 index 0000000..ab7b615 --- /dev/null +++ b/test/issue2046-ignored-optional-with-path/libbar/source/libbar/bar.d @@ -0,0 +1,11 @@ +module libbar.bar; + +void function() bar; +static this() +{ + version (Have_libfoo) + import libfoo.foo; + else + static void foo() { import std; writeln("no-foo"); } + bar = &foo; +} diff --git a/test/issue2046-ignored-optional-with-path/libfoo/dub.json b/test/issue2046-ignored-optional-with-path/libfoo/dub.json new file mode 100644 index 0000000..1dffb49 --- /dev/null +++ b/test/issue2046-ignored-optional-with-path/libfoo/dub.json @@ -0,0 +1,3 @@ +{ + "name": "libfoo" +} diff --git a/test/issue2046-ignored-optional-with-path/libfoo/source/libfoo/foo.d b/test/issue2046-ignored-optional-with-path/libfoo/source/libfoo/foo.d new file mode 100644 index 0000000..2ad2c1e --- /dev/null +++ b/test/issue2046-ignored-optional-with-path/libfoo/source/libfoo/foo.d @@ -0,0 +1,3 @@ +module libfoo.foo; +import std; +void foo() { writeln("use-foo"); } diff --git a/test/issue2046-ignored-optional-with-path/source/app.d b/test/issue2046-ignored-optional-with-path/source/app.d new file mode 100644 index 0000000..fcf2da6 --- /dev/null +++ b/test/issue2046-ignored-optional-with-path/source/app.d @@ -0,0 +1,6 @@ +import libbar.bar; + +void main() +{ + bar(); +}