scripts
samurai
scripts | samurai | |
---|---|---|
2 | 10 | |
12 | 809 | |
- | - | |
4.6 | 2.7 | |
about 1 year ago | 26 days ago | |
Python | C | |
GNU Affero General Public License v3.0 | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
scripts
-
Ninja is enough build system
> 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
-
N2: Alternative Ninja Implementation
Shameless plug, I also wrote my own Ninja implementation [1]. I tried to make it easy to understand, while supporting all the Ninja features I used.
In the end, it was able to compile my own kernel and a few other Ninja projects.
[1]: https://github.com/gkbrk/scripts/blob/master/ninja.py
samurai
- Samurai: Ninja-compatible build tool written in C
- Oasis – a small, statically-linked Linux system
-
Ninja is enough build system
Samurai is a faster, drop-in replacement for ninja.
https://github.com/michaelforney/samurai
- samurai: Ninja-compatible build tool written in C
-
Using Landlock to Sandbox GNU Make
"If you want to do what "scrappy Google" did these days, then you should use Python + Ninja."
Or, better yet, use a simpler, faster and more portable^1 Ninja written in C.
https://github.com/michaelforney/samurai
1. The "simpler, faster, and more portable", are the author's claims, not mine. I am not the author.
- samurai: a ninja-compatible build tool written in C.
-
Moving SciPy to the Meson Build System
Why is Python not portable, as in, on which systems is "build Python and then use that to run Meson" not a reasonable option?
The CI for boson seems like it runs on platforms where Python definitely is available, but also I notice the CI uses samurai, a reimplementation of ninja with a similar motivation: https://github.com/michaelforney/samurai
Ninja is in C++ so I am even more confused at Sanurai.
Is this just an implementation-diversity thing? (which is great!)
-
xorg sucks, use swc
This means ninja is popular both on embedded for its tiny footprint (samurai is about 3k sloc and portable), and for humongous projects like Chrome, because it is infinitely scalable in complexity due to its genaration method.
-
Debian Running on Rust Coreutils
You could probably post-process samurai (a rewrite of ninja into C) into a single-file: https://github.com/michaelforney/samurai
What are some alternatives?
ninja-rs - An educational implementation of the ninja build system, based on ideas from the Build Systems a la Carte paper.
stm32-cube-cmake-vscode - STM32, VSCode and CMake detailed tutorial
n2 - n2 ("into"), a ninja compatible build system
vivarium - A dynamic tiling Wayland compositor using wlroots
Microsoft Research Detours Package - Detours is a software package for monitoring and instrumenting API calls on Windows. It is distributed in source code form.
build2 - build2 build system
dwm - LEV Linux's window manager (a fork of dwm)
Rust-for-Linux - Adding support for the Rust language to the Linux kernel.
velox - velox window manager
embedded-graphics - A no_std graphics library for embedded applications
nnn - n³ The unorthodox terminal file manager
velox - A C++ vectorized database acceleration library aimed to optimizing query engines and data processing systems.