Subject: [bug#36856] build: Add julia-build-system

From: Nicolò Balzarotti <[email-masked]>
Date: Sat, 3 Aug 2019 10:03:47 +0000

Hi, I'm back.

I fixed the problem I had (I forgot the ./pre-inst-env -.-")

Following this discussion, I'm adding ``native-search-paths'' to the julia
package. Now, without any other hack (like the setup.jl one), it can find
the packages but only when installed with guix package -i . It cannot find
them when in an environment (guix environment --ad-hoc julia-package).
Can you help?

Except from this, I cleaned everything a bit, and added a draft of the
documentation. I'm attaching the new patches here (without the julia-xyz
part one, to which I'll add all package synopsis and description, and I'll
split in multiple patches before re-submitting).

Thanks, Nicolò

Il giorno mar 30 lug 2019 alle ore 16:02 Nicolò Balzarotti <
[email-masked]> ha scritto:

> Thanks for the quick response!
>
> Well, the environment variable JULIA_LOAD_PATH (that inside julia is just
> LOAD_PATH) works exactly like that (is a column-concatenated path list). It
> just needs the special ":@stdlib" path to let julia find its standard
> libraries.
> Example:
> > JULIA_LOAD_PATH=/my/new/path/:/profile/path/:@stdlib julia --startup=no
> -E 'LOAD_PATH'
> ["/my/new/path/", "/profile/path/", "@stdlib"]
>
> Is setting this variable from guix fine, or we need a special
> GUIX_SOMETHING variable?
> Where exactly should I set this?
>
> Thanks
>
> Il giorno mar 30 lug 2019 alle ore 14:33 Ricardo Wurmus <
> [email-masked]> ha scritto:
>
>>
>> Julien Lepiller <[email-masked]> writes:
>>
>> > Le 30 juillet 2019 16:11:19 GMT+02:00, Ricardo Wurmus <
>> [email-masked]> a écrit :
>> >>
>> >>Nicolò Balzarotti <[email-masked]> writes:
>> >>
>> >>> 3. By adding a simple startup.jl script, inspired by what emacs does.
>> >>This
>> >>> is simplified so I'm not sure it works for every corner case.
>> >>> #+begin_src julia
>> >>> let paths = [expanduser("~/.guix-profile"),
>> >>"/run/current-system/profile"]
>> >>>     ("GUIX_ENVIRONMENT" in keys(ENV)) && push!(paths,
>> >>> ENV["GUIX_ENVIRONMENT"])
>> >>>     empty!(LOAD_PATH)
>> >>>     push!.(Ref(LOAD_PATH), joinpath.(paths, "share/julia/packages/"))
>> >>>     push!(LOAD_PATH, "@stdlib")
>> >>>     push!.(Ref(DEPOT_PATH), joinpath.(paths, "share/julia/"))
>> >>>     nothing
>> >>> end
>> >>> #+end_src
>> >>
>> >>Could this perhaps be handled by a profile hook that is included only
>> >>when the profile manifest contains a julia package?
>> >
>> > Or simply with an environment variable? GUIX_JULIA_PATH or something?
>>
>> If this is the route you go down, please ensure that it can be used as a
>> search path with more than one directory.  This would make it possible
>> to extend a Julia environment with the contents of more than one
>> profile.
>>
>> --
>> Ricardo
>>
>>