zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 0820aa4a46ee346282269f2a273f1059418e8702 (tree)
parent 21a6a1b0f2d7241594a9aa123e48cf2e3ebaccb9
Author: Meghan Denny <hello@nektro.net>
Date:   Thu, 18 Apr 2024 03:07:44 -0700

std: fix and add test for Build.dependencyFromBuildZig

Diffstat:
Mlib/std/Build.zig | 2+-
Mtest/standalone/build.zig.zon | 3+++
Atest/standalone/dependencyFromBuildZig/build.zig | 16++++++++++++++++
Atest/standalone/dependencyFromBuildZig/build.zig.zon | 10++++++++++
Atest/standalone/dependencyFromBuildZig/other/add.zig | 3+++
Atest/standalone/dependencyFromBuildZig/other/build.zig | 7+++++++
Atest/standalone/dependencyFromBuildZig/other/build.zig.zon | 6++++++
7 files changed, 46 insertions(+), 1 deletion(-)

diff --git a/lib/std/Build.zig b/lib/std/Build.zig @@ -1974,7 +1974,7 @@ pub fn dependencyFromBuildZig( const dep_name = for (b.available_deps) |dep| { if (mem.eql(u8, dep[1], pkg_hash)) break dep[1]; } else break :find_dep; - return dependencyInner(b, dep_name, pkg.build_root, pkg.build_zig, pkg.deps, args); + return dependencyInner(b, dep_name, pkg.build_root, pkg.build_zig, pkg_hash, pkg.deps, args); } const full_path = b.pathFromRoot("build.zig.zon"); diff --git a/test/standalone/build.zig.zon b/test/standalone/build.zig.zon @@ -158,6 +158,9 @@ .install_headers = .{ .path = "install_headers", }, + .dependencyFromBuildZig = .{ + .path = "dependencyFromBuildZig", + }, }, .paths = .{ "build.zig", diff --git a/test/standalone/dependencyFromBuildZig/build.zig b/test/standalone/dependencyFromBuildZig/build.zig @@ -0,0 +1,16 @@ +const std = @import("std"); + +pub fn build(b: *std.Build) void { + const test_step = b.step("test", "Test it"); + b.default_step = test_step; + + const dep1 = b.dependency("other", .{}); + + const build_runner = @import("root"); + const deps = build_runner.dependencies; + const zon_decls = @typeInfo(deps.packages).Struct.decls; + const pkg = @field(deps.packages, zon_decls[0].name); + const dep2 = b.dependencyFromBuildZig(pkg.build_zig, .{}); + + std.debug.assert(dep1.module("add") == dep2.module("add")); +} diff --git a/test/standalone/dependencyFromBuildZig/build.zig.zon b/test/standalone/dependencyFromBuildZig/build.zig.zon @@ -0,0 +1,10 @@ +.{ + .name = "dependencyFromBuildZig", + .version = "0.0.0", + .dependencies = .{ + .other = .{ + .path = "other", + }, + }, + .paths = .{""}, +} diff --git a/test/standalone/dependencyFromBuildZig/other/add.zig b/test/standalone/dependencyFromBuildZig/other/add.zig @@ -0,0 +1,3 @@ +pub fn add(x: u32, y: u32) u32 { + return x + y; +} diff --git a/test/standalone/dependencyFromBuildZig/other/build.zig b/test/standalone/dependencyFromBuildZig/other/build.zig @@ -0,0 +1,7 @@ +const std = @import("std"); + +pub fn build(b: *std.Build) void { + _ = b.addModule("add", .{ + .root_source_file = b.path("add.add.zig"), + }); +} diff --git a/test/standalone/dependencyFromBuildZig/other/build.zig.zon b/test/standalone/dependencyFromBuildZig/other/build.zig.zon @@ -0,0 +1,6 @@ +.{ + .name = "other", + .version = "0.0.0", + .dependencies = .{}, + .paths = .{""}, +}