[Top][All Lists]

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

Re: Setting up guix source tree for testing a package

From: Joshua Branson
Subject: Re: Setting up guix source tree for testing a package
Date: Fri, 12 Mar 2021 14:59:21 -0500
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux)

Zelphir Kaltstahl <> writes:

> Hello Guix Users,
> I am trying to set up GNU Guix for package testing, as I want to test a 
> package
> before sending in a patch to add it to GNU Guix.
> I'll describe the steps I am taking and where I am seeing them in the docs in
> the following.
> All is happening inside a VM, which runs a Debian 10. The VM is almost fresh,
> except for guest additions and git and vim and such things.

This sounds a little complicated...trying to develop things for guix
inside a virtual machine that's running Debian...I mean that sure makes
the testing REALLY potentially reproducible...But wouldn't it be
easier/simpler to do development for guix whilst using guix (or guix
system) on bare metal?

If you really prefer to develop for guix in a vm, you can download guix
virtual machine images here:

Oh, having read the building from git section in the guix manual...they
do make it should like you should start from a virtual machine...What
operating system are you running on bare metal?  That's what I would use
to develop for guix.

>> As you can see, there is a chicken-and-egg problem: you first need to have
> Guix installed. Typically you would install Guix System (see System
> Installation) or Guix on top of another distro (see Binary Installation); in
> either case, you would verify the OpenPGP signature on the installation 
> medium.
> This “bootstraps” the trust chain.

May I suggest that this chicken and egg problem exists because you chose
to use a debian vm?  This is not a criticism.  :)

> But here I am facing a problem. I have no clue what to set the
> `--localstatedir=directory` to. The docs tell me it is important, but I see no
> instructions on how to choose a directory for the local state, when I have
> already a Guix installed (binary installation on foreign distro). The linked
> docs about the
> <> do not help me
> choosing it either, because that page is about the store itself, not about my
> specific scenario of doing things from Guix source tree. Since I intend to 
> build
> a package inside the Guix source tree, I think it should exactly _not_ be 
> /var,
> as that would conflict with the Guix installation, that I had to do to create
> the pre-inst-env script.

I'm not certain how to answer this.  Since I develop for GNU Guix on
guix system, I always run "./configure --localstatedir=/var".  This
works for me!

> What is the idea for the local state directory? Is it the location of a
> temporary store, which will contain anything, that I produce using the
> pre-inst-env script? That is what I am guessing. In that case I think
> `localstoredir` might be a good alias for `localstatedir`.

I think localstatedir is the location of guix specific things?  My
/var/guix contains gcroots, profiles, substitute, and daemon-socket

I applaud your attention to detail and trying to submit a "perfect"
patch to GNU guix.  :) That really does help the project have good
standards.  Trust me not all of the guix patches are perfect.  Somehow
some of mine were merged.  :)

> When I try running:
> ~~~~
> make authenticate
> ~~~~
> I get an error:
> ~~~~
> $ make authenticate
> Authenticating Git checkout...
> /bin/bash: line 1: guix: command not found
> make: *** [Makefile:6290: authenticate] Error 127
> ~~~~

I've run into this issue before too...hmmm.  How did I fix it?  I think
that you need to download Ludo's gpg keyring...

gpg --import public.key

Then you should be able to run:

     git fetch origin keyring:keyring
     guix git authenticate 9edb3f66fd807b096b48283debdcddccfea34bad \
       "BBB0 2DDF 2CEA F6A8 0D1D  E643 A2A0 6DF2 A33A 54FA"

> Where did I go wrong?
> Regards,
> Zelphir

I think you just tried to start developing in a "perfect" but difficult
way.  :)  If you already use GNU/Linux as your main OS, install guix on
it, and develop from that OS.  If you are running guix system, develop
from that.  Best of luck!

P.S.  You might find my online videos where I try to contribute to guix
helpful too: They
may be a little boring, and perhaps not the best way to develop, but the
videos show me developing in some kind of haphazard way.  My newer
videos involving endlessh are probably close to the "correct" way.

Joshua Branson (joshuaBPMan in #guix)
Sent from Emacs and Gnus
  "You can have whatever you want, as long as you help
enough other people get what they want." - Zig Ziglar

reply via email to

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