Hi Arun,

Am 6. Juli 2023 16:35:06 MESZ schrieb Arun Isaac <arunis...@systemreboot.net>:
> 
> Hi,
> 
> This is with reference to the "Level 2: The repository as a channel"
> section in the Guix blog post "From development environments to
> continuous integration—the ultimate guide to software development with
> Guix"[1]. This section describes how to convert a project repository
> into a Guix channel so that the repository can double as a way to
> distribute packages. I have been trying to follow the instructions and
> have hit a little snag.
> 
> The post says the source field of the package definition should be a
> local-file file-like object. This is fine as long as we are using `guix
> build' to build packages in the repository. But, when the repository is
> distributed as a channel, the local-file becomes meaningless. The
> channel only has access to the sources under the .guix/modules directory
> and none of the sources required to build the package itself.
> 
> It seems to me that it is not possible to distribute project
> repositories as Guix channels. But hopefully, I'm missing something
> simple. Could anybody please clarify?

I have recently followed the instructions from this blog post as well and 
indeed you are right that it does not work as advertised. There's however only 
a small mistake in the changes for Level 2. You have to replace the relative 
path in the local-file form with "../.." as that gives you the root of your 
source tree relative to the new location of the Scheme file. Then everything 
works nicely. Even building the package with `guix build -f guix.scm' works 
from the root of the tree. Somehow Guile computes the directory relative to 
real file and not the symlink. Didn't expect.

Bonus: I have even setup CI via Cuirass which was surprisingly easy on a Guix 
system and now it rebuilds my package every time one of its inputs in Guix 
changes ❤️ This is awesome! Thanks for this blog post, it was inspiring.

Hope that helps

Best

-- 
Daniel

Reply via email to