gnu: Remove ".git" from "https://github/…/….git".
[jackhill/guix/guix.git] / gnu / packages / julia.scm
CommitLineData
aa5fac33 1;;; GNU Guix --- Functional package management for GNU
116b29bf 2;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
1e96e6ac
NB
3;;; Copyright © 2016, 2020 Efraim Flashner <efraim@flashner.co.il>
4;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
aa5fac33
RW
5;;;
6;;; This file is part of GNU Guix.
7;;;
8;;; GNU Guix is free software; you can redistribute it and/or modify it
9;;; under the terms of the GNU General Public License as published by
10;;; the Free Software Foundation; either version 3 of the License, or (at
11;;; your option) any later version.
12;;;
13;;; GNU Guix is distributed in the hope that it will be useful, but
14;;; WITHOUT ANY WARRANTY; without even the implied warranty of
15;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16;;; GNU General Public License for more details.
17;;;
18;;; You should have received a copy of the GNU General Public License
19;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
20
21(define-module (gnu packages julia)
22 #:use-module ((guix licenses) #:prefix license:)
23 #:use-module (guix packages)
24 #:use-module (guix download)
50b40d07
RW
25 #:use-module (guix utils)
26 #:use-module (guix git-download)
aa5fac33
RW
27 #:use-module (guix build-system gnu)
28 #:use-module (gnu packages)
29 #:use-module (gnu packages algebra)
30 #:use-module (gnu packages base)
5f010781 31 #:use-module (gnu packages compression)
1e96e6ac 32 #:use-module (gnu packages curl)
aa5fac33
RW
33 #:use-module (gnu packages elf)
34 #:use-module (gnu packages gcc)
35 #:use-module (gnu packages llvm)
50b40d07 36 #:use-module (gnu packages libevent)
aa5fac33
RW
37 #:use-module (gnu packages libunwind)
38 #:use-module (gnu packages maths)
39 #:use-module (gnu packages multiprecision) ; mpfr
40 #:use-module (gnu packages pcre)
41 #:use-module (gnu packages perl)
42 #:use-module (gnu packages pkg-config)
43 #:use-module (gnu packages python)
44d10b1f 44 #:use-module (gnu packages python-xyz)
aa5fac33 45 #:use-module (gnu packages textutils)
1e96e6ac 46 #:use-module (gnu packages ssh)
d70f5139 47 #:use-module (gnu packages tls)
de4b3828 48 #:use-module (gnu packages version-control)
c2e87caa 49 #:use-module (gnu packages wget)
de4b3828 50 #:use-module (ice-9 match))
aa5fac33 51
50b40d07 52(define libuv-julia
1e96e6ac
NB
53 (let ((commit "35b1504507a7a4168caae3d78db54d1121b121e1")
54 (revision "1"))
55 ;; When upgrading Julia, also upgrade this. Get the commit from
5ef30f2a 56 ;; https://github.com/JuliaLang/julia/blob/v1.4.1/deps/libuv.version
7304d562
NB
57 (package
58 (inherit libuv)
50b40d07 59 (name "libuv-julia")
1e96e6ac 60 (version (git-version "2.0.0" revision commit))
50b40d07
RW
61 (source (origin
62 (method git-fetch)
63 (uri (git-reference
b0e7b699 64 (url "https://github.com/JuliaLang/libuv")
46e8bc52 65 (commit commit)))
50b40d07
RW
66 (file-name (string-append name "-" version "-checkout"))
67 (sha256
68 (base32
1e96e6ac 69 "0dn3v6fdp1z382pqg3nhjzk60l61ky9b65mfgaj29fv2da95rwjs"))))
50b40d07
RW
70 (build-system gnu-build-system)
71 (arguments
72 (substitute-keyword-arguments (package-arguments libuv)
73 ((#:phases phases)
74 `(modify-phases ,phases
75 (delete 'autogen)))))
76 (home-page "https://github.com/JuliaLang/libuv"))))
77
1e96e6ac
NB
78(define libunwind-julia
79 ;; The Julia projects requires their patched version.
80 ;; Get from https://github.com/JuliaLang/julia/tree/master/deps/patches
81 (package
82 (inherit libunwind)
83 (name "libunwind-julia")
84 (version "1.3.1")
85 (source
86 (origin
87 (method url-fetch)
88 (uri (string-append "mirror://savannah/libunwind/libunwind-"
89 version ".tar.gz"))
90 (sha256
91 (base32
92 "1y0l08k6ak1mqbfj6accf9s5686kljwgsl4vcqpxzk5n74wpm6a3"))
93 (patches
94 (list
95 (julia-patch "libunwind-prefer-extbl"
96 "0lr4dafw8qyfh8sw8hhbwkql1dlhqv8px7k81y2l20hhxfgnh2m1")
97 (julia-patch "libunwind-static-arm"
98 "1jk3bmiw61ypcchqkk1fyg5wh8wpggk574wxyfyaic870zh3lhgq")))))
99 (home-page "https://github.com/JuliaLang/tree/master/deps/")))
100
101(define (julia-patch-url version name)
7304d562 102 (string-append "https://raw.githubusercontent.com/JuliaLang/julia/v" version
4fc231a7 103 "/deps/patches/" name ".patch"))
7304d562 104
1e96e6ac 105(define (julia-patch name sha)
5ef30f2a 106 (let ((version "1.4.1"))
7304d562 107 (origin (method url-fetch)
1e96e6ac 108 (uri (julia-patch-url version name))
46e8bc52
EF
109 (sha256 (base32 sha))
110 (file-name name))))
7304d562
NB
111
112(define llvm-julia
d70f5139 113 (package
5ef30f2a 114 (inherit llvm-8)
7304d562 115 (name "llvm-julia")
d70f5139 116 (source (origin
5ef30f2a 117 (inherit (package-source llvm-8))
7304d562
NB
118 ;; Those patches are inside the Julia source repo.
119 ;; They are _not_ Julia specific (https://github.com/julialang/julia#llvm)
120 ;; but they are required to build Julia.
121 ;; Discussion: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=919628
122 (patches
1e96e6ac
NB
123 (map (match-lambda
124 ((name hash)
125 (julia-patch name hash)))
126 (list
5ef30f2a 127 '("llvm-7.0-D44650"
128 "1h55kkmkiisfj6sk956if2bcj9s0v6n5czn8dxb870vp5nccj3ir")
1e96e6ac
NB
129 '("llvm-6.0-DISABLE_ABI_CHECKS"
130 "014fawd1ba7yckalypfld22zgic87x9nx3cim42zrwygywd36pyg")
131 '("llvm-6.0-NVPTX-addrspaces"
132 "1qdi2zmrjsrj0h84zv2vyly2hjcn4f67mfy0s1q353g4v4jkscqc")
1e96e6ac
NB
133 '("llvm-D27629-AArch64-large_model_6.0.1"
134 "1qrshmlqvnasdyc158vfn3hnbigqph3lsq7acb9w8lwkpnnm2j4z")
5ef30f2a 135 '("llvm8-D34078-vectorize-fdiv"
136 "19spqc3xsazn1xs9gpcgv9ldadfkv49rmc5khl7sf1dlmhgi4602")
137 '("llvm7-D50010-VNCoercion-ni"
138 "18scg6aa036xa1508s7q93w9dvc5gp69fz6yl6fkh4yffw4gymw6")
139 '("llvm-8.0-D50167-scev-umin"
140 "0g9w2x8yryjdkihnrf18x0yi5bi14c5p8wffda1w732dr5ckzk94")
141 '("llvm-D57118-powerpc"
142 "0vxz5s0s9b625v1rv8lg1566yhxh1i91ydzmvy5s7njvzc7p19aw")
143 '("llvm8-WASM-addrspaces"
144 "1176agj9hh7csdm2lnklb42zcdsb3q6lx9jiyp2shn4p2678y76q")
145 '("llvm-exegesis-mingw"
146 "0ph1cj1j7arvf1xq2xcr7qf9g0cpdl14fincgr67vpi520zvd3vp")
147 '("llvm-test-plugin-mingw"
148 "12z738cnahbf6n381im7i0hxp1m6k9hrnfjlmq9sac46nxly9gnj")
149 '("llvm-8.0-D66401-mingw-reloc"
150 "15v3p5sznn979cfnd7gdn3nd701fd7xd5aks6lnj1mslvljlq3ls")
151 '("llvm7-revert-D44485"
152 "0f59kq3p3mpwsbmskypbi4zn01l6ig0x7v2rjp08k2r8z8m6fa8n")
153 '("llvm-8.0-D63688-wasm-isLocal"
154 "0i9wi5n63ip3802z6m7aj3p07hkqjlmp4vg4wq3xkf9f6w9rksab")
155 '("llvm-8.0-D55758-tablegen-cond"
156 "1l08mg7qigravi7plsq3yzya80fljnp95n8faddr29wbr2qr0655")
157 '("llvm-8.0-D59389-refactor-wmma"
158 "0rgrwk4xlwpk7yai2j7xadcfws93rmk2hhh44fysa88imvrbp478")
159 '("llvm-8.0-D59393-mma-ptx63-fix"
160 "094jcsxbcx9fljj623mgmc0rjpk12s2rs0di0ck0hakzhr8mbv5n")
161 '("llvm-8.0-D66657-codegen-degenerate"
162 "1n1ddx19h90bbpimdyd9dh8fsm6gb93xxyqm4ljkxa1k3cx2vm72")
163 '("llvm-8.0-D71495-vectorize-freduce"
164 "1zff08wvji9lnpskk4b3p5zyjsy5hhy23ynxjqlj9dw7jvvfrf0p")
165 '("llvm-8.0-D75072-SCEV-add-type"
166 "0amlyyndsc90ml2k6prdahf24q0j23nfmlbqf8gcqcxpl5sqq3i6")
167 '("llvm-8.0-D65174-limit-merge-stores"
168 "1ls5114fhgip9rbqabqc16mi367ra0k75ngc1vyqqhq1ghm9x7y9"))))))
7304d562 169 (arguments
5ef30f2a 170 (substitute-keyword-arguments (package-arguments llvm-8)
7304d562
NB
171 ((#:configure-flags flags)
172 `(list ;; Taken from NixOS. Only way I could get libLLVM-6.0.so
46e8bc52 173 "-DCMAKE_BUILD_TYPE=Release"
7304d562 174
46e8bc52
EF
175 ;; Build a native compiler and the NVPTX backend (NVIDIA) since
176 ;; Julia insists on it, nothing more. This reduces build times and
177 ;; disk usage.
178 ,(string-append "-DLLVM_TARGETS_TO_BUILD=" (system->llvm-target))
179 "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=NVPTX"
7304d562 180
46e8bc52
EF
181 "-DLLVM_INSTALL_UTILS=ON"
182 "-DLLVM_BUILD_TESTS=ON"
183 "-DLLVM_ENABLE_FFI=ON"
184 "-DLLVM_ENABLE_RTTI=ON"
185 ;; "-DLLVM_HOST_TRIPLE=${stdenv.hostPlatform.config}"
186 ;; "-DLLVM_DEFAULT_TARGET_TRIPLE=${stdenv.hostPlatform.config}"
187 ;; "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly"
188 "-DLLVM_ENABLE_DUMP=ON"
189 "-DLLVM_LINK_LLVM_DYLIB=ON"))))))
d70f5139 190
174f5076 191(define-public libwhich
192 (package
193 (name "libwhich")
194 (version "1.1.0")
195 (source
196 (origin
197 (method git-fetch)
198 (uri (git-reference
b0e7b699 199 (url "https://github.com/vtjnash/libwhich")
174f5076 200 ;; fixes linux-vdso.so related tests
201 (commit "87cffe10080c98e7b5786c5166e420bf1ada1d41")))
5ef30f2a 202 (file-name (string-append name "-" version "-checkout"))
174f5076 203 (sha256
204 (base32
205 "1bpa0fcqpa3ai3hm8mz0p13bf76fsq53wsfcx5qw302zh22108xr"))))
206 (arguments
207 `(#:make-flags
208 (list "CC=gcc")
209 #:phases
210 (modify-phases %standard-phases
211 (delete 'configure)
212 (add-before 'check 'set-ld-library-path
213 (lambda* (#:key inputs #:allow-other-keys)
214 (setenv "LD_LIBRARY_PATH"
215 (string-append (assoc-ref inputs "zlib") "/lib"))))
216 (replace 'install
217 (lambda* (#:key outputs #:allow-other-keys)
218 (let ((out (assoc-ref outputs "out")))
219 (install-file "libwhich" (string-append out "/bin")))
220 #t)))))
221 (native-inputs
222 ;; used for tests
223 `(("zlib" ,zlib)))
224 (build-system gnu-build-system)
225 (home-page "https://github.com/vtjnash/libwhich")
226 (synopsis "Like @code{which}, for dynamic libraries")
227 (description "@code{libwhich} is like @code{which}, but for dynamic
228libraries. It is also a bit like @code{ldd} and @code{otool -L}.")
229 (license license:expat)))
230
aa5fac33
RW
231(define-public julia
232 (package
233 (name "julia")
5ef30f2a 234 (version "1.4.1")
aa5fac33
RW
235 (source (origin
236 (method url-fetch)
237 (uri (string-append
238 "https://github.com/JuliaLang/julia/releases/download/v"
4f54a63e 239 version "/julia-" version ".tar.gz"))
aa5fac33
RW
240 (sha256
241 (base32
5ef30f2a 242 "030aza3qj5zcinxbrbqgi7p64q6klwq2bhwccraarx7l0hg9lw3i"))
1e96e6ac
NB
243 (patches
244 (search-patches "julia-SOURCE_DATE_EPOCH-mtime.patch"))))
aa5fac33
RW
245 (build-system gnu-build-system)
246 (arguments
de4b3828 247 `(#:test-target "test"
aa5fac33
RW
248 #:modules ((ice-9 match)
249 (guix build gnu-build-system)
250 (guix build utils))
fb799cb7 251
d70f5139
RW
252 ;; Do not strip binaries to keep support for full backtraces.
253 ;; See https://github.com/JuliaLang/julia/issues/17831
254 #:strip-binaries? #f
fb799cb7
LC
255
256 ;; The DSOs use $ORIGIN to refer to each other, but (guix build
257 ;; gremlin) doesn't support it yet, so skip this phase.
258 #:validate-runpath? #f
259
aa5fac33 260 #:phases
6d149ec3
RW
261 (modify-phases %standard-phases
262 (delete 'configure)
4f54a63e
RW
263 (add-after 'unpack 'prepare-deps
264 (lambda* (#:key inputs #:allow-other-keys)
46e8bc52
EF
265 ;; needed by libwhich
266 (setenv "LD_LIBRARY_PATH"
267 (string-join (map (lambda (pkg)
7304d562
NB
268 (string-append (assoc-ref inputs pkg)
269 "/lib"))
1e96e6ac
NB
270 '("arpack-ng" "curl" "dsfmt"
271 "gmp" "lapack"
272 "libssh2" "libgit2"
273 "mbedtls" "mpfr"
274 "openblas" "openlibm" "pcre2"
275 "suitesparse"))
7304d562 276 ":"))
46e8bc52 277 #t))
cc005f90
RW
278 ;; FIXME: Building the documentation requires Julia packages that
279 ;; would be downloaded from the Internet. We should build them in a
280 ;; separate build phase.
281 (add-after 'unpack 'disable-documentation
d70f5139 282 (lambda _
cc005f90
RW
283 (substitute* "Makefile"
284 (("(install: .*) \\$\\(BUILDROOT\\)/doc/_build/html/en/index.html" _ line)
285 (string-append line "\n"))
286 (("src ui doc deps")
287 "src ui deps"))
4f54a63e 288 #t))
5ef30f2a 289 (add-after 'unpack 'use-system-libwhich
290 (lambda* (#:key inputs #:allow-other-keys)
291 ;; don't build it
292 (substitute* "deps/Makefile"
293 (("DEP_LIBS \\+= libwhich") ""))
294 ;; call our version
295 (substitute* "base/Makefile"
296 (("\\$\\$\\(build_depsbindir\\)/libwhich")
297 (string-append (assoc-ref inputs "libwhich") "/bin/libwhich")))
298 #t))
d70f5139
RW
299 (add-before 'check 'set-home
300 ;; Some tests require a home directory to be set.
301 (lambda _ (setenv "HOME" "/tmp") #t))
c2e87caa 302 (add-before 'build 'fix-include-and-link-paths
46e8bc52
EF
303 (lambda* (#:key inputs #:allow-other-keys)
304 ;; LIBUTF8PROC is a linker flag, not a build target. It is
305 ;; included in the LIBFILES_* variable which is used as a
306 ;; collection of build targets and a list of libraries to link
307 ;; against.
308 (substitute* "src/flisp/Makefile"
1e96e6ac
NB
309 (("\\$\\(BUILDDIR\\)/\\$\\(EXENAME\\)\\$\\(EXE\\): \\$\\(OBJS\\) \\$\\(LIBFILES_release\\)")
310 "$(BUILDDIR)/$(EXENAME)$(EXE): $(OBJS) $(LLT_release)")
311 (("\\$\\(BUILDDIR\\)/\\$\\(EXENAME\\)-debug$(EXE): \\$\\(DOBJS\\) \\$\\(LIBFILES_debug\\)")
312 "$(BUILDDIR)/$(EXENAME)-debug\\$\\(EXE\\): $(DOBJS) $(LLT_debug)"))
c2e87caa 313
46e8bc52
EF
314 ;; The REPL must be linked with libuv.
315 (substitute* "ui/Makefile"
316 (("JLDFLAGS \\+= ")
317 (string-append "JLDFLAGS += "
318 (assoc-ref %build-inputs "libuv")
319 "/lib/libuv.so ")))
c2e87caa 320
46e8bc52
EF
321 (substitute* "base/Makefile"
322 (("\\$\\(build_includedir\\)/uv/errno.h")
323 (string-append (assoc-ref inputs "libuv")
324 "/include/uv/errno.h")))
325 #t))
c2e87caa 326 (add-before 'build 'replace-default-shell
46e8bc52
EF
327 (lambda _
328 (substitute* "base/client.jl"
329 (("/bin/sh") (which "sh")))
330 #t))
1e96e6ac 331 (add-before 'build 'fix-precompile
c2e87caa 332 (lambda _
1e96e6ac
NB
333 (substitute* "base/loading.jl"
334 (("something(Base.active_project(), \"\")") "\"\""))
c2e87caa
RW
335 #t))
336 (add-before 'check 'disable-broken-tests
337 (lambda _
46e8bc52 338 (substitute* "test/choosetests.jl"
1e96e6ac
NB
339 (("tests = testnames")
340 ;; Those failings are not deterministic. They depends on the
341 ;; running order. I think it depends on the number of
342 ;; runners, disabling it for now
343 ;; https://github.com/JuliaLang/julia/issues/34330
5ef30f2a 344 "tests = filter(e->!in(e,[\"backtrace\",\"exceptions\",\"precompile\",
345 \"client\",\"stacktraces\"]),
1e96e6ac 346 testnames)"))
5ef30f2a 347 ;; precompile test is broken, fixed in
348 ;; fed29f893544d1dc8f86444c65d632c68168d0f3
349 (substitute* "test/precompile.jl"
350 (("@test !isdefined\\(Base.Nothing.name.mt")
351 "# @test !isdefined(Base.Nothing.name.mt"))
1e96e6ac
NB
352 ;; When HOME is not set, julia calls uv_os_homedir, which in
353 ;; turns call getpwuid_r. Add the HOME env variable to the
354 ;; external julia call to fix this
355 (substitute* "test/cmdlineargs.jl"
356 (("\"JULIA_PROJECT\"") "\"HOME\"=>\"/tmp\", \"JULIA_PROJECT\""))
357 ;; Marking the test as broken as it's a known bug:
358 ;; https://github.com/JuliaLang/julia/issues/32377
359 (substitute* "stdlib/REPL/test/replcompletions.jl"
360 (("@test count") "@test_broken count"))
5ef30f2a 361 ;; Dates has a similar bug:
362 ;; https://github.com/JuliaLang/julia/issues/34655
363 (substitute* "stdlib/Dates/test/io.jl"
364 (("\"Dates.Time") "\"Time"))
365 ;; Upstream bug I found when packaging
366 ;; https://github.com/JuliaLang/julia/issues/35785
367 (substitute* "test/file.jl"
368 (("@test dirname\\(t\\) == d") "@test_broken dirname(t) == d"))
1e96e6ac 369 #t))
5ef30f2a 370 (add-after 'install 'make-wrapper
371 (lambda* (#:key inputs outputs #:allow-other-keys)
372 (let* ((out (assoc-ref outputs "out"))
373 (bin (string-append out "/bin"))
374 (program "julia"))
375 (with-directory-excursion bin
376 (wrap-program program
377 `("JULIA_LOAD_PATH" ":" prefix
378 ("" "$JULIA_LOAD_PATH")))
379 (wrap-program program
380 `("JULIA_DEPOT_PATH" ":" prefix
381 ("" "$JULIA_DEPOT_PATH"))))
382 #t))))
aa5fac33
RW
383 #:make-flags
384 (list
5ef30f2a 385 (string-append "prefix=" (assoc-ref %outputs "out"))
de4b3828 386
46e8bc52
EF
387 ;; Passing the MARCH flag is necessary to build binary substitutes for
388 ;; the supported architectures.
389 ,(match (or (%current-target-system)
390 (%current-system))
391 ("x86_64-linux" "MARCH=x86-64")
392 ("i686-linux" "MARCH=pentium4")
393 ("aarch64-linux" "MARCH=armv8-a")
394 ;; Prevent errors when querying this package on unsupported
395 ;; platforms, e.g. when running "guix package --search="
396 (_ "MARCH=UNSUPPORTED"))
de4b3828 397
46e8bc52 398 "CONFIG_SHELL=bash" ;needed to build bundled libraries
1e96e6ac
NB
399 ;; list of "USE_SYSTEM_*" is here:
400 ;; https://github.com/JuliaLang/julia/blob/v1.3.1/Make.inc
401 "USE_SYSTEM_DSFMT=1"
402 "USE_SYSTEM_P7ZIP=1"
46e8bc52
EF
403 "USE_SYSTEM_LAPACK=1"
404 "USE_SYSTEM_BLAS=1"
405 "USE_BLAS64=0" ;needed when USE_SYSTEM_BLAS=1
406 "LIBBLAS=-lopenblas"
407 "LIBBLASNAME=libopenblas"
aa5fac33 408
1e96e6ac
NB
409 "USE_SYSTEM_SUITESPARSE=1"
410 (string-append "SUITESPARSE_INC=-I "
411 (assoc-ref %build-inputs "suitesparse")
412 "/include")
46e8bc52
EF
413 "USE_GPL_LIBS=1" ;proudly
414 "USE_SYSTEM_UTF8PROC=1"
415 (string-append "UTF8PROC_INC="
416 (assoc-ref %build-inputs "utf8proc")
417 "/include")
418 "USE_SYSTEM_LLVM=1"
d45571fe 419 "LLVM_VER=8.0.0"
cc005f90 420
46e8bc52
EF
421 "USE_LLVM_SHLIB=1"
422 "USE_SYSTEM_LIBUNWIND=1"
423 "USE_SYSTEM_LIBUV=1"
424 (string-append "LIBUV="
425 (assoc-ref %build-inputs "libuv")
426 "/lib/libuv.so")
427 (string-append "LIBUV_INC="
428 (assoc-ref %build-inputs "libuv")
429 "/include")
430 "USE_SYSTEM_PATCHELF=1"
431 "USE_SYSTEM_PCRE=1"
432 "USE_SYSTEM_OPENLIBM=1"
5ef30f2a 433 "USE_SYSTEM_MBEDTLS=1"
434 "USE_SYSTEM_LIBSSH2=1"
46e8bc52
EF
435 "USE_SYSTEM_GMP=1"
436 "USE_SYSTEM_MPFR=1"
437 "USE_SYSTEM_ARPACK=1"
438 "USE_SYSTEM_LIBGIT2=1"
1e96e6ac 439 "USE_SYSTEM_ZLIB=1")))
aa5fac33 440 (inputs
7304d562 441 `(("llvm" ,llvm-julia)
1e96e6ac 442 ("p7zip" ,p7zip)
c0edb5b5
LC
443 ;; The bundled version is 3.3.0 so stick to that version. With other
444 ;; versions, we get test failures in 'linalg/arnoldi' as described in
445 ;; <https://bugs.gnu.org/30282>.
446 ("arpack-ng" ,arpack-ng-3.3.0)
447
c2e87caa 448 ("coreutils" ,coreutils) ;for bindings to "mkdir" and the like
aa5fac33
RW
449 ("lapack" ,lapack)
450 ("openblas" ,openblas) ;Julia does not build with Atlas
1e96e6ac 451 ("libunwind" ,libunwind-julia)
aa5fac33 452 ("openlibm" ,openlibm)
1e96e6ac
NB
453 ("mbedtls" ,mbedtls-apache)
454 ("curl" ,curl)
354490df 455 ("libgit2" ,libgit2-0.28)
1e96e6ac 456 ("libssh2" ,libssh2)
19afbea1 457 ("fortran" ,gfortran)
c2e87caa
RW
458 ("libuv" ,libuv-julia)
459 ("pcre2" ,pcre2)
aa5fac33 460 ("utf8proc" ,utf8proc)
aa5fac33 461 ("mpfr" ,mpfr)
c2e87caa
RW
462 ("wget" ,wget)
463 ("which" ,which)
5f010781 464 ("zlib" ,zlib)
4f54a63e 465 ("gmp" ,gmp)
1e96e6ac
NB
466 ("suitesparse" ,suitesparse)
467 ;; Find dependencies versions here:
468 ;; https://raw.githubusercontent.com/JuliaLang/julia/v1.3.0/deps/Versions.make
5ef30f2a 469 ("libwhich" ,libwhich)
1e96e6ac 470 ("dsfmt" ,dsfmt)))
aa5fac33 471 (native-inputs
d70f5139
RW
472 `(("openssl" ,openssl)
473 ("perl" ,perl)
aa5fac33
RW
474 ("patchelf" ,patchelf)
475 ("pkg-config" ,pkg-config)
7304d562 476 ("python" ,python-2)))
11d73fb4 477 (native-search-paths
46e8bc52
EF
478 (list (search-path-specification
479 (variable "JULIA_LOAD_PATH")
1e96e6ac
NB
480 (files (list "share/julia/packages/")))
481 (search-path-specification
482 (variable "JULIA_DEPOT_PATH")
483 (files (list "share/julia/")))))
9e54e957
RW
484 ;; Julia is not officially released for ARM and MIPS.
485 ;; See https://github.com/JuliaLang/julia/issues/10639
298fd38b 486 (supported-systems '("i686-linux" "x86_64-linux" "aarch64-linux"))
4f447d2f 487 (home-page "https://julialang.org/")
aa5fac33
RW
488 (synopsis "High-performance dynamic language for technical computing")
489 (description
490 "Julia is a high-level, high-performance dynamic programming language for
491technical computing, with syntax that is familiar to users of other technical
492computing environments. It provides a sophisticated compiler, distributed
493parallel execution, numerical accuracy, and an extensive mathematical function
494library.")
495 (license license:expat)))