guix-devel
[Top][All Lists]
Advanced

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

Re: Getting rid of build tools


From: Pjotr Prins
Subject: Re: Getting rid of build tools
Date: Wed, 6 Jan 2016 06:22:36 +0100
User-agent: Mutt/1.5.21 (2010-09-15)

On Mon, Dec 28, 2015 at 09:06:40AM -0600, Christopher Allan Webber wrote:
> I guess these things could be done through Guix itself.  What I'd rather
> see though is a "./configure && make" compatible interface system for
> package building which uses Guile as its configuration language.
> Automake and friends are great when they're working, but I'd love a
> system that relied less on string-macro expansion and etc when I have to
> debug them.

Interestingly, the Guile extension of GNU Make can address this pretty
much. See

  
https://www.gnu.org/software/make/manual/html_node/Guile-Example.html#Guile-Example

The way I read this is that string-macro expansion and make file
generation (autotools or cmake) can be replaced with Guile
scripts. If one only targets GNU Guix these can be fairly simple -
much of complexity actually comes from targeting different
architecture and deployment systems.

> I think that would be an interesting project.  It would be nice to see
> it happen outside of Guix though, so it could be used more generally.

Build tools such as automake and cmake are complex beasts. What they
actually do is target multiple build environments by generating make
files using a complex list of string expansions. Complexity, in
general, means hard to understand, change and maintain. The bad thing
is that almost every software project has to deal with this complexity
to make the software deployable.

What is wrong with these build tools? In short:

1. Complex - and therefore hard to understand and maintain
2. Simplistic language - simple string expansion systems are not nice and not 
DRY
3. Race conditions - make's time stamps are not suitable for building across 
servers
4. Different combinations of options are badly handled
5. No intermediate representation

The Guile extension to GNU Make addresses 1 and 2, but not 3-5.

This could be a largish project - not exactly what I need right now -
but I will try and look for others to help out. Maybe in time we'll
get something. I think we can start simple with Guix and the Guile
extension of GNU Make and replace autotools/cmake/rake first in a few
projects I have.

Pj.




reply via email to

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