authorgravatar for squeek502@hotmail.comRyan Liptak <squeek502@hotmail.com> 2026-10-23 16:33:55-07:00
committergravatar for squeek502@hotmail.comRyan Liptak <squeek502@hotmail.com> 2026-10-23 17:15:17-07:00
logbe69013825f95293e0916a8a89a1fdcdba65b5d7
tree27a04d58bda207228a731cb452a9b9905a62f09e
parentb9f95fc512b7638408c854936edcb4288f363f38

Build.declareDependency{Step}: only populate unlazy_deps when the package is not available

The logic in Maker expects unlazy_deps to only be populated for deps that need to be fetched. Without this check, declareDependency/declareDependencyStep could lead to an infinite fetch-and-retry loop.

1 files changed, 4 insertions(+), 0 deletions(-)

lib/std/Build.zig+4
...@@ -1959,6 +1959,8 @@ pub fn lazyDependency(b: *Build, name: []const u8, args: anytype) ?*Dependency {...@@ -1959,6 +1959,8 @@ pub fn lazyDependency(b: *Build, name: []const u8, args: anytype) ?*Dependency {
1959/// * `dependencyStep`1959/// * `dependencyStep`
1960pub fn declareDependency(b: *Build, name: []const u8) void {1960pub fn declareDependency(b: *Build, name: []const u8) void {
1961 const pkg_hash = findPkgHashOrFatal(b, name);1961 const pkg_hash = findPkgHashOrFatal(b, name);
1962 const entry = package_map.get(pkg_hash).?;
1963 if (entry.available) return;
1962 markNeededLazyDep(b, pkg_hash);1964 markNeededLazyDep(b, pkg_hash);
1963}1965}
19641966
...@@ -1972,6 +1974,8 @@ pub fn declareDependency(b: *Build, name: []const u8) void {...@@ -1972,6 +1974,8 @@ pub fn declareDependency(b: *Build, name: []const u8) void {
1972pub fn declareDependencyStep(b: *Build, s: *Step, name: []const u8) void {1974pub fn declareDependencyStep(b: *Build, s: *Step, name: []const u8) void {
1973 const graph = b.graph;1975 const graph = b.graph;
1974 const pkg_hash = findPkgHashOrFatal(b, name);1976 const pkg_hash = findPkgHashOrFatal(b, name);
1977 const entry = package_map.get(pkg_hash).?;
1978 if (entry.available) return;
1975 const interned_hash = graph.wip_configuration.addString(pkg_hash) catch @panic("OOM");1979 const interned_hash = graph.wip_configuration.addString(pkg_hash) catch @panic("OOM");
1976 s.unlazy_deps.put(graph.arena, interned_hash, {}) catch @panic("OOM");1980 s.unlazy_deps.put(graph.arena, interned_hash, {}) catch @panic("OOM");
1977}1981}