diff --git a/source/dub/dub.d b/source/dub/dub.d index 03bc93f..93b4644 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 & UpgradeOptions.preRelease) != 0, (options & UpgradeOptions.forceRemove) != 0, false); - if (options & UpgradeOptions.select && ver.path.empty) + if ((options & UpgradeOptions.select) && ver.path.empty) m_project.selections.selectVersion(p, ver.version_); } @@ -624,13 +624,17 @@ protected override Dependency[] getAllConfigs(string pack) { - logDiagnostic("Search for versions of %s (%s package suppliers)", pack, m_dub.m_packageSuppliers.length); - if (!(m_options & UpgradeOptions.upgrade) && m_selectedVersions.hasSelectedVersion(pack)) - return [m_selectedVersions.selectedVersion(pack)]; - if (auto pvers = pack in m_packageVersions) return *pvers; + if (!(m_options & UpgradeOptions.upgrade) && m_selectedVersions.hasSelectedVersion(pack)) { + auto ret = [m_selectedVersions.selectedVersion(pack)]; + logDiagnostic("Using fixed selection %s %s", pack, ret[0]); + m_packageVersions[pack] = ret; + return ret; + } + + logDiagnostic("Search for versions of %s (%s package suppliers)", pack, m_dub.m_packageSuppliers.length); Version[] versions; foreach (p; m_dub.packageManager.getPackageIterator(pack)) versions ~= p.ver; diff --git a/source/dub/project.d b/source/dub/project.d index 318dbe2..0919d84 100644 --- a/source/dub/project.d +++ b/source/dub/project.d @@ -70,7 +70,7 @@ auto selverfile = m_rootPackage.path ~ SelectedVersions.defaultFile; if (existsFile(selverfile)) { - try m_selectedVersions = new SelectedVersions(); + try m_selectedVersions = new SelectedVersions(selverfile); catch(Exception e) { logDiagnostic("A " ~ SelectedVersions.defaultFile ~ " file was not found or failed to load:\n%s", e.msg); m_selectedVersions = new SelectedVersions;