On 31 August 2016 at 13:49, Cem Karan <cfkar...@gmail.com> wrote: >> Has anyone else found this to be the case? Is there any "make replacement" >> out there that focuses more on named sets of actions (maybe with >> prerequisite/successor type interdependencies), and less on building file >> dependency graphs? > > Maybe Ninja (https://ninja-build.org/)? I personally like it because of how > simple it is, and the fact that it doesn't use leading tabs the way that make > does. It is intended to be the assembler for higher-level build systems > which are more like compilers. I personally use it as a make replacement > because it does what I tell it to do, and nothing else. It may fit what > you're after.
It still seems focused on the file dependency graph (at least, from a quick look). I'm thinking more of the makefile pattern myproj.whl: pip wheel . ve: build virtualenv ve ve/bin/python -m pip install ./*.whl test: ve push ve bin/python -m py.test popd clean: rm -rf ve Basically, a couple of "subcommands", one of which has 2 prerequisites that are run if needed. Little more in practice than 2 shell scripts with a bit of "if this is already done, skip" logic. Most makefiles I encounter or write are of this form, and make essentially no use of dependency rules or anything more complex than "does the target already exist" checks. Make would be fine for this except for the annoying "must use tabs" rule, and the need to rely on shell (= non-portable, generally unavailable on Windows) constructs for any non-trivial logic. In the days when make was invented, not compiling a source file whose object file was up to date was a worthwhile time saving. Now I'm more likely to just do "cc -c *.c" and not worry about it. Paul -- https://mail.python.org/mailman/listinfo/python-list