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

Reply via email to