Live data from Hacker News

Qake: GNU Make-based build system with a different approach

github.com

11–20 of 33 posts

Re: Qake: GNU Make-based build system with a different approach

#11
post #5
post #4

I've always wondered why Shake[0] wasn't more popular. Anyone not like Shake or know why others don't, or is this just a case of not being known? 0: https://github.com/ndmitchell/shake

The Manual[0] contains an intro that isn't particularly compelling. It contains things like: phony "clean" $ do putNormal "Cleaning files in _build" removeFilesAfter "_build" ["//*"] Which would be the make equivalent: clean: rm _build/* Now that's obviously the trivial example. But its not trivial to drop make entirely for something entirely different. A make solution can slowly get more complicated over time. It lo…

So as someone thats recently been getting into Haskell I can say this, that example while sure its rather much more verbose for the simple case, the more complex stuff is where it starts to shine more.

That and without knowing haskell a little a lot of that will look like needless chatter. But like rake once you realize the dsl is just Haskell it starts to fall into place more.

Re: Qake: GNU Make-based build system with a different approach

#12
I'm finding that for compiling code usually it is the configuration that makes life hard rather than the build system part. I've been using cmake [1] which makes the rules to build object files, libraries, executables pretty simple although determining and adapting to the eccentricities of any arbitrary system's environment is painful.

I am also liking snakemake[2] these days for running arbitrary chains of jobs that have dependencies (in addition to build system). It has a nice syntax, easy to build and run dependency graphs of different jobs and has built in multithread support and cluster integration if you want to scale up to bigger data sets. Very nice middle ground being much easier to maintain and rerun than a pile of shell scripts but much lighter weight than a whole hadoop "big data" setup.

[1] http://www.cmake.org [2] https://bitbucket.org/johanneskoester/snakemake/wiki/Home

Re: Qake: GNU Make-based build system with a different approach

#13
post #11
post #5

Earlier quoted context omitted.

The Manual[0] contains an intro that isn't particularly compelling. It contains things like: phony "clean" $ do putNormal "Cleaning files in _build" removeFilesAfter "_build" ["//*"] Which would be the make equivalent: clean: rm _build/* Now that's obviously the trivial example. But its not trivial to drop make entirely for something entirely different. A make solution can slowly get more complicated over time. It lo…

So as someone thats recently been getting into Haskell I can say this, that example while sure its rather much more verbose for the simple case, the more complex stuff is where it starts to shine more. That and without knowing haskell a little a lot of that will look like needless chatter. But like rake once you realize the dsl is just Haskell it starts to fall into place more.

Which is fine if you're using Haskell. I'm not sure I see the case for something like this if you're not using Haskell. Adding another package management system (cabal) into the mix seems like a lot of work.

Of course I don't think language-agnostic build systems in general make a whole lot of sense unless you have a huge enough project to have a team dedicated to the build system.

Re: Qake: GNU Make-based build system with a different approach

#14
I've been recently using Tup [0] with great success in a project. It is interestingly different from other build systems in the sense that it defines dependencies in the opposite direction (from source file to product, not the other way around). It is incredibly fast and simple.

[0]: http://gittup.org/tup/

Re: Qake: GNU Make-based build system with a different approach

#15
post #8
post #6

wget --no-check-certificate https://... - | sh Might as well not have that https in there at all... sigh.

It's a self-signed cert - and just as encrypted as it would be with a traditionally signed cert. This is the half of SSL that I care about - I really don't care if you handed your money over to some organization that verified you have a working phone number. -- Actually it doesn’t appear to be a self-signed cert in this case - or even necessary. That cert is playing fine with both safari, and GNU Wget 1.14.

[deleted]

Re: Qake: GNU Make-based build system with a different approach

#16
post #8
post #6

wget --no-check-certificate https://... - | sh Might as well not have that https in there at all... sigh.

It's a self-signed cert - and just as encrypted as it would be with a traditionally signed cert. This is the half of SSL that I care about - I really don't care if you handed your money over to some organization that verified you have a working phone number. -- Actually it doesn’t appear to be a self-signed cert in this case - or even necessary. That cert is playing fine with both safari, and GNU Wget 1.14.

When you're installing software from https, you're not trying to make sure nobody can see the contents of the message (it's publicly available), you're trying to ensure that there's no man in the middle tampering with your software en route.

A self signed cert which you can't independently verify is entirely worthless in this context. A man in the middle could simply substitute his own self signed cert and you'd be non the wiser.

You use signed certificates so that a vendor can prove their identity reliably. I care that the software I'm downloading actually comes from the owner of the domain I'm downloading it from. I can't do that with a self-signed cert.

Re: Qake: GNU Make-based build system with a different approach

#17
post #5
post #4

I've always wondered why Shake[0] wasn't more popular. Anyone not like Shake or know why others don't, or is this just a case of not being known? 0: https://github.com/ndmitchell/shake

The Manual[0] contains an intro that isn't particularly compelling. It contains things like: phony "clean" $ do putNormal "Cleaning files in _build" removeFilesAfter "_build" ["//*"] Which would be the make equivalent: clean: rm _build/* Now that's obviously the trivial example. But its not trivial to drop make entirely for something entirely different. A make solution can slowly get more complicated over time. It lo…

Yes, but that 'make clean' will stop working if there happens to be a file named 'clean' in the directory. You need to mark clean as a .PHONY target.

Make is complicated. By the time you get all *.c files to rebuild based upon a change to any header they include, your makefile is going to look like a magic spell. And it only gets worse from there if you're doing any code generation. Make is concise, but it's weird and painful.

I've not actually tried shake, but it looks a lot less magical. I'm willing to type a little more if it means I can actually understand it when I look at it again tomorrow. Or, that my coworkers can understand me today.

Though, on an open-source project I'd probably use CMake just for ubiquity. It has the added bonus of being able to spit out either makefiles or ninja build files (which can be used by shake).

Re: Qake: GNU Make-based build system with a different approach

#18
post #8
post #6

wget --no-check-certificate https://... - | sh Might as well not have that https in there at all... sigh.

It's a self-signed cert - and just as encrypted as it would be with a traditionally signed cert. This is the half of SSL that I care about - I really don't care if you handed your money over to some organization that verified you have a working phone number. -- Actually it doesn’t appear to be a self-signed cert in this case - or even necessary. That cert is playing fine with both safari, and GNU Wget 1.14.

A self-signed is worthless since it can be trivially MITM'd.

Re: Qake: GNU Make-based build system with a different approach

#19
post #14

I've been recently using Tup [0] with great success in a project. It is interestingly different from other build systems in the sense that it defines dependencies in the opposite direction (from source file to product, not the other way around). It is incredibly fast and simple. [0]: http://gittup.org/tup/

Tup came to my mind too when reading this. It must be doing a similar kind of dependency tracking to only rebuild what is necessary.
Post reply on HN