Hi Arun,
Am 6. Juli 2023 16:35:06 MESZ schrieb Arun Isaac :
>
> 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