Re: How to properly use channels? (my 'guix pull' throws error)

2018-10-02 Thread Ricardo Wurmus
Hi,

>> Could you please tell us which “guix” you are using?  “guix pull”
>> installs a new Guix to ~/.config/guix/current/bin.  Are you using Guix
>> from that directory?
>
> Now I see the problem. I'm using ~/.guix-profile/bin/guix. Using
> ~/.config/guix/current/bin/guix, I'm able to build the chromium
> package.
>
> So does this mean that, I should put this path
> (~/.config/guix/current/bin) before (~/.guix-profile/bin) in $PATH?
> Otherwise it will appear that "guix pull" does not upgrade "guix".

Yes, this is correct.  “guix pull” does print a message suggesting this
(at least the first time), but it is easily overlooked.

> What is the purpose of ~/.guix-profile/bin/guix then? Since it is
> symbolic linked to /gnu/store/xxx-guix, it is only updated after "guix
> package -u"?

This is how the binary installation method works; it provides a
pre-populated profile containing a fully working Guix.  This was a good
idea at a time when “guix pull” would only install some Guile modules
that the system-wide “guix” command would find and load, but it can be a
bit confusing now that the “guix pull” has changed.

Maybe the binary install method needs changing.  A discussion about this
has been started elsewhere on guix-devel, but it hasn’t been concluded
yet.

--
Ricardo




Re: How to properly use channels? (my 'guix pull' throws error)

2018-10-02 Thread Hebi Li
On Tue, Oct 02 2018, Ricardo Wurmus wrote:

>> On Tue, Oct 02 2018, Ricardo Wurmus wrote:
>>
>>> AFAIK this defect has been fixed a couple of days ago.  Unfortunately,
>>> you need to upgrade Guix with “guix pull” but without channels.  Once
>>> upgraded you can use channels again.
>>>
>>
>> I actually ran "guix pull" right before I tried Ludovic's suggestion
>> earlier today. Anyway I pulled again, and did a full system upgrade
>> (guix package -u) and also reconfigure (sudo -E guix system reconfigure
>> config.scm), and even a reboot.  The "guix pull" command is still
>> complaining "no code for module (gcrypt hash)".
>
> Could you please tell us which “guix” you are using?  “guix pull”
> installs a new Guix to ~/.config/guix/current/bin.  Are you using Guix
> from that directory?

Now I see the problem. I'm using ~/.guix-profile/bin/guix. Using
~/.config/guix/current/bin/guix, I'm able to build the chromium
package.

So does this mean that, I should put this path
(~/.config/guix/current/bin) before (~/.guix-profile/bin) in $PATH?
Otherwise it will appear that "guix pull" does not upgrade "guix".

What is the purpose of ~/.guix-profile/bin/guix then? Since it is
symbolic linked to /gnu/store/xxx-guix, it is only updated after "guix
package -u"?


>> I thought ~/.config/guix/current symlink *is* the local source tree, and
>> this document says both "./pre-inst-env guix pull" and "guix pull"
>> upgrade it.
>
> ~/.config/guix is merely where “guix pull” installs new versions of
> Guix.  The source tree is wherever you run Guix via “pre-inst-env”.
>

I see. Thanks!


-- 
Hebi



Re: How to properly use channels? (my 'guix pull' throws error)

2018-10-02 Thread Ricardo Wurmus
Hi,

> On Tue, Oct 02 2018, Ricardo Wurmus wrote:
>
>> AFAIK this defect has been fixed a couple of days ago.  Unfortunately,
>> you need to upgrade Guix with “guix pull” but without channels.  Once
>> upgraded you can use channels again.
>>
>
> I actually ran "guix pull" right before I tried Ludovic's suggestion
> earlier today. Anyway I pulled again, and did a full system upgrade
> (guix package -u) and also reconfigure (sudo -E guix system reconfigure
> config.scm), and even a reboot.  The "guix pull" command is still
> complaining "no code for module (gcrypt hash)".

Could you please tell us which “guix” you are using?  “guix pull”
installs a new Guix to ~/.config/guix/current/bin.  Are you using Guix
from that directory?

> I thought ~/.config/guix/current symlink *is* the local source tree, and
> this document says both "./pre-inst-env guix pull" and "guix pull"
> upgrade it.

~/.config/guix is merely where “guix pull” installs new versions of
Guix.  The source tree is wherever you run Guix via “pre-inst-env”.

--
Ricardo




Re: How to properly use channels? (my 'guix pull' throws error)

2018-10-02 Thread Hebi Li
Hi Ricardo,

On Tue, Oct 02 2018, Ricardo Wurmus wrote:

> AFAIK this defect has been fixed a couple of days ago.  Unfortunately,
> you need to upgrade Guix with “guix pull” but without channels.  Once
> upgraded you can use channels again.
>

I actually ran "guix pull" right before I tried Ludovic's suggestion
earlier today. Anyway I pulled again, and did a full system upgrade
(guix package -u) and also reconfigure (sudo -E guix system reconfigure
config.scm), and even a reboot.  The "guix pull" command is still
complaining "no code for module (gcrypt hash)".

However, it succeeded when I tried the latest guix source [1], and ran
with ./pre-inst-env [2]. This time, "./pre-inst-env guix pull" did
finish compiling the package successfully:

New in this revision:
  2 new packages: chromium, gn

But, I have no idea how to build and install the newly retrieved
chromium package. Seems that both "guix" and "./pre-inst-env guix" do
not see the new package (i.e. "(./pre-inst-env) guix install chromium"
complains no chromium package, no chromium is listed by
"(./pre-inst-env) guix package --list-avaiable").

Thus, I'm confused of what is the effect of the command "./pre-inst-env
guix pull". The document [2] is saying:

Note that ./pre-inst-env guix pull does not upgrade the local source
tree; it simply updates the ~/.config/guix/current symlink (see Invoking
guix pull). Run git pull instead if you want to upgrade your local
source tree.

I thought ~/.config/guix/current symlink *is* the local source tree, and
this document says both "./pre-inst-env guix pull" and "guix pull"
upgrade it.


[1] https://www.gnu.org/software/guix/manual/en/html_node/Building-from-Git.html
[2] 
https://www.gnu.org/software/guix/manual/en/html_node/Running-Guix-Before-It-Is-Installed.html


-- 
Hebi



Re: How to properly use channels? (my 'guix pull' throws error)

2018-10-02 Thread Ricardo Wurmus


Hebi Li  writes:

> Next, guix pull is finally able to compile chromium.scm, but
> unfortunately failed to finish. This might not be a problem of guix
> itself. However the error was "no code for module (gcrypt hash)", so I
> think it is related. I have installed both libgcrypt and
> guile-gcrypt. The following is the full error message: […]

AFAIK this defect has been fixed a couple of days ago.  Unfortunately,
you need to upgrade Guix with “guix pull” but without channels.  Once
upgraded you can use channels again.

--
Ricardo




Re: How to properly use channels? (my 'guix pull' throws error)

2018-10-02 Thread Hebi Li


Thanks, Ludovic.

On Tue, Oct 02 2018, Ludovic Courtès wrote:

> Hello,
>
> Hebi Li  skribis:
>
>> Hi guys,
>
> s/guys/people/ :-)

Oh, cool :)

>> I was trying to use Marius's channel [1] for Chromium. However,
>> following Marius's instruction, when my ~/.config/guix/channels.scm is
>> in place, 'guix pull' throws me this error:
>>
>> guix pull: error: failed to load '/home/hebi/.config/guix/channels.scm':
>> system/base/compile.scm:144:21: In procedure compile-file:
>> failed to create path for auto-compiled file
>> "/home/hebi/.config/guix/channels.scm"
>
> Could it be that ~/.cache/guile/… is read-only or owned by a different
> user?
>
> As a test you could try to “rm -rf ~/.cache/guile”.  This is the place
> where Guile stores object files resulting from auto-compilation.

That is the problem, "~/.cache/guile" is owned by root. I don't know
why, but I think it is not supposed to be root, so maybe we need to fix
it somewhere or mention it in trouble shooting. Anyway removing it
solved the problem and guix pull is able to continue.

Then I encountered another problem. In channels.scm, I was using (branch
"master"), and got this error:

--8<---cut here---start->8---
Updating channel 'guix-chromium' from Git repository at
'https://gitlab.com/mbakke/guix-chromium.git'...
guix pull: error: Git error: cannot locate remote-tracking branch 'master'
--8<---cut here---end--->8---

Changing it to '(branch "origin/master")' solved the problem. I mention
this because I have seen '(branch "master")' in a couple of places, thus
was wondering whether it is supposed to be the correct way.

Next, guix pull is finally able to compile chromium.scm, but
unfortunately failed to finish. This might not be a problem of guix
itself. However the error was "no code for module (gcrypt hash)", so I
think it is related. I have installed both libgcrypt and
guile-gcrypt. The following is the full error message:

--8<---cut here---start->8---
[ 1/ 1] Compiling './chromium/chromium.scm'...
Backtrace:
In ice-9/boot-9.scm:
  2788:17 19 (resolve-interface (guix store) #:select _ #:hide _ # _ ?)
  2714:10 18 (_ (guix store) _ _ #:ensure _)
  2982:16 17 (try-module-autoload _ _)
   2312:4 16 (save-module-excursion #)
  3002:22 15 (_)
In unknown file:
  14 (primitive-load-path "guix/store" #)
In guix/store.scm:
 20:0 13 (_)
In ice-9/boot-9.scm:
   2862:4 12 (define-module* _ #:filename _ #:pure _ #:version _ # _ ?)
  2875:24 11 (_)
   222:29 10 (map1 (((guix utils)) ((guix config)) ((guix #)) ((?)) ?))
   222:29  9 (map1 (((guix config)) ((guix memoization)) ((guix ?)) ?))
   222:29  8 (map1 (((guix memoization)) ((guix serialization)) (#) ?))
   222:29  7 (map1 (((guix serialization)) ((guix monads)) ((# #)) ?))
   222:29  6 (map1 (((guix monads)) ((guix base16)) ((guix #)) (#) ?))
   222:29  5 (map1 (((guix base16)) ((guix base32)) ((gcrypt #)) # ?))
   222:29  4 (map1 (((guix base32)) ((gcrypt hash)) ((guix #)) (#) ?))
   222:17  3 (map1 (((gcrypt hash)) ((guix profiling)) ((rnrs #)) # ?))
   2791:6  2 (resolve-interface _ #:select _ #:hide _ #:prefix _ # _ ?)
In unknown file:
   1 (scm-error misc-error #f "~A ~S" ("no code for modu?" ?) ?)
In ice-9/boot-9.scm:
   752:25  0 (dispatch-exception _ _ _)

ice-9/boot-9.scm:752:25: In procedure dispatch-exception:
no code for module (gcrypt hash)
builder for `/gnu/store/60blzvp2by5j8mkp2xyml42al703cdza-guix-chromium.drv' 
failed with exit code 1 
 
cannot build derivation 
`/gnu/store/vjf98q40yrpgqfp4wjpgk2brjhzlcyn2-guix-chromium.drv': 1 dependencies 
couldn't be built
cannot build derivation 
`/gnu/store/cwnlydihlzn0z42lk00w9wa60vrsa6b3-profile.drv': 1 dependencies 
couldn't be built  
guix pull: error: build failed: build of 
`/gnu/store/cwnlydihlzn0z42lk00w9wa60vrsa6b3-profile.drv' failed

hebi@antelope ~$ guix pull
Updating channel 'guix-chromium' from Git repository at 
'https://gitlab.com/mbakke/guix-chromium.git'...
 
guix pull: error: Git error: cannot locate remote-tracking branch 'master'
--8<---cut here---end--->8---




-- 
Hebi



Re: How to properly use channels? (my 'guix pull' throws error)

2018-10-02 Thread Ludovic Courtès
Hello,

Hebi Li  skribis:

> Hi guys,

s/guys/people/ :-)

> I was trying to use Marius's channel [1] for Chromium. However,
> following Marius's instruction, when my ~/.config/guix/channels.scm is
> in place, 'guix pull' throws me this error:
>
> guix pull: error: failed to load '/home/hebi/.config/guix/channels.scm':
> system/base/compile.scm:144:21: In procedure compile-file:
> failed to create path for auto-compiled file
> "/home/hebi/.config/guix/channels.scm"

Could it be that ~/.cache/guile/… is read-only or owned by a different
user?

As a test you could try to “rm -rf ~/.cache/guile”.  This is the place
where Guile stores object files resulting from auto-compilation.

HTH,
Ludo’.