Hi Daniel,

Daniel Gerber <d...@atufi.org> 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 libuv@1.24.0 in the guix channel (a37bdf4) and 
> libuv@1.26.0 in --and also node@11.10.0 only in-- 
> /gnu/guix-local-packages/:
>
> $ export GUIX_PACKAGE_PATH=/gnu/guix-local-packages/; guix environment
> --no-grafts -C node@11.10.0 --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 node@11.10.0 --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 node@11.10.0?

Then my guess is that “node@11.10.0” 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’.



Reply via email to