alavrik / piqi-erlang

Protocol Buffers, JSON, XML data serialization system for Erlang
http://piqi.org/doc/erlang
Apache License 2.0
68 stars 28 forks source link

Add get-deps to default target. #14

Closed ddosia closed 10 years ago

alavrik commented 10 years ago

Apologies for the delay. May I ask you why you need this? You can always run make deps all.

It is fairly common to fetch third-party dependencies as a completely separate step and not run it is a part of compilation. In general, fetching dependencies is a one-time step (like running ./configure), and compilation can be called repeatedly while you are working on the project. Besides, rebar get-deps is slow.

ddosia commented 10 years ago

I compile with piqi-erlang with different tool, and this invokes make all within the repo if Makefile is found. Although I may try to tune this tool, but frankly speaking, this common practice of separating get-deps and make all step is only b/c of slow rebar get-deps, not because this is right thing to do.

yfyf commented 10 years ago

I agree with @ddosia in that the accepted practice is to have a single invocation of just make "do all the necessary work".

@alavrik, this PR would have the desired effect already though, since the deps target would create deps dir and rebar get-deps would never be executed again, so no "slowness".

alavrik commented 10 years ago

@yfyf to be fair, in this case, deps is marked as .PHONY target and make deps will trigger a rerun of rebar get-deps (see https://github.com/alavrik/piqi-erlang/blob/master/Makefile#L30). Rebar has a terrible interface, so I typically call make deps when I need it.

It looks like a question of whether make should fetch dependencies automatically is a matter of personal preference. I like the traditional way.

Besides, builds with 2 or 3 steps are quite common and any reasonable build system should be able to do this. If not, a small wrapper can solve this problem.