guix-devel
[Top][All Lists]
Advanced

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

On a Guile-based Build-Tool complimenting Guix


From: Divya Ranjan
Subject: On a Guile-based Build-Tool complimenting Guix
Date: Thu, 19 Dec 2024 20:12:21 +0000
User-agent: Gnus/5.13 (Gnus v5.13)

Hello Guix,

The other day, after being frustrated of build systems (auto-tools, meson, 
maven etc.), I wondered why doesn’t Guix which has such powerful tools within 
it (`guix build`, `guix pack` etc.) also not have a purely Guile-based build 
tool? After all, our goal is to make deployment, and building both more 
declarative and away from the all-too-familiar “dependency hell”.

I am not exactly sure how I want to go with this, but I want to extend (if 
needed) the capabilities of Guix, to allow the developer of a package to use it 
also to build the package effectively replacing existing build tools. Since we 
already have build-system, instead of executing make (or whatever other tool) 
commands from it, we could modify it to itself have all those things that a 
Makefile would have.

The developer would use Guile to declare their build config, I am again not 
sure what this might exactly look like, but can’t we have it such that we 
provide the developer with some tools to _declare_ a custom and 
package-specific build-system in Guile (just like our familiar 
gnu-build-system), but this is purely in Guile and executes whatever commands, 
path declarations and other interactions (such as calling gcc) directly from 
Guile and not by just calling `make`. I haven’t thought through this clearly, 
but even if this doesn’t work, the main idea I’d like to propose is to fully 
replace existing build-tools by making a new Guile build tool to work alongside 
Guix.

Ideally, once the developer has a build config ready, one can just wrap it up 
with a package definition in Guile, just like the ones we create to package 
something upstream. This package definition can then be used in `guix build -f 
package.scm` to result in a fully transactional building process that focuses 
not on getting out of dependency hell, but just declaring your config right. 
And all of this without having to learn yet another build tool that might 
disappear, and of course, without leaving the comfortable world of Lisp 
(Scheme).

I was indicated by others that such an idea has previously been conceievd among 
Guix developers themselves, namely as a GSoC proposal[0]. I couldn’t find if 
that has progressed towards anything, nor could find anything in the mailing 
list. I did see Pjotr volunteering to mentor for it, I’ve CC-ed them to see if 
they’re still interested in such a project. Meanwhile, I’d like input from 
other Guix core developers on what they think of this, and if they could 
provide me with some leads on where to go with this.


[0]: https://libreplanet.org/wiki/Group:Guix/GSoC-2024

Regards,
-- 
Divya Ranjan,
Philosophy, Mathematics, Libre Software.



reply via email to

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