Hi, Alex! Alex Vong <alexvong1...@gmail.com> 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’.