[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.
- On a Guile-based Build-Tool complimenting Guix,
Divya Ranjan <=