Subject: Re: bug#34590: Effects of GUIX_PACKAGE_PATH and --load-path differ

From: Ludovic Courtès <[email-masked]>
Date: Wed, 06 Mar 2019 14:38:11 +0100

Hi Daniel,

Daniel Gerber <[email-masked]> skribis:

> From reading the doc on `guix environment`:
>
> -L, --load-path=DIR    prepend DIR to the package module search path
>
> I would expect these to be exactly equivalent:
>
> $ export GUIX_PACKAGE_PATH=; guix environment -L path ...
> $ export GUIX_PACKAGE_PATH=path; guix environment ...
>
> Yet they differ. With [email-masked] in the guix channel (a37bdf4) and [email-masked] in --and also [email-masked] only in-- 
> /gnu/guix-local-packages/:
>
> $ export GUIX_PACKAGE_PATH=/gnu/guix-local-packages/; guix environment
> --no-grafts -C [email-masked] --ad-hoc strace gdb -- ls /gnu/store/
> |grep -o libuv-.*
> libuv-1.26.0
>
> $ export GUIX_PACKAGE_PATH=; guix environment -L 
> /gnu/guix-local-packages/ --no-grafts -C [email-masked] --ad-hoc strace
> gdb -- ls /gnu/store/ |grep -o libuv-.*
> libuv-1.24.0
>
> Is this the intended behaviour?

Probably not.

I experimented a bit and couldn’t find any evidence that the search path
order would differ.

However, what do /gnu/guix-local-packages/ contain?  I suppose it
provides [email-masked]?

Then my guess is that “[email-masked]” is ambiguous and that
‘specification->package’ chooses one of the two in a non-deterministic
fashion.

Can you show the output of:

  guix package -A node
  guix package -A node -L /gnu/guix-local-packages
  GUIX_PACKAGE_PATH=/gnu/guix-local-packages guix package -A node

?

TIA,
Ludo’.