Our great sponsors
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
> This tiny little implementation[0] in Python!
345 lines of well-commented Python. Cute as a button! It doesn't seem to re-use already-built files, though.
I wonder how many lines that would add. I actually have a bit of Python in my build pipeline that basically just goes `if os.path.getmtime(src) > os.path.getmtime(target)` and it works fine (and took far less effort than trying to shoehorn that build step into my Makefile).
[0] https://github.com/gkbrk/scripts/blob/master/ninja.py
Samurai is a faster, drop-in replacement for ninja.
https://github.com/michaelforney/samurai
Another interesting implementation is Shake: https://shakebuild.com/
It is technically a Haskell DSL, but supports Ninja files, time estimates and has tools for linting and profiling.
I put it all together here: https://github.com/tekknolagi/ninja-demo
Related posts
- Worst language you ever used? Really used not just looked at the manual.
- Samurai: Ninja-compatible build tool written in C
- “Exit Traps” Can Make Your Bash Scripts Way More Robust and Reliable
- Buck2: Our open source build system
- Straightforward Makefile Tutorial that bring together best practices once and for all.