guile-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Help making a GNU Guix package for pure GNU Guile library


From: John Cowan
Subject: Re: Help making a GNU Guix package for pure GNU Guile library
Date: Sat, 30 Jan 2021 13:35:44 -0500

On Sat, Jan 30, 2021 at 12:17 PM Zelphir Kaltstahl <
zelphirkaltstahl@posteo.de> wrote:

There is a whole jungle of stuff, that I do not yet understand in depth.
>

You are not alone.  Warning: completely partisan posting here.

> Why does guile-haunt use Makefile.am? Why is a simple Makefile not
> sufficient?
>

Cargo-cult programming.  Autotools was created in a pre-Posix, pre-ANSI-C
environment that was *much* more diverse than anything today.
Consequently, it makes a whole bunch of unnecessary tests.  What's more,
the generated ./configure file is a great big mess; if it has a bug, you
are pretty much out of luck.

I posted this back in 2012 on another forum:

Chicken, an excellent implementation of Scheme, has a very badass attitude
to configuration, as follows: You tell “make” if you are running on Linux,
BSD, Mac OS X, Solaris, Haiku, Cygwin, MinGW, or MinGW+MSYS, and then a
short platform-specific makefile writes out a little .h file and builds
everything else as-is. If you are *not* running one of those, you’re on
your own — but the community welcomes patches.  [2020 update: You don't
even have to tell it your OS and toolchain any more; it looks at uname(1),
with a hack for MinGW where uname does not exist.]

This is the outcome of many years struggling with autotools, and several
more struggling with CMake. (Chicken compiles Scheme to C and is written in
Scheme, so it has to bootstrap itself, something CMake doesn’t or didn’t
like.)  [Supposedly CMake has fixed this problem now.]

By contrast, I did a bad restore from backup the other day, and Guile
(which uses autotools, small blame to the maintainers — the FSF insists on
it) got confused because I hadn’t restored the file timestamps properly, so
the byte-compiled Scheme looked out of date relative to the source. No
biggie, I just rebuilt Guile from scratch. Ouch. That took longer than it
would have to *re-restore the backup three times over*, and the hard time
was struggling with autotools; I had to run ./configure about twelve times
before it reported all the missing C-level dependencies (not really
missing, just out of date).

[end of quotation]

My own attempt at an answer: Autotools seem to try to be a compatibility
> layer for many different systems


Most of which no longer exist.  Autotools is the complete opposite of
Scheme: it piles feature on top of feature rather than removing the
weaknesses and restrictions that make additional features appear necessary.



John Cowan          http://vrici.lojban.org/~cowan        cowan@ccil.org
        Is it not written, "That which is written, is written"?


reply via email to

[Prev in Thread] Current Thread [Next in Thread]