Skip to content

Commit

Permalink
[take 2 - fix PackageManager instead]
Browse files Browse the repository at this point in the history
  • Loading branch information
kinke committed Nov 1, 2024
1 parent cef47ae commit 9b6c23b
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 14 deletions.
34 changes: 27 additions & 7 deletions source/dub/packagemanager.d
Original file line number Diff line number Diff line change
Expand Up @@ -523,10 +523,9 @@ class PackageManager {
} else if (!this.gitClone(repo.remote, gitReference, destination))
return null;

Package result = this.load(destination);
if (result !is null)
this.addPackages(this.m_internal.fromPath, result);
return result;
Package p = this.load(destination);
if (p is null) return null;
return this.addPackagesAndResolveSubPackage(this.m_internal.fromPath, p, name);
}

/**
Expand Down Expand Up @@ -1323,6 +1322,28 @@ symlink_exit:
}
}
}

/// Adds the package, scans for sub-packages, and returns the added package matching
/// the specified name (of the package itself or a sub-package).
/// Returns null if the sub-package doesn't exist.
private Package addPackagesAndResolveSubPackage(ref Package[] dst_repos, Package pack,
in PackageName nameToResolve)
in(pack.name == nameToResolve.main.toString(),
"nameToResolve must be the added package or one of its sub-packages")
{
this.addPackages(dst_repos, pack);

if (nameToResolve.sub.empty)
return pack;

// available sub-packages have been appended
foreach_reverse (sp; dst_repos) {
if (sp.parentPackage is pack && sp.name == nameToResolve.toString())
return sp;
}

return null;
}
}

deprecated(OverrideDepMsg)
Expand Down Expand Up @@ -1742,9 +1763,8 @@ package struct Location {
enforce(
p.version_ == vers,
format("Package %s located in %s has a different version than its path: Got %s, expected %s",
name, path, p.version_, vers));
mgr.addPackages(this.fromPath, p);
return p;
name.main, path, p.version_, vers));
return mgr.addPackagesAndResolveSubPackage(this.fromPath, p, name);
}

/**
Expand Down
11 changes: 4 additions & 7 deletions source/dub/project.d
Original file line number Diff line number Diff line change
Expand Up @@ -557,14 +557,12 @@ class Project {
return resolveSubPackage(tmp, subname, true);
},
(Repository repo) {
auto tmp = m_packageManager.loadSCMPackage(basename, repo);
return resolveSubPackage(tmp, subname, true);
return m_packageManager.loadSCMPackage(dep.name, repo);
},
(VersionRange range) {
// See `dub.recipe.selection : SelectedDependency.fromYAML`
assert(range.isExactVersion());
auto tmp = m_packageManager.getPackage(basename, vspec.version_);
return resolveSubPackage(tmp, subname, true);
return m_packageManager.getPackage(dep.name, vspec.version_);
},
);
} else if (m_dependencies.canFind!(d => PackageName(d.name).main == basename)) {
Expand All @@ -581,11 +579,10 @@ class Project {
if (p is null)
{
if (!vspec.repository.empty) {
p = m_packageManager.loadSCMPackage(basename, vspec.repository);
p = m_packageManager.loadSCMPackage(dep.name, vspec.repository);
enforce(p !is null,
"Unable to fetch '%s@%s' using git - does the repository and version exist?".format(
basename, vspec.repository));
p = resolveSubPackage(p, subname, false);
dep.name, vspec.repository));
} else if (!vspec.path.empty && is_desired) {
NativePath path = vspec.path;
if (!path.absolute) path = pack.path ~ path;
Expand Down

0 comments on commit 9b6c23b

Please sign in to comment.