Hacker News new | ask | show | jobs
by magv 2289 days ago
I have used this in one of my projects, but in the end had to abandon it: the problem is that Guile itself requires GNU make during build, which creates a circular dependency, and thus building it with e.g. FreeBSD ports required manual intervention every time you updated it. This combined with the fact that this integration is only available since GNU make 4.0, and some Linux distributions still have older make, made it a hassle to setup. This should improve over time, of course.

Still a great feature though. Without it there are e.g. manipulations on the file paths that you can not do at all, or can do but only as a hack. Case in point: "GNU Make Standard Library" (https://gmsl.sourceforge.io/) is a collections of such hacks; here's its definition of 'strlen':

    strlen = $(call assert_no_dollar,$0,$1)$(strip $(eval __temp := $(subst $(__gmsl_space),x,$1))$(foreach a,$(__gmsl_characters),$(eval __temp := $$(subst $$a,x,$(__temp))))$(eval __temp := $(subst x,x ,$(__temp)))$(words $(__temp)))
1 comments

> only available since GNU make 4.0, and some Linux distributions still have older make, made it a hassle to setup. This should improve over time, of course.

That feels like an outdated statement, make 4.0 came out in 2013. The only non-EOL system I can think of off the top of my head that isn't shipping >=4.0 is macOS (because they won't upgrade to anything GPLv3).

However, unfortunately there's a popular CI system (cough CircleCI cough) that's still using Ubuntu 14.04 by default, which has been EOL for almost a year now. (And others, such as Travis-CI, used it by default right up until it was EOL).

Oh, if you appreciate gmsl, you might also appreciate a book by the same author ('jgrahamc), The GNU Make Book. Some of the things in gmsl are certainly hacks, but a lot of it is quite reasonable if you start reading Make macros as "lisp, but with a bunch of extra dollar-signs and commas".

> The only non-EOL system I can think of off the top of my head that isn't shipping >=4.0 is macOS (because they won't upgrade to anything GPLv3).

RHEL 7 has Make 3.82. Its regular life cycle ends in 2024, and I assume it will have an extended support period after that.

TIL that after the 5 year "full support" period (which is what I had in my head), RHEL has a 5 year "maintenance support" period (and that CentOS matches that 10-year total) (and then the "extended lifecycle support" arbitrarily long after that for whoever wants to pay enough).

(Aside: 3.82 is a surprising version to be stuck with... most distros went straight from 3.81 to 4.0, because by the time the show-stopper bugs in 3.82 were all patched, 4.0 was happening.)

Scientific Linux 6.10 has make 3.81, CentOS 7.7 has 3.82. These long-term-support distros have old software by their nature, and sometimes you're just stuck with one of them unfortunately.