From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pjotr Prins Subject: Re: Getting rid of build tools Date: Wed, 6 Jan 2016 06:22:36 +0100 Message-ID: <20160106052236.GA6816@thebird.nl> References: <20151227082320.GA613@thebird.nl> <87oadalfr7.fsf@dustycloud.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:39496) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aGgYk-0007aJ-MY for guix-devel@gnu.org; Wed, 06 Jan 2016 00:22:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aGgYh-00005H-Gr for guix-devel@gnu.org; Wed, 06 Jan 2016 00:22:58 -0500 Received: from mail.thebird.nl ([95.154.246.10]:34871) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aGgYh-0008WV-AY for guix-devel@gnu.org; Wed, 06 Jan 2016 00:22:55 -0500 Content-Disposition: inline In-Reply-To: <87oadalfr7.fsf@dustycloud.org> List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: Christopher Allan Webber Cc: guix-devel@gnu.org 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.