Earlier quoted context omitted.
I'm not commenting about Drake or its usefulness, but concerning (GNU) make : * you can specify several inputs & outputs per rule * you can specify which script interpreter is used ($SHELL), and python can be it. See https://www.gnu.org/software/make/manual/html_node/One-Shell... * downstream make can indeed be interesting. however you can try to build all ultimate targets ans let make sort out which ones can be avoi…
AFAIK, you can't specify several outputs per rule in GNU Make without relying on horribly complex workarounds. It's actually the feature I miss the most in it.
Buck – A build system developed and used by Facebook
61–70 of 131 posts
Re: Buck – A build system developed and used by Facebook
#62Re: Buck – A build system developed and used by Facebook
#63It's dizzying.
I wonder if build-system complexity is an artifact of reducible complexity in other areas.
Perhaps the next time we develop a language, it should comprise of it's own build system that doesn't require any configuration, or rather minimal. To the point wherein we didn't need to think that much beyond the obvious.
Re: Buck – A build system developed and used by Facebook
#64Continuing the trend of Facebook creating competing tools more often than persisting with and improving existing ones, which I feel dilutes effort and has fragmented a number of ecosystems. We've got a couple of Facebook fans at work, which has left us with a number of our systems using different tools to accomplish essentially the same tasks, and no strong case on either side for us to standardise on one of them. Ma…
Typically they face a problem that few people have ever faced. There may be an existing solution, but not in the open. So they have to roll their own.
Others in this thread say Buck was inspired by Blaze. That seems reasonable and I hardly think Facebook can be blamed for rolling their own when that was the only available option.
You might as well blame Google for fragmenting the Hadoop ecosystem by creating their MapReduce framework.
Re: Buck – A build system developed and used by Facebook
#65Earlier quoted context omitted.
AFAIK, you can't specify several outputs per rule in GNU Make without relying on horribly complex workarounds. It's actually the feature I miss the most in it.
Is this too complex and/or insufficient? https://www.gnu.org/software/automake/manual/html_node/Multi...
Re: Buck – A build system developed and used by Facebook
#66Earlier quoted context omitted.
AFAIK, you can't specify several outputs per rule in GNU Make without relying on horribly complex workarounds. It's actually the feature I miss the most in it.
Is this too complex and/or insufficient? https://www.gnu.org/software/automake/manual/html_node/Multi...
Re: Buck – A build system developed and used by Facebook
#67Earlier quoted context omitted.
Is this too complex and/or insufficient? https://www.gnu.org/software/automake/manual/html_node/Multi...
GNU Make works intuitively in pattern rules, but differently for normal rules? Uh oh.
On. Every. Single. Run.
Yup.
Re: Buck – A build system developed and used by Facebook
#68I don't work in a shop where performance/speed is important, but I am looking for other ways to do things I would do in Make but...not in Make. For example, my use-case is similar to what Mike Bostock described in "Why Use Make" [0] when explaining how he uses Make to build out his data tranformation process. Most of my work is data transformation/small-scale ETL, but I just haven't been able to get into Make beyond…
The two weak points are: (1) multiple outputs from a compilation step (yytab.c yytab.h from yacc) is not properly supported, and (2) no windows support. Other than that it's the perfect minimalistic make replacement -- what make should have been.
Additionally, there tup[1]. With some assumptions about the build process that usually hold in non-distributed builds, it is the fastest, simplest make replacement; You just write a list of commands that builds your final outputs, and by tracing the processes it figures out exactly what needs to be done next time -- nothing more, and nothing less.
[0] https://github.com/apenwarr/redo [1] http://gittup.org/tup/
Re: Buck – A build system developed and used by Facebook
#69Earlier quoted context omitted.
Doesn't support windows. You're better off with bazel or GN.
How do you in 2017 come up with a build system that doesn't even run on Windows.
Re: Buck – A build system developed and used by Facebook
#70I don't work in a shop where performance/speed is important, but I am looking for other ways to do things I would do in Make but...not in Make. For example, my use-case is similar to what Mike Bostock described in "Why Use Make" [0] when explaining how he uses Make to build out his data tranformation process. Most of my work is data transformation/small-scale ETL, but I just haven't been able to get into Make beyond…
Edit to add: here's a specific complaint. To run arbitrary commands and shell scripts, you use genrule(), but in Buck a genrule can only have a single output. I used Buck to preprocess and organize the assets for a game, and that restriction made it very awkward.
It's been a while since I used Buck, and it looks like this has improved a bit -- you can now output a folder of files: https://buckbuild.com/rule/genrule.html