Re: [dev] suckless distro

From: Sylvain BERTRAND <sylware_AT_legeek.net>
Date: Wed, 25 Jun 2014 20:38:06 +0200

On Wed, Jun 25, 2014 at 11:52:07PM +0530, Weldon Goree wrote:
> On 06/25/2014 05:35 PM, Sylvain BERTRAND wrote:
> >
> > Using a makefile is overkill. Should be a sh script.
> >
> > Makefiles should be used only when there are too many source
> > files to recompile for a build increment.
>
> Huh. Make strikes me as one of the more suckless tools out there. It
> does exactly what it says it does, and nothing else. It doesn't "reach
> inside" the tools you tell it to use (except for the fact that it more
> or less intrinsically knows the workflow 99% of C compilation projects
> use, but you can also make it forget that easily). It doesn't complain
> if you use it for something outside of its intended scope -- I'm a
> sysadmin, not a "real" programmer, and I've used make in just about
> every aspect of sysadmining, one way or another. It even works as a
> fairly usable rc / daemon control system (it could be init itself, for
> that matter). But it does none of those things by bloating; it does them
> by staying out of the way as much as possible.
>
> It does one thing well (running commands based on a supplied command
> definition and dependency file), liberally reads a plaintext
> human-readable file as input, places no artificial limitations on its
> usability, and acts deterministically and predictably*. That's what
> sucking less is, really.
>
> Now, a downside of being a good tool is that it gets misused a lot. You
> could say the same thing of a good power drill. Make is the medium into
> which GNU's autohell gets translated, but that's mostly because it's one
> of the few systems both simple and powerful enough to survive that
> monstrosity and still mostly function.
>
> But, back to your point, I don't know that a custom shellscript is "more
> lightweight" in any important sense than a makefile. Make is on
> basically any system with a compiler -- if you're using simple, portable
> makefiles (and you should), then it's actually a more stable API to work
> with than trying to work around all the various shells and their
> versions that might be out there. Using a shellscript opens you up to
> "oh, that doesn't work in bash < 4.1" and "wait, what if somebody has
> /bin/sh linked to csh?" (to say nothing of "where do the semicolons go
> in a bash for loop, again?"). To me, make should be used when you need a
> specific set of commands run in a dependency relationship, particularly
> one involving file mtimes. Many, many builds work that way, even simple
> ones.
>
> If you'd prefer, look at make as a rather clever sed/awk script that
> transforms a yaml file into a series of sh commands.
>
> * Having behavior tied to mtimes of files in the environment makes it
> somewhat less than deterministic, in fairness.
>
> Weldon

Could you repost on the thread I was rightfully requested to
create for this topic.

Thank you.

-- 
Sylvain
Received on Wed Jun 25 2014 - 20:38:06 CEST

This archive was generated by hypermail 2.3.0 : Wed Jun 25 2014 - 20:48:11 CEST