From 0820aa4a46ee346282269f2a273f1059418e8702 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Thu, 18 Apr 2024 03:07:44 -0700 Subject: [PATCH] std: fix and add test for Build.dependencyFromBuildZig --- lib/std/Build.zig | 2 +- test/standalone/build.zig.zon | 3 +++ test/standalone/dependencyFromBuildZig/build.zig | 16 ++++++++++++++++ .../dependencyFromBuildZig/build.zig.zon | 10 ++++++++++ .../dependencyFromBuildZig/other/add.zig | 3 +++ .../dependencyFromBuildZig/other/build.zig | 7 +++++++ .../dependencyFromBuildZig/other/build.zig.zon | 6 ++++++ 7 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 test/standalone/dependencyFromBuildZig/build.zig create mode 100644 test/standalone/dependencyFromBuildZig/build.zig.zon create mode 100644 test/standalone/dependencyFromBuildZig/other/add.zig create mode 100644 test/standalone/dependencyFromBuildZig/other/build.zig create mode 100644 test/standalone/dependencyFromBuildZig/other/build.zig.zon diff --git a/lib/std/Build.zig b/lib/std/Build.zig index a3d091858a..429b0e4600 100644 --- 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 index 8f5a061fe2..a307c0a528 100644 --- 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 new file mode 100644 index 0000000000..3746529f47 --- /dev/null +++ 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 new file mode 100644 index 0000000000..085ae2c80b --- /dev/null +++ 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 new file mode 100644 index 0000000000..d850921cac --- /dev/null +++ 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 new file mode 100644 index 0000000000..7aac0387f9 --- /dev/null +++ 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 new file mode 100644 index 0000000000..204abdbbba --- /dev/null +++ b/test/standalone/dependencyFromBuildZig/other/build.zig.zon @@ -0,0 +1,6 @@ +.{ + .name = "other", + .version = "0.0.0", + .dependencies = .{}, + .paths = .{""}, +}