diff --git a/source/dub/dependencyresolver.d b/source/dub/dependencyresolver.d index 9aa3eaf..c0714ff 100644 --- a/source/dub/dependencyresolver.d +++ b/source/dub/dependencyresolver.d @@ -67,6 +67,9 @@ } findConfigsRec(root); + logDebug("Configurations used for dependency resolution:"); + foreach (n, i; package_indices) logDebug(" %s: %s", n, all_configs[i]); + auto config_indices = new size_t[all_configs.length]; config_indices[] = 0; diff --git a/source/dub/dub.d b/source/dub/dub.d index 476ebdf..36b8108 100644 --- a/source/dub/dub.d +++ b/source/dub/dub.d @@ -173,7 +173,7 @@ assert(!p.canFind(":"), "Resolved packages contain a sub package!?: "~p); auto pack = m_packageManager.getBestPackage(p, ver); if (!pack) fetch(p, ver, PlacementLocation.userWide, false, (options & UpdateOptions.preRelease) != 0, (options & UpdateOptions.forceRemove) != 0, false); - if (options & UpdateOptions.select) + if (options & UpdateOptions.select && ver.path.empty) m_project.selections.selectVersion(p, ver.version_); } diff --git a/source/dub/project.d b/source/dub/project.d index 1beaf70..2ca1222 100644 --- a/source/dub/project.d +++ b/source/dub/project.d @@ -193,22 +193,24 @@ void collectDependenciesRec(Package pack) { logDebug("Collecting dependencies for %s", pack.name); - foreach (name, original_vspec; pack.dependencies) { - if (!m_selectedVersions.hasSelectedVersion(name)) { - logDiagnostic("Version selection for dependency %s of %s is missing.", - name, pack.name); - continue; - } - - Dependency vspec = m_selectedVersions.selectedVersion(name); - + foreach (name, Dependency vspec; pack.dependencies) { Package p; if (!vspec.path.empty) { Path path = vspec.path; if (!path.absolute) path = pack.path ~ path; logDiagnostic("Adding local %s %s", path, vspec.version_); p = m_packageManager.getTemporaryPackage(path, vspec.version_); - } else { + } + + if (!p) { + if (!m_selectedVersions.hasSelectedVersion(name)) { + logDiagnostic("Version selection for dependency %s of %s is missing.", + name, pack.name); + continue; + } + + vspec = m_selectedVersions.selectedVersion(name); + p = m_packageManager.getBestPackage(name, vspec); }