diff --git a/source/dub/dub.d b/source/dub/dub.d index 93b1b3e..dbbb3fa 100644 --- a/source/dub/dub.d +++ b/source/dub/dub.d @@ -771,6 +771,19 @@ private Package getPackage(string name, Dependency dep) { + auto basename = getBasePackageName(name); + auto key = name ~ ":" ~ dep.version_.toString(); + + // for sub packages, first try to get them from the base package + if (basename != name) { + auto subname = getSubPackageName(name); + auto basepack = getPackage(basename, dep); + if (auto sp = basepack.getSubPackage(subname)) { + m_remotePackages[key] = sp; + return sp; + } + } + if (!dep.path.empty) { auto ret = m_dub.packageManager.getOrLoadPackage(dep.path); if (dep.matches(ret.ver)) return ret; @@ -779,8 +792,6 @@ if (auto ret = m_dub.m_packageManager.getBestPackage(name, dep)) return ret; - auto key = name ~ ":" ~ dep.version_.toString(); - if (auto ret = key in m_remotePackages) return *ret;