guix-devel
[Top][All Lists]
Advanced

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

Re: GSOC draft


From: Ludovic Courtès
Subject: Re: GSOC draft
Date: Fri, 25 Mar 2016 14:14:49 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)

Hi, Alex!

Alex Vong <address@hidden> skribis:

> Deliverable:
>   An extensible working bare-bone build system in Guile
> Plan:
>   Idea:
>     Autotool separates the configure phase and the build phase,
>     in which the configure phase is responsible of probing feature
>     provided by system, while the build phase actually does dependency 
> tracking
>     and performs the build. This is not optimal since global variables has to
>     pass to another phase, one has to make sure to perform the probing
>     in the right order. Also, many probing are done regardless whether they
>     are needed. This causes performance issue when the result is not cached.
>     So, the idea is to integrate the 2 phases,
>     so that every declaration is approximately:
>       (target (input ...) rule-to-make-target-from-input)
>     and rule-to-make-target-from-input should return a Boolean indicates
>     if the build succeed.
>     For instance we can probe the C compiler using the following rule:
>       (gcc () (and=> (return-path-of-gcc-if-exist-else-return-false)
>                      (lambda (path) (make-c-compiler path))))
>   Proof of concept:
>     Incomplete port of Chicken port of PLT (now Racket) make module in Guile.
>     See build instruction of <https://gitlab.com/alexvong1995/calc>,
>     it uses that incomplete port to build.
>   1. Port the Chicken port of PLT (now Racket) make module to Guile.
>   2. Rewrite the make macro using syntax-rules.
>   3. Add support for feature probing.
>   4. Add support for multiple targets. (mid-term?)
>   5. Add support for parallel build and opportunistic execution.
>   6. Discuss with mentor to proceed.

>From this message it is not entirely clear to me whether Guix would be
used at all, and how things would fit together.  I believe it would make
a lot of sense to use Guix to build such a thing but then of course, it
would only work for users would have a running guix-daemon.

WDYT?

I would suggest looking at the prototype Make replacement that Eelco
Dolstra wrote as part of his PhD thesis on Nix:

  http://nixos.org/~eelco/pubs/phd-thesis.pdf (Chapter 10)

There’s also this defunct project about a Make replacement in Guile (not
connected to Guix and Nix):

  http://home.gna.org/conjure/

Maybe Pjotr has other comments.

Thanks,
Ludo’.



reply via email to

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