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