Today I learned: ninja and samurai build order
kpcyrd
kpcyrd at archlinux.org
Sat Oct 11 15:51:49 UTC 2025
hello!
Today I found this paragraph:
> samurai schedules jobs using a stack, so the last scheduled job is
the first to execute, while ninja schedules jobs based on the pointer
value of the edge structure (they are stored in a std::set<Edge*>), so
the first to execute depends on the address returned by malloc. This may
result in build failures due to insufficiently specified dependencies in
the project's build system.
https://github.com/michaelforney/samurai
imo the pointer values shouldn't be observed by the build system, this
doesn't automatically imply reproducible builds issues if the built
(intermediate) artifacts are still sorted before being linked together,
but it's possibly something to keep in mind.
cheers,
kpcyrd
More information about the rb-general
mailing list