Zig Version
commit 9959319d5395a668867c90f63b5f82eb03f0ac9f up to current master (fd830b146dc733657aeb689e1321556395560bfd)
Steps to Reproduce and Observed Behavior
- Construct a module tree where a module is depended on by 2 other modules. Here's a
build.zig.zon with dependencies that produce this behavior:
.{
.version="0.0.0",
.name="my-project",
.dependencies= .{
.getty= .{
.url="https://github.com/getty-zig/getty/archive/4d58a31d9ea5728e7c0a3ca4158478468131fdd6.tar.gz",
.hash="1220630b7523ccdfb21cb7f4f5f20f25a5cb52e1e74e2c62b513f88241b8b0c95870",
},
.getty_json= .{
.url="https://github.com/getty-zig/json/archive/b5f074d9adcff2ce5536436084465f08d52d1dff.tar.gz",
.hash="1220092d65c8a38c4fcd107fb016eb0c2339815dcca9733bdd0078a98a362e74a6b6",
},
},
}Add both of these to a CompileStep:
exe.addModule("getty", b.dependency("getty", .{}).module("getty"));
exe.addModule("json", b.dependency("getty_json", .{}).module("json"));- Reference both modules in the exe's code:
_=@import("getty");
_=@import("json");Alternatively this project of mine can reproduce this behavior (at the time of writing, the CI still passes due to it using a slightly outdated Zig build).
zig build-exe zupper Debug native: error: the following command failed with 1 compilation errors:
/home/lordmzte/dev/zig/build/stage3/bin/zig build-exe /home/lordmzte/dev/zupper/src/main.zig -larchive -lc -fno-strip --cache-dir /home/lordmzte/dev/zupper/zig-cache --global-cache-dir /home/lordmzte/.local/cache/zig --name zupper --mod ansi-term::/home/lordmzte/.local/cache/zig/p/1220647eea49d2c48d5e59354291e975f813be3cc5a9d9920a50bbfaa40a891a06ee/src/main.zig --mod zig-args::/home/lordmzte/.local/cache/zig/p/12203d04cafc97f952d74cdb077e74c0ab3414f9f6b5fbd159112c62bfa584a0dbed/args.zig --mod known-folders::/home/lordmzte/.local/cache/zig/p/122048992ca58a78318b6eba4f65c692564be5af3b30fbef50cd4abeda981b2e7fa5/known-folders.zig --mod getty0::/home/lordmzte/.local/cache/zig/p/1220630b7523ccdfb21cb7f4f5f20f25a5cb52e1e74e2c62b513f88241b8b0c95870/src/getty.zig --mod getty::/home/lordmzte/.local/cache/zig/p/1220630b7523ccdfb21cb7f4f5f20f25a5cb52e1e74e2c62b513f88241b8b0c95870/src/getty.zig --mod json:getty:/home/lordmzte/.local/cache/zig/p/1220092d65c8a38c4fcd107fb016eb0c2339815dcca9733bdd0078a98a362e74a6b6/src/json.zig --deps zig-args,known-folders,ansi-term,getty=getty0,json --listen=-
Build Summary: 0/3 steps succeeded; 1 failed (disable with --summary none)
install transitive failure
└─ install zupper transitive failure
└─ zig build-exe zupper Debug native 1 errors
/home/lordmzte/.local/cache/zig/p/1220630b7523ccdfb21cb7f4f5f20f25a5cb52e1e74e2c62b513f88241b8b0c95870/src/getty.zig:1:1: error: file exists in multiple modules
/home/lordmzte/.local/cache/zig/p/1220630b7523ccdfb21cb7f4f5f20f25a5cb52e1e74e2c62b513f88241b8b0c95870/src/getty.zig:1:1: note: root of module root.json.getty
/home/lordmzte/.local/cache/zig/p/1220630b7523ccdfb21cb7f4f5f20f25a5cb52e1e74e2c62b513f88241b8b0c95870/src/getty.zig:1:1: note: root of module root.getty
A git bisect reveals that this is caused by commit 9959319d5395a668867c90f63b5f82eb03f0ac9f (#16600). Considering the aim of this PR, I guess it might be incorrectly assuming the dependencies are getting different options, even though getty always ends up with the same options (if we look at the build.zig in getty-json). This may be caused by 2 different instances of std.Build here.
Expected Behavior
The code compiles.
Zig Version
commit
9959319d5395a668867c90f63b5f82eb03f0ac9fup to current master (fd830b146dc733657aeb689e1321556395560bfd)Steps to Reproduce and Observed Behavior
build.zig.zonwith dependencies that produce this behavior:.{ .version="0.0.0", .name="my-project", .dependencies= .{ .getty= .{ .url="https://github.com/getty-zig/getty/archive/4d58a31d9ea5728e7c0a3ca4158478468131fdd6.tar.gz", .hash="1220630b7523ccdfb21cb7f4f5f20f25a5cb52e1e74e2c62b513f88241b8b0c95870", }, .getty_json= .{ .url="https://github.com/getty-zig/json/archive/b5f074d9adcff2ce5536436084465f08d52d1dff.tar.gz", .hash="1220092d65c8a38c4fcd107fb016eb0c2339815dcca9733bdd0078a98a362e74a6b6", }, }, }Add both of these to a
CompileStep:Alternatively this project of mine can reproduce this behavior (at the time of writing, the CI still passes due to it using a slightly outdated Zig build).
A
git bisectreveals that this is caused by commit9959319d5395a668867c90f63b5f82eb03f0ac9f(#16600). Considering the aim of this PR, I guess it might be incorrectly assuming the dependencies are getting different options, even thoughgettyalways ends up with the same options (if we look at thebuild.zigingetty-json). This may be caused by 2 different instances ofstd.Buildhere.Expected Behavior
The code compiles.