Hi Zelphir,
> (1) The cookbook does not even mention the guile-build-system. […] > I guess this is, because the cookbook tries to be generic in a way, to apply > to > all languages, if only one uses autotools, as those are applicable to all > languages. No, you’re overthinking it :) The cookbook is pretty short. It started because blog posts eventually go stale, so having some of these useful blog posts updated with Guix seemed like a good idea. The cookbook is supposed to include useful tutorials, recipes, extensive examples — all stuff that would bloat up the reference manual or make it lose scope. The fact that the cookbook doesn’t mention the guile-build-system is due to two reasons: 1) it’s not a reference manual, but a collection of tutorials 2) nobody contributed a tutorial involving the guile-build-system. 1 is by design, but 2 is not. We would certainly add a tutorial for simple Guile packages if someone contributed it. > (2) The hello package example is using the gnu-build-system. I guess that > means, > that Guix will go through the usual autotools steps, after extracting a > tarball > or cloning a repository. However, then it would seem, that the success of the > installation of the package largely hinges on what is defined in the autotools > related files, like Makefile and such, which are part of the downloaded tar. Correct. The GNU build system commonly consists of a bootstrap step, the execution of the configure script, followed by “make” and “make install”. The gnu-build-system abstraction merely automates that and assumes that these things exist and are in a functional state, so that it can call them with certain default arguments. > Those however, are not described in the cookbook. If one is to create a > package, > which makes use of the gnu-build-system, then a description of how to get this > done would be good to have. People have done it before, but documentation does > not capture it. I can understand the desire for comprehensive documentation, but I think that’s too far out of scope for even the cookbook. The GNU build system is just very *very* common, which is why the tutorial uses the gnu-build-system abstraction. It something you are bound to encounter when packaging non-trivial C/C++ applications. Guix has abstractions for many other build systems, such as the r-build-system, or the cmake-build-system. But I think it would be excessive to add tutorials on how to write an R package according to specifications, or how to write CMakeList.txt for a cmake-using project. > Then there is another confusion: The definition you have written – Is that for > editing the `guile.scm` in the Guix source tree Not, for guile.scm but for gnu/packages/guile-xyz.scm or rather the (gnu package guile-xyz) module. It works in that context because that module already has all the necessary imports. -- Ricardo