You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1838 lines
71 KiB

10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
10 months ago
  1. (define-module (gn packages julia)
  2. #:use-module ((guix licenses) #:prefix license:)
  3. #:use-module (guix utils)
  4. #:use-module (guix packages)
  5. #:use-module (guix download)
  6. #:use-module (guix git-download)
  7. #:use-module (guix build-system cmake)
  8. #:use-module (guix build-system gnu)
  9. #:use-module (guix build-system julia)
  10. #:use-module (gnu packages)
  11. #:use-module (gn packages cran)
  12. #:use-module (gnu packages bioinformatics)
  13. #:use-module (gnu packages compression)
  14. #:use-module (gnu packages cran)
  15. #:use-module (gnu packages julia-jll)
  16. #:use-module (gnu packages julia-xyz)
  17. #:use-module (gnu packages python)
  18. #:use-module (gnu packages statistics)
  19. #:use-module (gnu packages video)
  20. #:use-module (ice-9 match))
  21. (define S specification->package)
  22. (define-public julia-visuals
  23. (let ((commit "e7d670eb045a9f8e3a839476dc166318da7fe9dc")
  24. (revision "1"))
  25. (package
  26. (name "julia-visuals")
  27. (version (git-version "0.0.0" revision commit))
  28. (source (origin
  29. (method git-fetch)
  30. (uri (git-reference
  31. (url "https://github.com/sens/visuals")
  32. (commit commit)))
  33. (file-name (git-file-name name version))
  34. (sha256
  35. (base32 "15hshm5qrig5qbj02xy4ji79kfc72n93nna5nvxkhvb8gw3vvx07"))))
  36. (build-system julia-build-system)
  37. (arguments
  38. `(#:tests? #f ; no test suite
  39. #:phases
  40. (modify-phases %standard-phases
  41. (add-after 'unpack 'patch-source
  42. (lambda* (#:key inputs #:allow-other-keys)
  43. (chmod "runpluto.sh" #o555) ; it starts as #o444
  44. (substitute* "runpluto.sh"
  45. ;; The arguments don't pass through the wrapper so we hardcode the port.
  46. (("\\$\\{1\\}") "4343"))
  47. #t))
  48. (replace 'install
  49. (lambda* (#:key outputs #:allow-other-keys)
  50. (let ((out (assoc-ref outputs "out")))
  51. ;; Copied from the Dockerfile.
  52. (for-each
  53. (lambda (file)
  54. (copy-recursively file (string-append out "/" file)))
  55. (list "plutoserver"
  56. "environment.yml"
  57. "setup.py"
  58. "runpluto.sh"
  59. "notebooks"
  60. "Project.toml"
  61. "Manifest.toml"))
  62. #t)))
  63. (add-after 'install 'wrap-program
  64. (lambda* (#:key inputs outputs #:allow-other-keys)
  65. (let ((out (assoc-ref outputs "out")))
  66. ;; Do we need to wrap this with PYTHONPATH too?
  67. (wrap-script (string-append out "/runpluto.sh")
  68. `("PATH" ":" prefix (,(string-append (assoc-ref inputs "julia") "/bin")
  69. ,(string-append (assoc-ref inputs "coreutils") "/bin")))
  70. `("JULIA_LOAD_PATH" ":" prefix (,(getenv "JULIA_LOAD_PATH"))))
  71. #t)))
  72. (replace 'precompile
  73. (lambda _
  74. (invoke "julia" "-e" "\"import Pkg; Pkg.instantiate(); Pkg.status(); Pkg.precompile()\"")
  75. #t)))))
  76. (propagated-inputs
  77. `(;; from setup.py
  78. ("python-jupyter-server-proxy"
  79. ,(@ (gn packages python) python-jupyter-server-proxy-1))))
  80. (inputs
  81. `(("julia-distributions" ,julia-distributions)
  82. ("julia-latexstrings" ,julia-latexstrings)
  83. ("julia-optim" ,julia-optim)
  84. ("julia-plots" ,julia-plots)
  85. ("julia-pluto" ,julia-pluto)
  86. ("julia-plutoui" ,julia-plutoui)
  87. ("guile" ,(@ (gnu packages guile) guile-3.0)))) ; for wrap-script
  88. (home-page "https://github.com/sens/visuals")
  89. (synopsis "Visualizations using Pluto.jl notebooks")
  90. (description "Visualizations using Pluto.jl notebooks.")
  91. (license #f))))
  92. (define-public julia-liteqtl
  93. (let ((commit "696218524a57a4ab5a933e516850c010915650d5")
  94. (revision "1"))
  95. (package
  96. (name "julia-liteqtl")
  97. ;(version (git-version "0.2.1" revision commit))
  98. (version "0.2.1")
  99. (source (origin
  100. (method git-fetch)
  101. (uri (git-reference
  102. (url "https://github.com/senresearch/LiteQTL.jl")
  103. ;(commit commit)))
  104. (commit (string-append "v" version))))
  105. (file-name (git-file-name name version))
  106. (sha256
  107. (base32 "0hincjnr56wpcgnd9r1m939gng8ac46zw1fv99ij920w3dpxwhq3"))))
  108. (build-system julia-build-system)
  109. (propagated-inputs
  110. `(;("julia-csv" ,julia-csv)
  111. ;("julia-cuda" ,julia-cuda)
  112. ("julia-dataframes" ,julia-dataframes)
  113. ("julia-distributions" ,julia-distributions)
  114. ("julia-docstringextensions" ,julia-docstringextensions)))
  115. (native-inputs
  116. `(("julia-documenter" ,julia-documenter)
  117. ("julia-safetestsets" ,julia-safetestsets)
  118. ;("r" ,r-minimal)
  119. ;("r-data-table" ,r-data-table)
  120. ;("r-parallel" ,r-parallel) ; what is this package called?
  121. ;("r-qtl" ,r-qtl)
  122. ;("r-qtl2" ,r-qtl2)
  123. ;("r-tidyverse" ,r-tidyverse)
  124. ))
  125. (home-page "https://github.com/senresearch/LiteQTL.jl")
  126. (synopsis "Julia package for eQTL genome scans near real-time")
  127. (description "LiteQTL is a package that runs whole genome QTL scans near
  128. real-time, utilizing the computation power of GPU. LiteQTL uses new algorithms
  129. that enables near-real time whole genome QTL scans for up to 1 million traits.
  130. By using easily parallelizable operations including matrix multiplication,
  131. vectorized operations, and element-wise operations, our method is about 300
  132. times faster than a R/qtl linear model genome scan using 16 threads.")
  133. (license license:expat))))
  134. ;; contains bundled libraries?
  135. (define-public julia-packagecompiler
  136. (package
  137. (name "julia-packagecompiler")
  138. (version "1.3.0")
  139. (source
  140. (origin
  141. (method git-fetch)
  142. (uri (git-reference
  143. (url "https://github.com/JuliaLang/PackageCompiler.jl")
  144. (commit (string-append "v" version))))
  145. (file-name (git-file-name name version))
  146. (sha256
  147. (base32 "1ks7g8cvyc81yj6knkrdcxkkm3rdw61jx1h3nqn2n289p5xxfv26"))))
  148. (build-system julia-build-system)
  149. (arguments
  150. `(#:tests? #f)) ; Test suite needs a copy of the Julia package repository.
  151. (native-inputs
  152. `(("julia-example" ,julia-example)))
  153. (home-page "https://github.com/JuliaLang/PackageCompiler.jl")
  154. (synopsis "Compile your Julia Package")
  155. (description "PackageCompiler is a Julia package with two main purposes:
  156. @itemize
  157. @item Creating custom sysimages for reduced latency when working locally with
  158. packages that has a high startup time.
  159. @item Creating \"apps\" which are a bundle of files including an executable that
  160. can be sent and run on other machines without Julia being installed on that machine.
  161. @end itemize")
  162. (license license:expat)))
  163. (define-public julia-flxqtl
  164. (package
  165. (name "julia-flxqtl")
  166. (version "0.3.0")
  167. (source
  168. (origin
  169. (method git-fetch)
  170. (uri (git-reference
  171. (url "https://github.com/senresearch/FlxQTL.jl")
  172. (commit (string-append "v" version))))
  173. (file-name (git-file-name name version))
  174. (sha256
  175. (base32 "06mzbiv8bp0hgkz2i67ax63xcs5wkbyw80cz3s9snwd1426v2r41"))))
  176. (build-system julia-build-system)
  177. (arguments
  178. `(#:tests? #f
  179. ))
  180. (propagated-inputs
  181. `(
  182. ("julia-distributions" ,julia-distributions)
  183. ;("julia-lossfunctions" ,julia-lossfunctions)
  184. ("julia-pyplot" ,julia-pyplot)
  185. ;("julia-revise" ,julia-revise)
  186. ("julia-staticarrays" ,julia-staticarrays)
  187. ("julia-statsbase" ,julia-statsbase)
  188. ))
  189. (home-page "https://github.com/senresearch/FlxQTL.jl")
  190. (synopsis "QTL analysis tool by multivariate mixed linear model")
  191. (description "FlxQTL.jl is a a package for a multivariate linear mixed model
  192. based QTL analysis tool that supports incorporating information from trait
  193. covariates such as time or different environments. The package supports
  194. computation of one-dimensional and two-dimensional multivariate genome scans,
  195. visualization of genome scans, support for @acronym{LOCO,
  196. leave-one-chromosome-out}, computation of kinship matrices, and support for
  197. distributed computing.")
  198. (license license:gpl3)))
  199. ;; ready to upstream
  200. (define-public julia-pyplot
  201. ;; Test suite was fixed since the last release.
  202. (let ((commit "52a83c88fc10f159d044db5e14563f524562898b")
  203. (revision "1"))
  204. (package
  205. (name "julia-pyplot")
  206. (version (git-version "2.9.0" revision commit))
  207. (source
  208. (origin
  209. (method git-fetch)
  210. (uri (git-reference
  211. (url "https://github.com/JuliaPy/PyPlot.jl")
  212. (commit commit)))
  213. (file-name (git-file-name name version))
  214. (sha256
  215. (base32
  216. "1nbr9lva4s042l9n67xckak87lhn9q5jpajc18y7vk5r1vr89n5l"))))
  217. (build-system julia-build-system)
  218. (propagated-inputs
  219. `(("julia-colors" ,julia-colors)
  220. ("julia-latexstrings" ,julia-latexstrings)
  221. ("julia-pycall" ,julia-pycall)
  222. ("julia-versionparsing" ,julia-versionparsing)
  223. ;; python-matplotlib is expected to be available at runtime.
  224. ("python-matplotlib" ,(@ (gnu packages python-xyz) python-matplotlib))))
  225. (home-page "https://github.com/JuliaPy/PyPlot.jl")
  226. (synopsis "Plotting for Julia based on matplotlib.pyplot")
  227. (description "This module provides a Julia interface to the Matplotlib
  228. plotting library from Python, and specifically to the @code{matplotlib.pyplot}
  229. module. PyPlot uses the Julia PyCall package to call Matplotlib directly from
  230. Julia with little or no overhead (arrays are passed without making a copy).")
  231. (license license:expat))))
  232. ;; ready to upstream
  233. (define-public julia-pycall
  234. (package
  235. (name "julia-pycall")
  236. (version "1.92.3")
  237. (source
  238. (origin
  239. (method git-fetch)
  240. (uri (git-reference
  241. (url "https://github.com/JuliaPy/PyCall.jl")
  242. (commit (string-append "v" version))))
  243. (file-name (git-file-name name version))
  244. (sha256
  245. (base32
  246. "07r99ni6nkxpyrp3wsb5qg4jxz7i2r08dyqbiffy2zm3g0bn88jq"))))
  247. (build-system julia-build-system)
  248. (arguments
  249. `(#:imported-modules ((guix build python-build-system)
  250. ,@%julia-build-system-modules)
  251. #:modules ((guix build julia-build-system)
  252. (guix build utils)
  253. ((guix build python-build-system) #:prefix python:))
  254. #:phases
  255. (modify-phases %standard-phases
  256. (add-after 'unpack 'remove-conda
  257. (lambda _
  258. (substitute* "Project.toml"
  259. ((".*Conda.*") ""))
  260. (substitute* (list "src/PyCall.jl"
  261. "test/runtests.jl")
  262. (("import Conda") ""))
  263. (substitute* "deps/depsutils.jl"
  264. (("Conda.PYTHONDIR") "\"/\""))
  265. #t))
  266. (add-after 'unpack 'set-python
  267. (lambda* (#:key inputs outputs #:allow-other-keys)
  268. (let ((python (assoc-ref inputs "python")))
  269. (setenv "PYCALL_JL_RUNTIME_PYTHON"
  270. (string-append python "/bin/python3"))
  271. (with-output-to-file "deps/deps.jl"
  272. (lambda _
  273. (format #t
  274. "const python = \"~a/bin/python3\"~@
  275. const pyprogramname = \"~a/bin/python3\"~@
  276. const libpython = \"~a/lib/libpython~a.so.1.0\"~@
  277. const PYTHONHOME = \"~a\"~@
  278. const pyversion_build = v\"~a\"~@
  279. const conda = false~%"
  280. python
  281. python
  282. python
  283. (python:python-version python)
  284. python
  285. ,(package-version python))))
  286. #t)))
  287. (add-before 'check 'pre-check
  288. (lambda _
  289. (setenv "CI" "true")
  290. (setenv "JULIA_PKGEVAL" "true")
  291. #t)))))
  292. (propagated-inputs
  293. `(("julia-macrotools" ,julia-macrotools)
  294. ("julia-versionparsing" ,julia-versionparsing)))
  295. (inputs
  296. `(("python" ,python)))
  297. (native-inputs
  298. `(("python-numpy" ,(@ (gnu packages python-xyz) python-numpy))))
  299. (home-page "https://github.com/JuliaPy/PyCall.jl")
  300. (synopsis "Call Python functions from the Julia language")
  301. (description "This package provides the ability to directly call and fully
  302. interoperate with Python from the Julia language. You can import arbitrary
  303. Python modules from Julia, call Python functions (with automatic conversion of
  304. types between Julia and Python), define Python classes from Julia methods, and
  305. share large data structures between Julia and Python without copying them.")
  306. (license license:expat)))
  307. (define-public julia-conda
  308. (package
  309. (name "julia-conda")
  310. (version "1.5.2")
  311. (source
  312. (origin
  313. (method git-fetch)
  314. (uri (git-reference
  315. (url "https://github.com/JuliaPy/Conda.jl")
  316. (commit (string-append "v" version))))
  317. (file-name (git-file-name name version))
  318. (sha256
  319. (base32
  320. "01qxrv3xv7b979j760iyn28w3hlls29b2parjginwi81jbzr1vgd"))))
  321. (build-system julia-build-system)
  322. (arguments
  323. `(#:tests? #f ; Tests involve downloading Conda packages.
  324. #:phases
  325. (modify-phases %standard-phases
  326. ;(delete 'precompile)
  327. (add-after 'unpack 'hardcode-conda-path
  328. (lambda* (#:key inputs #:allow-other-keys)
  329. (substitute* "src/Conda.jl"
  330. (("bin_dir\\(ROOTENV\\), \"conda\"") (string-append "\"" (assoc-ref inputs "conda") "/bin/\", \"conda\"")))
  331. #t))
  332. (add-before 'check 'pre-check
  333. (lambda* (#:key inputs #:allow-other-keys)
  334. ;(setenv "CONDA_JL_HOME" (string-append (assoc-ref inputs "conda") ))
  335. ;(setenv "CONDA_JL_VERSION" "3")
  336. ;(setenv "CONDA_JL_USE_MINIFORGE" "false")
  337. ;(display (getcwd))
  338. ;(setenv "HOME" (getcwd))
  339. ;(invoke "conda" "create" "--offline" "--use-local" "-n" "conda_jl" "python" "conda")
  340. ;(invoke "ls")
  341. ;(invoke "pwd")
  342. ;(with-output-to-file "deps/deps.jl"
  343. ; (lambda () #t))
  344. ;(invoke "touch" "deps/deps.jl")
  345. ;(invoke "julia" "-e" "using Pkg; Pkg.add(\"Conda\")")
  346. ;(invoke "julia" "-e" "using Pkg; Pkg.build(\"Conda\")")
  347. ;; From .travis.yml
  348. ;(setenv "CONDA_JL_VERSION" "3")
  349. ;(setenv "CONDA_JL_USE_MINIFORGE" "false")
  350. #t)))
  351. ))
  352. (native-inputs
  353. `(
  354. ("conda" ,(S "conda"))
  355. ;("python" ,(S "python-wrapper"))
  356. ))
  357. (propagated-inputs
  358. `(
  359. ("julia-json" ,julia-json)
  360. ("julia-versionparsing" ,julia-versionparsing)
  361. ))
  362. (home-page "https://github.com/JuliaPy/Conda.jl")
  363. (synopsis "Conda managing Julia binary dependencies")
  364. (description "This package allows one to use @code{conda} as a cross-platform binary provider for Julia for other Julia packages, especially to install binaries that have complicated dependencies like Python.")
  365. (license license:expat)))
  366. ;; ready to upstream
  367. (define-public julia-latexstrings
  368. (package
  369. (name "julia-latexstrings")
  370. (version "1.2.1")
  371. (source
  372. (origin
  373. (method git-fetch)
  374. (uri (git-reference
  375. (url "https://github.com/stevengj/LaTeXStrings.jl")
  376. (commit (string-append "v" version))))
  377. (file-name (git-file-name name version))
  378. (sha256
  379. (base32 "117z27krcf8fydgp6mb0pgn75r4gng9qs7v90qb4bqzsry3faadp"))))
  380. (build-system julia-build-system)
  381. (native-inputs
  382. `(("julia-documenter" ,julia-documenter)))
  383. (home-page "https://github.com/stevengj/LaTeXStrings.jl")
  384. (synopsis "Input and display of LaTeX equation strings")
  385. (description "This is a small package to make it easier to type LaTeX
  386. equations in string literals in the Julia language.")
  387. (license license:expat)))
  388. (define-public julia-distributions
  389. (package
  390. (name "julia-distributions")
  391. (version "0.25.11")
  392. (source
  393. (origin
  394. (method git-fetch)
  395. (uri (git-reference
  396. (url "https://github.com/JuliaStats/Distributions.jl")
  397. (commit (string-append "v" version))))
  398. (file-name (git-file-name name version))
  399. (sha256
  400. (base32 "0n5xgdpzrpb4s0g23rjggk7c7x8677hbhq0sam7xbw9mn2w79m7n"))))
  401. (build-system julia-build-system)
  402. (arguments
  403. `(#:tests? #f)) ; Some failed tests
  404. (propagated-inputs
  405. `(("julia-fillarrays" ,julia-fillarrays)
  406. ("julia-pdmats" ,julia-pdmats)
  407. ("julia-quadgk" ,julia-quadgk)
  408. ("julia-specialfunctions" ,julia-specialfunctions)
  409. ("julia-statsbase" ,julia-statsbase)
  410. ("julia-statsfuns" ,julia-statsfuns)))
  411. (native-inputs
  412. `(("julia-calculus" ,julia-calculus)
  413. ("julia-finitedifferences" ,julia-finitedifferences)
  414. ("julia-forwarddiff" ,julia-forwarddiff)
  415. ("julia-json" ,julia-json)
  416. ("julia-stablerngs" ,julia-stablerngs)
  417. ("julia-staticarrays" ,julia-staticarrays)))
  418. (home-page "https://github.com/JuliaStats/Distributions.jl")
  419. (synopsis "Probability distributions and associated functions")
  420. (description "Julia package for probability distributions and associated
  421. functions. Particularly, @code{Distributions} implements:
  422. @enumerate
  423. @enum Moments (e.g mean, variance, skewness, and kurtosis), entropy, and other
  424. properties
  425. @enum Probability density/mass functions (pdf) and their logarithm (logpdf)
  426. @enum Moment generating functions and characteristic functions
  427. @enum Sampling from population or from a distribution
  428. @enum Maximum likelihood estimation
  429. @end enumerate")
  430. (license license:expat)))
  431. ;; ready to upstream!
  432. ;; By removing all the javascript and css downloads any HTML documentation
  433. ;; produced by this package will not be very useful.
  434. (define-public julia-documenter
  435. (package
  436. (name "julia-documenter")
  437. (version "0.27.6")
  438. (source
  439. (origin
  440. (method git-fetch)
  441. (uri (git-reference
  442. (url "https://github.com/JuliaDocs/Documenter.jl")
  443. (commit (string-append "v" version))))
  444. (file-name (git-file-name name version))
  445. (sha256
  446. (base32 "1y6rql7cxc7hfhc8rfq1mdmffp70sqzyh4vnnq93fziwrc8c8sbj"))))
  447. (build-system julia-build-system)
  448. (arguments
  449. `(#:phases
  450. (modify-phases %standard-phases
  451. (add-after 'unpack 'patch-source
  452. (lambda* (#:key inputs #:allow-other-keys)
  453. (substitute* "src/Deps.jl"
  454. (("pip install")
  455. (string-append (assoc-ref inputs "python")
  456. "/bin/pip install")))
  457. #t))
  458. (add-after 'unpack 'remove-javascript-downloads
  459. (lambda _
  460. (substitute* "src/Writers/HTMLWriter.jl"
  461. (("cdnjs.cloudflare.com") "example.com"))
  462. ;; Removing the javascript downloads causes these tests fail.
  463. (substitute* "test/examples/tests.jl"
  464. ((".*Main\\.examples_html_doc.*") "")
  465. ((".*Main\\.examples_html_mathjax3_doc.*") ""))
  466. #t)))))
  467. (propagated-inputs
  468. `(("julia-ansicoloredprinters" ,julia-ansicoloredprinters)
  469. ("julia-docstringextensions" ,julia-docstringextensions)
  470. ("julia-iocapture" ,julia-iocapture)
  471. ("julia-json" ,julia-json)))
  472. (inputs
  473. `(("python" ,python-wrapper)))
  474. (native-inputs
  475. `(("git" ,(S "git-minimal"))
  476. ("julia-documentermarkdown" ,julia-documentermarkdown)
  477. ("julia-documentertools" ,julia-documentertools)))
  478. (home-page "https://juliadocs.github.io/Documenter.jl")
  479. (synopsis "Documentation generator for Julia")
  480. (description "This package provides a documentation generator for Julia.")
  481. (license license:expat)))
  482. ;; ready to upstream with julia-documenter
  483. (define-public julia-documenter-0.22
  484. (package
  485. (inherit julia-documenter)
  486. (name "julia-documenter")
  487. (version "0.22.6")
  488. (source
  489. (origin
  490. (method git-fetch)
  491. (uri (git-reference
  492. (url "https://github.com/JuliaDocs/Documenter.jl")
  493. (commit (string-append "v" version))))
  494. (file-name (git-file-name name version))
  495. (sha256
  496. (base32
  497. "1z8b7267y7yn5nx8sjwkmc0ph97vmv42q52jg7s89ghqb9xx3wv5"))))
  498. (arguments
  499. `(#:tests? #f ; Some tests require network.
  500. #:phases
  501. (modify-phases %standard-phases
  502. (add-after 'unpack 'remove-javascript-downloads
  503. (lambda _
  504. ;; This isn't problematic because we only use
  505. ;; this package for bootstrapping.
  506. (substitute* '("assets/html/documenter.js"
  507. "assets/html/search.js"
  508. "src/Writers/HTMLWriter.jl")
  509. (("cdnjs.cloudflare.com") "example.com"))
  510. #t)))))
  511. (propagated-inputs
  512. `(("julia-docstringextensions" ,julia-docstringextensions)
  513. ("julia-json" ,julia-json)))
  514. (inputs `())
  515. (native-inputs `())
  516. (properties '((hidden? . #t)))))
  517. ;; ready to upstream; depends on julia-documenter
  518. (define-public julia-documentermarkdown
  519. (package
  520. (name "julia-documentermarkdown")
  521. (version "0.2.2")
  522. (source
  523. (origin
  524. (method git-fetch)
  525. (uri (git-reference
  526. (url "https://github.com/JuliaDocs/DocumenterMarkdown.jl")
  527. (commit (string-append "v" version))))
  528. (file-name (git-file-name name version))
  529. (sha256
  530. (base32 "0sx89hi5p2f8zi2rp5qrv06m270d90pxj5d2y5cxls1spax7wqx8"))))
  531. (build-system julia-build-system)
  532. (inputs
  533. ;; We don't want to propagate the bootstrap version.
  534. ;; Cycle with Documenter.jl in later versions.
  535. `(("julia-documenter" ,julia-documenter-0.22)))
  536. (home-page "https://github.com/JuliaDocs/DocumenterMarkdown.jl")
  537. (synopsis "Documenter's Markdown")
  538. (description "This package enables the Markdown / MkDocs backend of
  539. @code{Documenter.jl}.")
  540. (license license:expat)))
  541. (define-public julia-documentertools
  542. (package
  543. (name "julia-documentertools")
  544. (version "0.1.13")
  545. (source
  546. (origin
  547. (method git-fetch)
  548. (uri (git-reference
  549. (url "https://github.com/JuliaDocs/DocumenterTools.jl")
  550. (commit (string-append "v" version))))
  551. (file-name (git-file-name name version))
  552. (sha256
  553. (base32 "05p57p8xlkn42m1lv9gq4hl96vp7hpj19d51p828ai1rbpcpi3a6"))))
  554. (build-system julia-build-system)
  555. (arguments
  556. `(#:tests? #f)) ; Tests require network.
  557. (inputs
  558. ;; We don't want to propagate the bootstrap version.
  559. ;; Cycle with Documenter.jl in later versions.
  560. `(("julia-documenter" ,julia-documenter-0.22)))
  561. (propagated-inputs
  562. `(("julia-docstringextensions" ,julia-docstringextensions)
  563. ("julia-gumbo" ,julia-gumbo)
  564. ("julia-sass" ,julia-sass)))
  565. (native-inputs
  566. `(("julia-example" ,julia-example)))
  567. (home-page "https://github.com/JuliaDocs/DocumenterTools.jl")
  568. (synopsis "Extra tools for setting up Documenter")
  569. (description "This package contains utilities for setting up documentation
  570. generation with @code{Documenter.jl}.")
  571. (license license:expat)))
  572. ;; raedy to upstream
  573. (define-public julia-ansicoloredprinters
  574. (package
  575. (name "julia-ansicoloredprinters")
  576. (version "0.0.1")
  577. (source
  578. (origin
  579. (method git-fetch)
  580. (uri (git-reference
  581. (url "https://github.com/JuliaDocs/ANSIColoredPrinters.jl")
  582. (commit (string-append "v" version))))
  583. (file-name (git-file-name name version))
  584. (sha256
  585. (base32 "0dp5agljr0g50s5gn0pr70wrz01ggck6pb40ay3l4szhswq7mqzf"))))
  586. (build-system julia-build-system)
  587. (home-page "https://github.com/JuliaDocs/ANSIColoredPrinters.jl")
  588. (synopsis "ANSI escape code translator")
  589. (description "@code{ANSIColoredPrinters.jl} converts a text qualified by
  590. ANSI escape codes to another format.")
  591. (license license:expat)))
  592. ;; ready to upstream
  593. (define-public julia-sass
  594. (package
  595. (name "julia-sass")
  596. (version "0.2.0")
  597. (source
  598. (origin
  599. (method git-fetch)
  600. (uri (git-reference
  601. (url "https://github.com/piever/Sass.jl")
  602. (commit (string-append "v" version))))
  603. (file-name (git-file-name name version))
  604. (sha256
  605. (base32 "0y7kkkj717h5cj659ssry89i5r64symr6pvhr6vv4qmaxrnjxj92"))))
  606. (build-system julia-build-system)
  607. (propagated-inputs
  608. `(("julia-libsass-jll" ,julia-libsass-jll)))
  609. (home-page "https://github.com/piever/Sass.jl")
  610. (synopsis "Compile scss and sass file to css in Julia")
  611. (description "This library provides a simple Julian API to use the
  612. @code{libsass} library to compile scss and sass files to css.")
  613. (license license:expat)))
  614. ;; ready to upstream
  615. (define-public julia-libsass-jll
  616. (let ((commit "69bf10603aad0ebf1f6df088c5fd7c4a5d1eb0ca"))
  617. (package
  618. (name "julia-libsass-jll")
  619. (version "3.5.5+0") ;tag not created upstream
  620. (source
  621. (origin
  622. (method git-fetch)
  623. (uri (git-reference
  624. (url "https://github.com/JuliaBinaryWrappers/libsass_jll.jl")
  625. (commit commit)))
  626. (file-name (git-file-name name version))
  627. (sha256
  628. (base32 "1fb6rf422533bsmfslvc20ag1hr50bf9xaj32rvh7nv593sbiygn"))))
  629. (build-system julia-build-system)
  630. (arguments
  631. `(#:tests? #f ; no runtests.jl
  632. #:phases
  633. (modify-phases %standard-phases
  634. (add-after 'unpack 'override-binary-path
  635. (lambda* (#:key inputs #:allow-other-keys)
  636. (map
  637. (lambda (wrapper)
  638. (substitute* wrapper
  639. (("generate_wrapper_header.*")
  640. (string-append
  641. "generate_wrapper_header(\"libsass\", \""
  642. (assoc-ref inputs "libsass") "\")\n"))))
  643. ;; There's a Julia file for each platform, override them all
  644. (find-files "src/wrappers/" "\\.jl$"))
  645. #t)))))
  646. (inputs
  647. `(("libsass" ,(@ (gnu packages web) libsass))))
  648. (propagated-inputs
  649. `(("julia-jllwrappers" ,julia-jllwrappers)))
  650. (home-page "https://github.com/JuliaBinaryWrappers/libsass_jll.jl")
  651. (synopsis "Julia wrapper for libsass")
  652. (description "This package provides a wrapper for libsass. It is an
  653. autogenerated source package constructed using @code{BinaryBuilder.jl}. The
  654. originating @code{build_tarballs.jl} script can be found on the community
  655. build tree Yggdrasil.")
  656. (license license:expat))))
  657. ;; ready to upstream
  658. ;; if the test suite passes
  659. (define-public julia-optim
  660. (package
  661. (name "julia-optim")
  662. (version "1.4.0")
  663. (source
  664. (origin
  665. (method git-fetch)
  666. (uri (git-reference
  667. (url "https://github.com/JuliaNLSolvers/Optim.jl")
  668. (commit (string-append "v" version))))
  669. (file-name (git-file-name name version))
  670. (sha256
  671. (base32 "0bv281n999kmjlp9p3vl4vv4phdl17z4gdpvkjzxsyk6dvcg2nrf"))))
  672. (build-system julia-build-system)
  673. (arguments
  674. `(#:tests? #f)) ; TODO: Fix test
  675. (propagated-inputs
  676. `(("julia-compat" ,julia-compat)
  677. ("julia-fillarrays" ,julia-fillarrays)
  678. ("julia-linesearches" ,julia-linesearches)
  679. ("julia-nlsolversbase" ,julia-nlsolversbase)
  680. ("julia-nanmath" ,julia-nanmath)
  681. ("julia-parameters" ,julia-parameters)
  682. ("julia-positivefactorizations" ,julia-positivefactorizations)
  683. ("julia-statsbase" ,julia-statsbase)))
  684. (native-inputs
  685. `(("julia-measurements" ,julia-measurements)
  686. ("julia-optimtestproblems" ,julia-optimtestproblems)
  687. ("julia-recursivearraytools" ,julia-recursivearraytools)))
  688. (home-page "https://github.com/JuliaNLSolvers/Optim.jl")
  689. (synopsis "Optimization functions for Julia")
  690. (description "@code{Optim.jl} is a package for univariate and multivariate
  691. optimization of functions.")
  692. (license license:expat)))
  693. (define-public julia-plots
  694. (package
  695. (name "julia-plots")
  696. (version "1.16.6")
  697. (source
  698. (origin
  699. (method git-fetch)
  700. (uri (git-reference
  701. (url "https://github.com/JuliaPlots/Plots.jl")
  702. (commit (string-append "v" version))))
  703. (file-name (git-file-name name version))
  704. (sha256
  705. (base32 "0ipv9408r4czsx1j01sv2f7ww52b329jc0v79npn4x2mf827nsik"))))
  706. (build-system julia-build-system)
  707. (arguments
  708. `(#:tests? #f ; for now
  709. ))
  710. (propagated-inputs
  711. `(
  712. ;("julia-contour" ,julia-contour)
  713. ("julia-ffmpeg" ,julia-ffmpeg)
  714. ("julia-fixedpointnumbers" ,julia-fixedpointnumbers)
  715. ("julia-gr" ,julia-gr)
  716. ("julia-geometrybasics" ,julia-geometrybasics)
  717. ("julia-json" ,julia-json)
  718. ;("julia-latexify" ,julia-latexify)
  719. ("julia-measures" ,julia-measures)
  720. ("julia-nanmath" ,julia-nanmath)
  721. ("julia-plotthemes" ,julia-plotthemes)
  722. ("julia-plotutils" ,julia-plotutils)
  723. ("julia-recipesbase" ,julia-recipesbase)
  724. ("julia-recipespipeline" ,julia-recipespipeline)
  725. ("julia-reexport" ,julia-reexport)
  726. ("julia-requires" ,julia-requires)
  727. ("julia-scratch" ,julia-scratch)
  728. ("julia-showoff" ,julia-showoff)
  729. ("julia-statsbase" ,julia-statsbase)
  730. ))
  731. (native-inputs
  732. `(
  733. ;("julia-distributions" ,julia-distributions)
  734. ("julia-fileio" ,julia-fileio)
  735. ;("julia-gtk" ,julia-gtk)
  736. ;("julia-hdf5" ,julia-hdf5)
  737. ("julia-imagemagick" ,julia-imagemagick)
  738. ;("julia-images" ,julia-images)
  739. ("julia-offsetarrays" ,julia-offsetarrays)
  740. ;("julia-pgfplotsx" ,julia-pgfplotsx)
  741. ;("julia-plotlyjs" ,julia-plotlyjs)
  742. ;("julia-rdatasets" ,julia-rdatasets)
  743. ("julia-stablerngs" ,julia-stablerngs)
  744. ("julia-staticarrays" ,julia-staticarrays)
  745. ;("julia-statsplots" ,julia-statsplots)
  746. ("julia-testimages" ,julia-testimages)
  747. ;("julia-unicodeplots" ,julia-unicodeplots)
  748. ;("julia-visualregressiontests" ,julia-visualregressiontests)
  749. ))
  750. (home-page "http://docs.juliaplots.org/")
  751. (synopsis "Powerful convenience for Julia visualizations and data analysis")
  752. (description "Plots is a plotting API and toolset.")
  753. (license license:expat)))
  754. ;; ready to upstream
  755. (define-public julia-bson
  756. (package
  757. (name "julia-bson")
  758. (version "0.3.3")
  759. (source
  760. (origin
  761. (method git-fetch)
  762. (uri (git-reference
  763. (url "https://github.com/JuliaIO/BSON.jl")
  764. (commit (string-append "v" version))))
  765. (file-name (git-file-name name version))
  766. (sha256
  767. (base32 "1l5608ma2ys7v2gpcqbiv9mwfc6yrlqkihrfx1pf7fgv5llhd4fn"))))
  768. (build-system julia-build-system)
  769. (native-inputs
  770. `(("julia-dataframes" ,julia-dataframes)))
  771. (home-page "https://github.com/JuliaIO/BSON.jl")
  772. (synopsis "Binary JSON serialisation format")
  773. (description "@code{BSON.jl} is a Julia package for working with the Binary
  774. JSON serialisation format. It can be used as a general store for Julia data
  775. structures.")
  776. (license license:expat)))
  777. ;; ready to upstream
  778. (define-public julia-dataframes
  779. (package
  780. (name "julia-dataframes")
  781. (version "1.2.2")
  782. (source
  783. (origin
  784. (method git-fetch)
  785. (uri (git-reference
  786. (url "https://github.com/JuliaData/DataFrames.jl")
  787. (commit (string-append "v" version))))
  788. (file-name (git-file-name name version))
  789. (sha256
  790. (base32 "1bk0amrghgjrkyn1mm4ac23swwbgszl1d0qyl9137qj5zvv9dasp"))))
  791. (build-system julia-build-system)
  792. (arguments
  793. `(#:phases
  794. (modify-phases %standard-phases
  795. (add-after 'unpack 'skip-failing-test
  796. (lambda _
  797. ;; Tests with non-standard colors.
  798. (substitute* "test/show.jl"
  799. (("test (sprint\\(show, df, context=:color=>true)" _ test)
  800. (string-append "test_nowarn " test)))
  801. (substitute* "test/io.jl"
  802. (("testset \\\"improved.*" all)
  803. (string-append all "return\n")))
  804. (substitute* "test/join.jl"
  805. (("test (levels\\(outerjoin\\(B)" _ test)
  806. (string-append "test_nowarn " test)))
  807. #t)))))
  808. (propagated-inputs
  809. `(("julia-dataapi" ,julia-dataapi)
  810. ("julia-invertedindices" ,julia-invertedindices)
  811. ("julia-iteratorinterfaceextensions" ,julia-iteratorinterfaceextensions)
  812. ("julia-missings" ,julia-missings)
  813. ("julia-pooledarrays" ,julia-pooledarrays)
  814. ("julia-prettytables" ,julia-prettytables)
  815. ("julia-reexport" ,julia-reexport)
  816. ("julia-sortingalgorithms" ,julia-sortingalgorithms)
  817. ("julia-tables" ,julia-tables)
  818. ("julia-tabletraits" ,julia-tabletraits)))
  819. (native-inputs
  820. `(("julia-categoricalarrays" ,julia-categoricalarrays)
  821. ("julia-combinatorics" ,julia-combinatorics)
  822. ("julia-datastructures" ,julia-datastructures)
  823. ("julia-datavalues" ,julia-datavalues)
  824. ("julia-offsetarrays" ,julia-offsetarrays)
  825. ("julia-unitful" ,julia-unitful)))
  826. (home-page "https://dataframes.juliadata.org/stable/")
  827. (synopsis "In-memory tabular data")
  828. (description "Tools for working with tabular data in Julia.")
  829. (license license:expat)))
  830. ;; TODO: unbundle javascript calls to cdn.jsdelivr.net
  831. (define-public julia-pluto
  832. (package
  833. (name "julia-pluto")
  834. (version "0.15.1")
  835. (source
  836. (origin
  837. (method git-fetch)
  838. (uri (git-reference
  839. (url "https://github.com/fonsp/Pluto.jl")
  840. (commit (string-append "v" version))))
  841. (file-name (git-file-name name version))
  842. (sha256
  843. (base32 "1jsvqi33rsj8izm9pb0r4gjzb5xd01dxri8xp95h84kd0rdliirr"))))
  844. (build-system julia-build-system)
  845. (arguments
  846. `(#:tests? #f ; Test suite fails to load HTTP.jl.
  847. #:phases
  848. (modify-phases %standard-phases
  849. (add-after 'unpack 'dont-check-for-upgrades
  850. (lambda _
  851. (substitute* "frontend/components/Welcome.js"
  852. (("local_index !== -1") "false"))
  853. #t))
  854. (add-after 'unpack 'skip-network-tests
  855. (lambda _
  856. (substitute* "test/runtests.jl"
  857. ;; Attempts to update the package registry.
  858. ((".*Basic.jl.*") ""))
  859. #t)))))
  860. (propagated-inputs
  861. `(("julia-configurations" ,julia-configurations)
  862. ("julia-fuzzycompletions" ,julia-fuzzycompletions)
  863. ("julia-http" ,julia-http)
  864. ("julia-msgpack" ,julia-msgpack)
  865. ("julia-tableiointerface" ,julia-tableiointerface)
  866. ("julia-tables" ,julia-tables)))
  867. (native-inputs
  868. `(("julia-dataframes" ,julia-dataframes)
  869. ("julia-offsetarrays" ,julia-offsetarrays)))
  870. (home-page "https://github.com/fonsp/Pluto.jl")
  871. (synopsis "Simple reactive notebooks for Julia")
  872. (description "A Pluto notebook is made up of small blocks of Julia code
  873. (cells) and together they form a reactive notebook. When you change a variable,
  874. Pluto automatically re-runs the cells that refer to it. Cells can even be
  875. placed in arbitrary order - intelligent syntax analysis figures out the
  876. dependencies between them and takes care of execution.")
  877. (license license:expat)))
  878. ;; ready to upstream, wait on Pluto.jl?
  879. (define-public julia-plutoui
  880. (package
  881. (name "julia-plutoui")
  882. (version "0.7.9")
  883. (source
  884. (origin
  885. (method git-fetch)
  886. (uri (git-reference
  887. (url "https://github.com/fonsp/PlutoUI.jl")
  888. (commit (string-append "v" version))))
  889. (file-name (git-file-name name version))
  890. (sha256
  891. (base32
  892. "0p159b4m0nxbz36ll5kf082vb806n2f26ma145pbhp749aldzplp"))))
  893. (build-system julia-build-system)
  894. (propagated-inputs
  895. `(("julia-json" ,julia-json)
  896. ("julia-reexport" ,julia-reexport)
  897. ("julia-suppressor" ,julia-suppressor)))
  898. (home-page "https://github.com/fonsp/PlutoUI.jl")
  899. (synopsis "Helper package for Julia Pluto")
  900. (description "This package helps to make @code{html\"<input>\"} a bit more
  901. native to Julia. Use it with the @code{@@bind} macro in Pluto.")
  902. (license license:expat)))
  903. ;; ready to upstream
  904. (define-public julia-configurations
  905. (package
  906. (name "julia-configurations")
  907. (version "0.16.0")
  908. (source
  909. (origin
  910. (method git-fetch)
  911. (uri (git-reference
  912. (url "https://github.com/Roger-luo/Configurations.jl")
  913. (commit (string-append "v" version))))
  914. (file-name (git-file-name name version))
  915. (sha256
  916. (base32 "033wc6bqslvv6fkknlc725432j2vc2wcji2167klnx3qwlac2965"))))
  917. (build-system julia-build-system)
  918. (arguments
  919. `(#:phases
  920. (modify-phases %standard-phases
  921. (add-after 'unpack 'fix-tests
  922. (lambda _
  923. (substitute* "test/runtests.jl"
  924. (("option.toml") "test/option.toml"))
  925. #t))
  926. (add-after 'unpack 'dont-use-exproniconlite
  927. (lambda _
  928. (substitute* '("Project.toml"
  929. "src/Configurations.jl"
  930. "test/runtests.jl")
  931. (("ExproniconLite") "Expronicon"))
  932. (substitute* "Project.toml"
  933. (("55351af7-c7e9-48d6-89ff-24e801d99491")
  934. "6b7a57c9-7cc1-4fdf-b7f5-e857abae3636"))
  935. #t)))))
  936. (propagated-inputs
  937. `(("julia-crayons" ,julia-crayons)
  938. ("julia-expronicon" ,julia-expronicon)
  939. ("julia-orderedcollections" ,julia-orderedcollections)))
  940. (home-page "https://configurations.rogerluo.dev/stable/")
  941. (synopsis "Options and configurations in Julia")
  942. (description "@code{Configurations.jl} provides a macro @code{@@option} to
  943. let you define @code{structs} to represent options/configurations, and serialize
  944. between different option/configuration file formats such as @code{TOML}.")
  945. (license license:expat)))
  946. ;; ready to upstream
  947. ;; ExproniconLite.jl is autogenerated from this package.
  948. (define-public julia-expronicon
  949. (package
  950. (name "julia-expronicon")
  951. (version "0.6.9")
  952. (source
  953. (origin
  954. (method git-fetch)
  955. (uri (git-reference
  956. (url "https://github.com/Roger-luo/Expronicon.jl")
  957. (commit (string-append "v" version))))
  958. (file-name (git-file-name name version))
  959. (sha256
  960. (base32 "0lbzfn1li2ph02z6hl5286bj6bf17g63vfp6qn4cz40d760fcw8a"))))
  961. (build-system julia-build-system)
  962. (arguments
  963. `(#:tests? #f)) ; Tests try to read SSL certificates.
  964. (propagated-inputs
  965. `(("julia-mlstyle" ,julia-mlstyle)))
  966. (native-inputs
  967. `(("julia-documenter" ,julia-documenter)))
  968. (home-page "https://expronicon.rogerluo.dev/dev/")
  969. (synopsis "Collective tools for metaprogramming on Julia Expr")
  970. (description "This package provides a collection of tools for
  971. metaprogramming on Julia Expr, the meta programming standard library for
  972. @code{MLStyle}.")
  973. (license license:expat)))
  974. ;; ready to upstream
  975. (define-public julia-mlstyle
  976. (package
  977. (name "julia-mlstyle")
  978. (version "0.4.10")
  979. (source
  980. (origin
  981. (method git-fetch)
  982. (uri (git-reference
  983. (url "https://github.com/thautwarm/MLStyle.jl")
  984. (commit (string-append "v" version))))
  985. (file-name (git-file-name name version))
  986. (sha256
  987. (base32 "0h1cd7cr4c4cnpqyj3180113gdbvcc047lqphp8a8gq5smp3c059"))))
  988. (build-system julia-build-system)
  989. (native-inputs
  990. `(("julia-datastructures" ,julia-datastructures)))
  991. (home-page "https://thautwarm.github.io/MLStyle.jl/latest/")
  992. (synopsis "Julia functional programming infrastructures")
  993. (description "This package provides consistent and extensible functional
  994. programming infrastructures, and metaprogramming facilities.")
  995. (license license:expat)))
  996. ;; ready to upstream
  997. (define-public julia-statsfuns
  998. (package
  999. (name "julia-statsfuns")
  1000. (version "0.9.8")
  1001. (source
  1002. (origin
  1003. (method git-fetch)
  1004. (uri (git-reference
  1005. (url "https://github.com/JuliaStats/StatsFuns.jl")
  1006. (commit (string-append "v" version))))
  1007. (file-name (git-file-name name version))
  1008. (sha256
  1009. (base32 "1zl46p9gbx9xkjnnpd45csshqvq2i94mxw10karpr8xkx8msyk3k"))))
  1010. (build-system julia-build-system)
  1011. (arguments
  1012. `(#:phases
  1013. (modify-phases %standard-phases
  1014. (add-after 'unpack 'adjust-test-suite
  1015. (lambda _
  1016. (substitute* "test/misc.jl"
  1017. (("test logmvbeta\\(1") "test_nowarn logmvbeta(1"))
  1018. #t)))))
  1019. (propagated-inputs
  1020. `(("julia-logexpfunctions" ,julia-logexpfunctions)
  1021. ("julia-rmath" ,julia-rmath)
  1022. ("julia-specialfunctions" ,julia-specialfunctions)))
  1023. (native-inputs
  1024. `(("julia-forwarddiff" ,julia-forwarddiff)))
  1025. (home-page "https://github.com/JuliaStats/StatsFuns.jl")
  1026. (synopsis "Mathematical functions related to statistics")
  1027. (description "This package provides a collection of mathematical constants
  1028. and numerical functions for statistical computing.")
  1029. (license license:expat)))
  1030. ;; ready to upstream
  1031. (define-public rmath-julia
  1032. ;; More recent commits fix various build issues
  1033. (let ((commit "5c5dfd6baca358103fbb47cc03dc0ecee04fb1ff")
  1034. (revision "1"))
  1035. (package
  1036. (name "rmath-julia")
  1037. (version (git-version "0.3.0" revision commit))
  1038. (source
  1039. (origin
  1040. (method git-fetch)
  1041. (uri (git-reference
  1042. (url "https://github.com/JuliaStats/Rmath-julia")
  1043. (commit commit)))
  1044. (file-name (git-file-name name version))
  1045. (sha256
  1046. (base32 "04lf8gfnfcppckk9d7hss0ja91yxaax6qz1gzqya9w0shjr386s5"))))
  1047. (build-system julia-build-system)
  1048. (arguments
  1049. `(#:phases
  1050. (modify-phases %standard-phases
  1051. (delete 'precompile) ; No Project.toml.
  1052. (replace 'check
  1053. (lambda* (#:key tests? #:allow-other-keys)
  1054. (when tests?
  1055. (invoke "julia" "test.jl"))
  1056. #t))
  1057. (add-before 'install 'build
  1058. (lambda _
  1059. (invoke "make")))
  1060. (replace 'install
  1061. (lambda* (#:key outputs #:allow-other-keys)
  1062. (let ((out (assoc-ref outputs "out")))
  1063. (install-file "src/libRmath-julia.so" (string-append out "/lib"))
  1064. #t))))))
  1065. (home-page "https://github.com/JuliaStats/Rmath-julia")
  1066. (synopsis "Rmath library from R")
  1067. (description "This is a slightly modified version of the standalone Rmath
  1068. library from R, built to be used with the @code{Rmath.jl} Julia package.
  1069. The main difference is that it is built to allow defining custom random number
  1070. generating functions via C function pointers (see @code{include/callback.h}).
  1071. When using the library, these should be defined before calling any of the random
  1072. functions.")
  1073. (properties '((hidden? . #t)))
  1074. (license license:gpl2))))
  1075. ;; ready to upstream
  1076. (define-public julia-rmath
  1077. (package
  1078. (name "julia-rmath")
  1079. (version "0.7.0")
  1080. (source
  1081. (origin
  1082. (method git-fetch)
  1083. (uri (git-reference
  1084. (url "https://github.com/JuliaStats/Rmath.jl")
  1085. (commit (string-append "v" version))))
  1086. (file-name (git-file-name name version))
  1087. (sha256
  1088. (base32 "0cam16ff4v2fl7c9j1wx2ahgjhwba9mk2q6qv3zdknnnqj6w664s"))))
  1089. (build-system julia-build-system)
  1090. (arguments
  1091. `(#:phases
  1092. (modify-phases %standard-phases
  1093. (add-after 'unpack 'link-to-librmath-directly
  1094. (lambda* (#:key inputs #:allow-other-keys)
  1095. (let* ((rmath (assoc-ref inputs "rmath"))
  1096. (librmath (string-append rmath "/lib/libRmath-julia.so")))
  1097. (substitute* "src/Rmath.jl"
  1098. (("libRmath\\)") (string-append "\"" librmath "\")")))
  1099. #t))))))
  1100. (propagated-inputs
  1101. `(("julia-rmath-jll" ,julia-rmath-jll)))
  1102. (inputs
  1103. `(("rmath" ,rmath-julia)))
  1104. (native-inputs
  1105. `(("rmath" ,rmath-julia)))
  1106. (home-page "https://github.com/JuliaStats/Rmath.jl")
  1107. (synopsis "Emulate R's d-p-q-r functions for probability distributions")
  1108. (description "This package provides an archive of functions that emulate
  1109. R's d-p-q-r functions for probability distributions. It is a wrapper around
  1110. @code{rmath} for Julia.")
  1111. (license license:expat)))
  1112. ;; ready to upstream
  1113. (define-public julia-rmath-jll
  1114. (package
  1115. (name "julia-rmath-jll")
  1116. (version "0.3.0+0")
  1117. (source
  1118. (origin
  1119. (method git-fetch)
  1120. (uri (git-reference
  1121. (url "https://github.com/JuliaBinaryWrappers/Rmath_jll.jl")
  1122. (commit (string-append "Rmath-v" version))))
  1123. (file-name (git-file-name name version))
  1124. (sha256
  1125. (base32 "1idshxhj60bvra4i1xxpyh2prx1lq9nfrvlc47b68jixfpfkxrlg"))))
  1126. (build-system julia-build-system)
  1127. (arguments
  1128. '(#:tests? #f ; no runtests
  1129. #:phases
  1130. (modify-phases %standard-phases
  1131. (add-after 'unpack 'override-binary-path
  1132. (lambda* (#:key inputs #:allow-other-keys)
  1133. (map
  1134. (lambda (wrapper)
  1135. (substitute* wrapper
  1136. (("generate_wrapper_header.*")
  1137. (string-append
  1138. "generate_wrapper_header(\"Rmath\", \""
  1139. (assoc-ref inputs "rmath") "\")\n"))))
  1140. ;; There's a Julia file for each platform, override them all
  1141. (find-files "src/wrappers/" "\\.jl$")))))))
  1142. (inputs
  1143. `(("rmath" ,rmath-julia)))
  1144. (propagated-inputs
  1145. `(("julia-jllwrappers" ,julia-jllwrappers)))
  1146. (home-page "https://github.com/JuliaBinaryWrappers/Rmath_jll.jl")
  1147. (synopsis "Rmath library wrappers")
  1148. (description "This package provides a wrapper for Rmath.")
  1149. (license license:expat)))
  1150. ;; ready to upstream
  1151. (define-public julia-linesearches
  1152. (package
  1153. (name "julia-linesearches")
  1154. (version "7.1.1")
  1155. (source
  1156. (origin
  1157. (method git-fetch)
  1158. (uri (git-reference
  1159. (url "https://github.com/JuliaNLSolvers/LineSearches.jl")
  1160. (commit (string-append "v" version))))
  1161. (file-name (git-file-name name version))
  1162. (sha256
  1163. (base32 "1qc4la07w6s1xhcyd0hvbnpr31zc1a2ssgyybc8biv5m00g0dnr0"))))
  1164. (build-system julia-build-system)
  1165. (arguments
  1166. `(#:phases
  1167. (modify-phases %standard-phases
  1168. (add-after 'unpack 'skip-optim-tests
  1169. (lambda _
  1170. (substitute* "test/examples.jl"
  1171. ;; Prevent a cycle with Optim.jl.
  1172. (("^ SKIPFILE.*") "")
  1173. (("^ #SKIPFILE") " SKIPFILE"))
  1174. #t)))))
  1175. (propagated-inputs
  1176. `(("julia-nlsolversbase" ,julia-nlsolversbase)
  1177. ("julia-nanmath" ,julia-nanmath)
  1178. ("julia-parameters" ,julia-parameters)))
  1179. (native-inputs
  1180. `(("julia-doublefloats" ,julia-doublefloats)
  1181. ("julia-optimtestproblems" ,julia-optimtestproblems)))
  1182. (home-page "https://github.com/JuliaNLSolvers/LineSearches.jl")
  1183. (synopsis "Line search methods for optimization and root-finding")
  1184. (description "This package provides an interface to line search algorithms
  1185. implemented in Julia.")
  1186. (license license:expat)))
  1187. ;; ready to upstream
  1188. (define-public julia-doublefloats
  1189. (package
  1190. (name "julia-doublefloats")
  1191. (version "1.1.23")
  1192. (source
  1193. (origin
  1194. (method git-fetch)
  1195. (uri (git-reference
  1196. (url "https://github.com/JuliaMath/DoubleFloats.jl")
  1197. (commit (string-append "v" version))))
  1198. (file-name (git-file-name name version))
  1199. (sha256
  1200. (base32 "0qdkcmjknlan25dbgqw101zvgb5ly8v4pf1xikj6k2x96k8c6c8g"))))
  1201. (build-system julia-build-system)
  1202. (propagated-inputs
  1203. `(("julia-genericlinearalgebra" ,julia-genericlinearalgebra)
  1204. ("julia-polynomials" ,julia-polynomials)
  1205. ("julia-quadmath" ,julia-quadmath)
  1206. ("julia-requires" ,julia-requires)
  1207. ("julia-specialfunctions" ,julia-specialfunctions)))
  1208. (native-inputs
  1209. `(("julia-genericlinearalgebra" ,julia-genericlinearalgebra)
  1210. ("julia-genericschur" ,julia-genericschur)
  1211. ("julia-specialfunctions" ,julia-specialfunctions)))
  1212. (home-page "https://github.com/JuliaMath/DoubleFloats.jl")
  1213. (synopsis "Extended precision float and complex types")
  1214. (description "This package provides a math library with extended precision
  1215. floats and complex types.")
  1216. (license license:expat)))
  1217. ;; ready to upstream
  1218. (define-public julia-polynomials
  1219. (package
  1220. (name "julia-polynomials")
  1221. (version "2.0.14")
  1222. (source
  1223. (origin
  1224. (method git-fetch)
  1225. (uri (git-reference
  1226. (url "https://github.com/JuliaMath/Polynomials.jl")
  1227. (commit (string-append "v" version))))
  1228. (file-name (git-file-name name version))
  1229. (sha256
  1230. (base32 "07yb98fm9yhhan0n3iwmd9dz7zpj4kal99z5h1px1q5zpmjn68xa"))))
  1231. (build-system julia-build-system)
  1232. (propagated-inputs
  1233. `(("julia-intervals" ,julia-intervals)
  1234. ("julia-mutablearithmetics" ,julia-mutablearithmetics)
  1235. ("julia-recipesbase" ,julia-recipesbase)))
  1236. (native-inputs
  1237. `(("julia-offsetarrays" ,julia-offsetarrays)
  1238. ("julia-specialfunctions" ,julia-specialfunctions)
  1239. ("julia-staticarrays" ,julia-staticarrays)))
  1240. (home-page "https://github.com/JuliaMath/Polynomials.jl")
  1241. (synopsis "Polynomial manipulations in Julia")
  1242. (description "This package provides basic arithmetic, integration,
  1243. differentiation, evaluation, and root finding over dense univariate
  1244. polynomials.")
  1245. (license license:expat)))
  1246. (define-public julia-intervals
  1247. (package
  1248. (name "julia-intervals")
  1249. (version "1.5.0")
  1250. (source
  1251. (origin
  1252. (method git-fetch)
  1253. (uri (git-reference
  1254. (url "https://github.com/invenia/Intervals.jl")
  1255. (commit (string-append "v" version))))
  1256. (file-name (git-file-name name version))
  1257. (sha256
  1258. (base32 "1nj40fjx0q3gszq0r8h6scnzyldp68yv1y2lpmmbxraf47644q0n"))))
  1259. (build-system julia-build-system)
  1260. (arguments
  1261. `(#:tests? #f)) ; TODO: Fix! broken with timezone stuff
  1262. (propagated-inputs
  1263. `(
  1264. ("julia-documenter" ,julia-documenter)
  1265. ("julia-infinity" ,julia-infinity)
  1266. ("julia-recipesbase" ,julia-recipesbase)
  1267. ))
  1268. (native-inputs
  1269. `(
  1270. ))
  1271. (home-page "https://github.com/invenia/Intervals.jl")
  1272. (synopsis "Non-iterable ranges")
  1273. (description "This package defines:
  1274. AbstractInterval, along with its subtypes Interval and AnchoredInterval, and also Bound.")
  1275. (license license:expat)))
  1276. ;; ready to upstream
  1277. (define-public julia-infinity
  1278. (package
  1279. (name "julia-infinity")
  1280. (version "0.2.4")
  1281. (source
  1282. (origin
  1283. (method git-fetch)
  1284. (uri (git-reference
  1285. (url "https://github.com/cjdoris/Infinity.jl")
  1286. (commit (string-append "v" version))))
  1287. (file-name (git-file-name name version))
  1288. (sha256
  1289. (base32 "1941lwvrdjnrynigzixxin3chpg1ba6xplvcwc89x0f6z658hwmm"))))
  1290. (build-system julia-build-system)
  1291. (propagated-inputs
  1292. `(("julia-compat" ,julia-compat)
  1293. ("julia-requires" ,julia-requires)
  1294. ("julia-timezones" ,julia-timezones)))
  1295. (native-inputs
  1296. `(("julia-compat" ,julia-compat)
  1297. ("julia-timezones" ,julia-timezones)))
  1298. (home-page "https://juliahub.com/docs/Infinity/")
  1299. (synopsis "Representation of infinity in Julia")
  1300. (description "This package provides representations for infinity and
  1301. negative infinity in Julia.")
  1302. (license license:expat)))
  1303. ;; TODO: Keep this in sync with tzdata in base.scm
  1304. ;; Package can use more work
  1305. (define-public julia-timezones
  1306. (package
  1307. (name "julia-timezones")
  1308. (version "1.5.5")
  1309. (source
  1310. (origin
  1311. (method git-fetch)
  1312. (uri (git-reference
  1313. (url "https://github.com/JuliaTime/TimeZones.jl")
  1314. (commit (string-append "v" version))))
  1315. (file-name (git-file-name name version))
  1316. (sha256
  1317. (base32 "0f6rk1g4ffj4r6g8hfy0ygk4vyppibywkxgixhbgnc09w8y0009d"))))
  1318. (build-system julia-build-system)
  1319. (arguments
  1320. `(#:tests? #f ; Tests attempt to download timezone information
  1321. #:phases
  1322. (modify-phases %standard-phases
  1323. (add-after 'unpack 'patch-tzdata
  1324. (lambda* (#:key inputs #:allow-other-keys)
  1325. ;(substitute* "src/tzdata/TZData.jl"
  1326. ; (("(COMPILED_DIR = ).*" _ key)
  1327. ; (string-append key "\"" (assoc-ref inputs "tzdata") "/share/zoneinfo\"")))
  1328. (substitute* "test/runtests.jl"
  1329. (("2016j") "2021a")
  1330. ((".*download.jl.*") "")
  1331. )
  1332. (make-file-writable "Artifacts.toml")
  1333. (with-output-to-file "Artifacts.toml"
  1334. (lambda _
  1335. (format #t "[tzdata2021a]~@
  1336. git-tree-sha1 = \"6d94ada27957590cbd0d7678f5ae711232a4d714\"~@
  1337. lazy = true~@
  1338. ~@
  1339. [[tzdata2021a.download]]~@
  1340. sha256 = \"39e7d2ba08c68cbaefc8de3227aab0dec2521be8042cf56855f7dc3a9fb14e08\"~@
  1341. url = \"file://~a\"~%"
  1342. (assoc-ref inputs "tzdata-src"))))
  1343. #t))
  1344. )))
  1345. (propagated-inputs
  1346. `(
  1347. ("julia-lazyartifacts" ,julia-lazyartifacts)
  1348. ("julia-mocking" ,julia-mocking)
  1349. ("julia-recipesbase" ,julia-recipesbase)
  1350. ))
  1351. (native-inputs
  1352. `(
  1353. ;("julia-compat" ,julia-compat)
  1354. ;("julia-timezones" ,julia-timezones)
  1355. ;("curl" ,(@ (gnu packages curl) curl-minimal))
  1356. ;("tzdata" ,(@ (gnu packages base) tzdata))
  1357. ("tzdata-src" ,(package-source (@ (gnu packages base) tzdata)))
  1358. ))
  1359. (home-page "https://juliahub.com/docs/Infinity/")
  1360. (synopsis "IANA time zone database access for the Julia programming language")
  1361. (description "IANA time zone database access for the Julia programming language. TimeZones.jl extends the Date/DateTime support for Julia to include a new time zone aware TimeType: ZonedDateTime.")
  1362. (license license:expat)))
  1363. ;; ready to upstream, if we want
  1364. (define-public julia-lazyartifacts
  1365. (package
  1366. (name "julia-lazyartifacts")
  1367. (version "1.3.0")
  1368. (source
  1369. (origin
  1370. (method git-fetch)
  1371. (uri (git-reference
  1372. (url "https://github.com/JuliaPackaging/LazyArtifacts.jl")
  1373. (commit (string-append "v" version))))
  1374. (file-name (git-file-name name version))
  1375. (sha256
  1376. (base32 "0qln5pq2zm68wgm104cxyviiql8xkv7rf68hivar2b7x2a8vwnk0"))))
  1377. (build-system julia-build-system)
  1378. (home-page "https://github.com/JuliaPackaging/LazyArtifacts.jl")
  1379. (synopsis "LazyArtifacts support for older versions of Julia")
  1380. (description "This is a wrapper package meant to bridge the gap for packages
  1381. that want to use the @code{LazyArtifacts} stdlib as a dependency within packages
  1382. that still support Julia versions older than 1.6.")
  1383. (license license:expat)))
  1384. (define-public julia-visualregressiontests
  1385. (package
  1386. (name "julia-visualregressiontests")
  1387. (version "1.0.0")
  1388. (source
  1389. (origin
  1390. (method git-fetch)
  1391. (uri (git-reference
  1392. (url "https://github.com/JuliaPlots/VisualRegressionTests.jl")
  1393. (commit (string-append "v" version))))
  1394. (file-name (git-file-name name version))
  1395. (sha256
  1396. (base32 "0fsqm89dqrn9bd466v79544hcd5ljn5ikg6x94hfcashjwa5y0g2"))))
  1397. (build-system julia-build-system)
  1398. ;(arguments
  1399. ; `(#:tests? #f)) ; GTK.jl not packaged yet
  1400. (propagated-inputs
  1401. `(
  1402. ;("julia-colortypes" ,julia-colortypes)
  1403. ;("julia-colorvectorspace" ,julia-colorvectorspace)
  1404. ;("julia-fileio" ,julia-fileio)
  1405. ;("julia-imagefiltering" ,julia-imagefiltering)
  1406. ;("julia-imagemagick" ,julia-imagemagick)
  1407. ;("julia-quartzimageio" ,julia-quartzimageio)
  1408. ;("julia-requires" ,julia-requires)
  1409. ))
  1410. (native-inputs
  1411. `(
  1412. ;("julia-gtk" ,julia-gtk)
  1413. ;("julia-plots" ,julia-plots)
  1414. ;("julia-testimages" ,julia-testimages)
  1415. ))
  1416. (home-page "https://github.com/JuliaPlots/VisualRegressionTests.jl")
  1417. (synopsis "Automated integrated regression tests for graphics libraries")
  1418. (description "Easy regression testing for visual packages. Automated tests compare similarity between a newly generated image and a reference image using the Images package. While in interactive mode, the tests can optionally pop up a Gtk GUI window showing a side-by-side comparison of the test and reference image, and then optionally overwrite the reference image with the test image. This allows for straightforward regression testing of image data, even when the \"correct\" images change over time.")
  1419. (license license:expat)))
  1420. (define-public julia-geometrybasics
  1421. (package
  1422. (name "julia-geometrybasics")
  1423. (version "0.3.13")
  1424. (source
  1425. (origin
  1426. (method git-fetch)
  1427. (uri (git-reference
  1428. (url "https://github.com/JuliaGeometry/GeometryBasics.jl")
  1429. (commit (string-append "v" version))))
  1430. (file-name (git-file-name name version))
  1431. (sha256
  1432. (base32 "05wq41s6c69zay2awgdhjld8gsycdb5jbvf6a785i3f12av6ndk0"))))
  1433. (build-system julia-build-system)
  1434. (arguments
  1435. `(;#:tests? #f
  1436. #:phases
  1437. (modify-phases %standard-phases
  1438. (add-after 'unpack 'remove-earcut
  1439. (lambda _
  1440. (substitute* '("Project.toml"
  1441. "src/GeometryBasics.jl")
  1442. ((".*EarCut.*") ""))
  1443. #t)))
  1444. ))
  1445. (propagated-inputs
  1446. `(
  1447. ;("julia-earcut-jll" ,julia-earcut-jll)
  1448. ("julia-itertools" ,julia-itertools)
  1449. ("julia-staticarrays" ,julia-staticarrays)
  1450. ("julia-structarrays" ,julia-structarrays)
  1451. ("julia-tables" ,julia-tables)
  1452. ))
  1453. (native-inputs
  1454. `(
  1455. ("julia-offsetarrays" ,julia-offsetarrays)
  1456. ))
  1457. (home-page "https://github.com/JuliaGeometry/GeometryBasics.jl")
  1458. (synopsis "Basic Geometry Types")
  1459. (description "This package aims to offer a standard set of Geometry types, which easily work with metadata, query frameworks on geometries and different memory layouts. The aim is to create a solid basis for Graphics/Plotting, finite elements analysis, Geo applications, and general geometry manipulations - while offering a julian API, that still allows performant C-interop.")
  1460. (license license:expat)))
  1461. ;; ready to upstream
  1462. (define-public julia-structarrays
  1463. (package
  1464. (name "julia-structarrays")
  1465. (version "0.6.1")
  1466. (source
  1467. (origin
  1468. (method git-fetch)
  1469. (uri (git-reference
  1470. (url "https://github.com/JuliaArrays/StructArrays.jl")
  1471. (commit (string-append "v" version))))
  1472. (file-name (git-file-name name version))
  1473. (sha256
  1474. (base32 "1scmwv016pqdl6mx6i3c2bkqf1kwbzcymgwzdq9hp6bq627zmr3v"))))
  1475. (build-system julia-build-system)
  1476. (propagated-inputs
  1477. `(("julia-dataapi" ,julia-dataapi)
  1478. ("julia-staticarrays" ,julia-staticarrays)
  1479. ("julia-tables" ,julia-tables)))
  1480. (native-inputs
  1481. `(("julia-documenter" ,julia-documenter)
  1482. ("julia-offsetarrays" ,julia-offsetarrays)
  1483. ("julia-pooledarrays" ,julia-pooledarrays)
  1484. ("julia-typedtables" ,julia-typedtables)
  1485. ("julia-weakrefstrings" ,julia-weakrefstrings)))
  1486. (home-page "https://github.com/JuliaArrays/StructArrays.jl")
  1487. (synopsis "Efficient implementation of struct arrays in Julia")
  1488. (description "This package introduces the type @code{StructArray} which is
  1489. an @code{AbstractArray} whose elements are @code{struct} (for example
  1490. @code{NamedTuples}, or @code{ComplexF64}, or a custom user defined
  1491. @code{struct}). While a @code{StructArray} iterates @code{structs}, the layout
  1492. is column based (meaning each field of the @code{struct} is stored in a separate
  1493. @code{Array}).")
  1494. (license license:expat)))
  1495. (define-public julia-earcut-jll
  1496. ;; Only release tag contains just a license file.
  1497. (let ((commit "b234ae0c064af12eb5482c7474a64af8be0f511e")
  1498. (revision "1"))
  1499. (package
  1500. (name "julia-earcut-jll")
  1501. (version (git-version "2.1.5+1" revision commit))
  1502. (source
  1503. (origin
  1504. (method git-fetch)
  1505. (uri (git-reference
  1506. (url "https://github.com/JuliaBinaryWrappers/EarCut_jll.jl")
  1507. (commit commit)))
  1508. (file-name (git-file-name name version))
  1509. (sha256
  1510. (base32 "0x1zjmsm4kcccwhd1fmnz0w4m0f2na1d2vcc0pj2cf5ccprx7miw"))))
  1511. (build-system julia-build-system)
  1512. (arguments
  1513. `(#:tests? #f ; no runtests.jl
  1514. #:phases
  1515. (modify-phases %standard-phases
  1516. (add-after 'unpack 'override-binary-path
  1517. (lambda* (#:key inputs #:allow-other-keys)
  1518. (map
  1519. (lambda (wrapper)
  1520. (substitute* wrapper
  1521. (("generate_wrapper_header.*")
  1522. (string-append
  1523. "generate_wrapper_header(\"EarCut\", \""
  1524. (assoc-ref inputs "earcut") "\")\n"))))
  1525. ;; There's a Julia file for each platform, override them all
  1526. (find-files "src/wrappers/" "\\.jl$"))
  1527. #t)))))
  1528. (inputs ;required by artifacts
  1529. `(("earcut" ,earcut)))
  1530. (propagated-inputs
  1531. `(("julia-jllwrappers" ,julia-jllwrappers)))
  1532. (home-page "https://github.com/JuliaBinaryWrappers/EarCut_jll.jl")
  1533. (synopsis "")
  1534. (description "")
  1535. (license license:expat))))
  1536. (define-public earcut
  1537. (package
  1538. (name "earcut")
  1539. (version "0.12.4")
  1540. (source
  1541. (origin
  1542. (method git-fetch)
  1543. (uri (git-reference
  1544. (url "https://github.com/mapbox/earcut.hpp")
  1545. (commit (string-append "v" version))))
  1546. (file-name (git-file-name name version))
  1547. (sha256
  1548. (base32 "1lfvh7shr82g10z3ydw7rll80nyi8nba41ykkgrghh95gvr6m3k7"))
  1549. (modules '((guix build utils)))
  1550. (snippet
  1551. '(begin
  1552. (substitute* "CMakeLists.txt"
  1553. ((".*add_subdirectory.*") ""))
  1554. #t))))
  1555. (build-system cmake-build-system)
  1556. (arguments
  1557. `(;#:tests? #f
  1558. #:configure-flags '("-DEARCUT_BUILD_BENCH=OFF"
  1559. "-DEARCUT_BUILD_VIZ=OFF"
  1560. )
  1561. #:phases
  1562. (modify-phases %standard-phases
  1563. (replace 'check
  1564. (lambda* (#:key tests? #:allow-other-keys)
  1565. (when tests?
  1566. (invoke "./tests"))
  1567. #t))
  1568. ;; no install target, but no shared library either
  1569. ;(replace 'install
  1570. ; (lambda* (#:key outputs #:allow-other-keys)
  1571. ; (let ((out (assoc-ref outputs "out")))
  1572. )
  1573. ))
  1574. (propagated-inputs
  1575. `(
  1576. ))
  1577. (inputs
  1578. `(
  1579. ;("glfw" ,(@ (gnu packages gl) glfw)) ; for VIZ
  1580. ))
  1581. (native-inputs
  1582. `(
  1583. ;("boost" ,(@ (gnu packages boost) boost)) ; not needed for tests?
  1584. ))
  1585. (home-page "https://github.com/mapbox/earcut.hpp")
  1586. (synopsis "")
  1587. (description "")
  1588. (license license:expat)))
  1589. ;; ready to upstream
  1590. (define-public julia-gr
  1591. (package
  1592. (name "julia-gr")
  1593. (version "0.57.5")
  1594. (source
  1595. (origin
  1596. (method git-fetch)
  1597. (uri (git-reference
  1598. (url "https://github.com/jheinen/GR.jl")
  1599. (commit (string-append "v" version))))
  1600. (file-name (git-file-name name version))
  1601. (sha256
  1602. (base32 "14nra7fx2g8y2ll3saxgccanzbcl5s58qzgd2jlha3r0ngfhrvxg"))))
  1603. (build-system julia-build-system)
  1604. (propagated-inputs
  1605. `(("julia-gr-jll" ,julia-gr-jll)))
  1606. (home-page "https://github.com/jheinen/GR.jl")
  1607. (synopsis "Plotting for Julia based on GR")
  1608. (description "This module provides a Julia interface to GR, a framework for
  1609. visualisation applications.")
  1610. (license license:expat)))
  1611. ;; TODO: Unbundle fonts
  1612. (define-public gr-framework
  1613. (package
  1614. (name "gr-framework")
  1615. (version "0.57.3")
  1616. (source
  1617. (origin
  1618. (method git-fetch)
  1619. (uri (git-reference
  1620. (url "https://github.com/sciapp/gr")
  1621. (commit (string-append "v" version))))
  1622. (file-name (git-file-name name version))
  1623. (sha256
  1624. (base32 "1w11rjikipqbj7wjary49g3ky2rnh132h948w008k9irbyj7j6c1"))
  1625. (modules '((guix build utils)))
  1626. (snippet
  1627. '(begin
  1628. (delete-file-recursively "3rdparty")
  1629. #t))))
  1630. (build-system cmake-build-system)
  1631. (arguments
  1632. `(#:tests? #f)) ; no test target
  1633. (inputs
  1634. `(("cairo" ,(S "cairo"))
  1635. ("ffmpeg" ,(S "ffmpeg"))
  1636. ("freetype" ,(@ (gnu packages fontutils) freetype))
  1637. ("ghostscript" ,(S "ghostscript"))
  1638. ("glfw" ,(S "glfw"))
  1639. ("libjpeg-turbo" ,(@ (gnu packages image) libjpeg-turbo))
  1640. ("libpng" ,(@ (gnu packages image) libpng))
  1641. ("libtiff" ,(S "libtiff"))
  1642. ("libx11" ,(@ (gnu packages xorg) libx11))
  1643. ("libxft" ,(@ (gnu packages xorg) libxft))
  1644. ("libxt" ,(@ (gnu packages xorg) libxt))
  1645. ("pixman" ,(S "pixman"))
  1646. ("qtbase" ,(@ (gnu packages qt) qtbase-5))
  1647. ("qhull" ,(@ (gnu packages maths) qhull))
  1648. ("zlib" ,zlib)))
  1649. (home-page "https://gr-framework.org/")
  1650. (synopsis "Graphics library for visualisation applications")
  1651. (description "GR is a universal framework for cross-platform visualization
  1652. applications. It offers developers a compact, portable and consistent graphics
  1653. library for their programs. Applications range from publication quality 2D
  1654. graphs to the representation of complex 3D scenes. GR is essentially based on
  1655. an implementation of a @acronym{GKS, Graphical Kernel System}. As a
  1656. self-contained system it can quickly and easily be integrated into existing
  1657. applications (i.e. using the @code{ctypes} mechanism in Python or @code{ccall}
  1658. in Julia).")
  1659. (license license:expat)))
  1660. ;; ready to upstream
  1661. (define-public julia-gr-jll
  1662. (package
  1663. (name "julia-gr-jll")
  1664. (version "0.57.3+0")
  1665. (source
  1666. (origin
  1667. (method git-fetch)
  1668. (uri (git-reference
  1669. (url "https://github.com/JuliaBinaryWrappers/GR_jll.jl")
  1670. (commit (string-append "GR-v" version))))
  1671. (file-name (git-file-name name version))
  1672. (sha256
  1673. (base32 "0a568qxxdrfi951s0lhy5081yw8pw6sv39vfkzxw5cxic92w6rbs"))))
  1674. (build-system julia-build-system)
  1675. (arguments
  1676. '(#:tests? #f ; no runtests
  1677. #:phases
  1678. (modify-phases %standard-phases
  1679. (add-after 'unpack 'override-binary-path
  1680. (lambda* (#:key inputs #:allow-other-keys)
  1681. (map
  1682. (lambda (wrapper)
  1683. (substitute* wrapper
  1684. (("generate_wrapper_header.*")
  1685. (string-append
  1686. "generate_wrapper_header(\"GR\", \""
  1687. (assoc-ref inputs "gr-framework") "\")\n"))))
  1688. ;; There's a Julia file for each platform, override them all
  1689. (find-files "src/wrappers/" "\\.jl$")))))))
  1690. (inputs
  1691. `(("gr-framework" ,gr-framework)))
  1692. (propagated-inputs
  1693. `(("julia-jllwrappers" ,julia-jllwrappers)
  1694. ("julia-bzip2-jll" ,julia-bzip2-jll)
  1695. ("julia-cairo-jll" ,julia-cairo-jll)
  1696. ("julia-ffmpeg-jll" ,julia-ffmpeg-jll)
  1697. ("julia-fontconfig-jll" ,julia-fontconfig-jll)
  1698. ("julia-glfw-jll" ,julia-glfw-jll)
  1699. ("julia-jpegturbo-jll" ,julia-jpegturbo-jll)
  1700. ("julia-libpng-jll" ,julia-libpng-jll)
  1701. ("julia-libtiff-jll" ,julia-libtiff-jll)
  1702. ("julia-pixman-jll" ,julia-pixman-jll)
  1703. ("julia-qt5base-jll" ,julia-qt5base-jll)
  1704. ("julia-zlib-jll" ,julia-zlib-jll)))
  1705. (home-page "https://github.com/JuliaBinaryWrappers/GR_jll.jl")
  1706. (synopsis "GR framework library wrappers")
  1707. (description "This package provides a wrapper for the GR framework.")
  1708. (license license:expat)))
  1709. (define-public julia-binaryprovider
  1710. (package
  1711. (name "julia-binaryprovider")
  1712. (version "0.5.10")
  1713. (source
  1714. (origin
  1715. (method git-fetch)
  1716. (uri (git-reference
  1717. (url "https://github.com/JuliaPackaging/BinaryProvider.jl")
  1718. (commit (string-append "v" version))))
  1719. (file-name (git-file-name name version))
  1720. (sha256
  1721. (base32 "00kin10n3fv5352fx3a4wh8l581702iqqhfz2sng773hkljndi9v"))))
  1722. (build-system julia-build-system)
  1723. (arguments
  1724. '(#:tests? #f ; test suite attempts to download packages
  1725. ))
  1726. (inputs
  1727. `(
  1728. ("busybox" ,(S "busybox"))
  1729. ))
  1730. (home-page "https://github.com/JuliaPackaging/BinaryProvider.jl")
  1731. (synopsis "binary provider for Julia")
  1732. (description "Packages are installed to a @code{Prefix}; a folder that acts similar to the @code{/usr/local} directory on Unix-like systems, containing a @code{bin} folder for binaries, a @code{lib} folder for libraries, etc... @code{Prefix} objects can have tarballs @code{install()}'ed within them, @code{uninstall()}'ed from them, etc...")
  1733. (license license:expat)))
  1734. ;; ready to upstream
  1735. (define-public julia-measurements
  1736. (package
  1737. (name "julia-measurements")
  1738. (version "2.6.0")
  1739. (source
  1740. (origin
  1741. (method git-fetch)
  1742. (uri (git-reference
  1743. (url "https://github.com/JuliaPhysics/Measurements.jl")
  1744. (commit (string-append "v" version))))
  1745. (file-name (git-file-name name version))
  1746. (sha256
  1747. (base32 "05p3f0gr4sv4maq8cix5fi8ldq0zagswqsd43xn6fhy046f936mz"))))
  1748. (build-system julia-build-system)
  1749. (propagated-inputs
  1750. `(("julia-calculus" ,julia-calculus)
  1751. ("julia-recipesbase" ,julia-recipesbase)
  1752. ("julia-requires" ,julia-requires)))
  1753. (native-inputs
  1754. `(("julia-specialfunctions" ,julia-specialfunctions)
  1755. ("julia-quadgk" ,julia-quadgk)
  1756. ("julia-unitful" ,julia-unitful)))
  1757. (home-page "https://juliaphysics.github.io/Measurements.jl/stable/")
  1758. (synopsis "Error propagation calculator and library")
  1759. (description "@code{Measurements.jl} is an error propagation calculator and
  1760. library for physical measurements. It supports real and complex numbers with
  1761. uncertainty, arbitrary precision calculations, operations with arrays, and
  1762. numerical integration. The linear error propagation theory is employed to
  1763. propagate the errors.")
  1764. (license license:expat)))
  1765. ;; ready to upstream
  1766. (define-public julia-quadgk
  1767. (package
  1768. (name "julia-quadgk")
  1769. (version "2.4.1")
  1770. (source
  1771. (origin
  1772. (method git-fetch)
  1773. (uri (git-reference
  1774. (url "https://github.com/JuliaMath/QuadGK.jl")
  1775. (commit (string-append "v" version))))
  1776. (file-name (git-file-name name version))
  1777. (sha256
  1778. (base32 "1hy0629yai6xflgxaflk9764lzr1lzhlghimxk1aqi212q9c6n33"))))
  1779. (build-system julia-build-system)
  1780. (propagated-inputs
  1781. `(("julia-datastructures" ,julia-datastructures)))
  1782. (home-page "https://github.com/JuliaMath/QuadGK.jl")
  1783. (synopsis "Adaptive 1d numerical Gauss–Kronrod integration in Julia")
  1784. (description "This package provides support for one-dimensional numerical
  1785. integration in Julia using adaptive Gauss-Kronrod quadrature. The code was
  1786. originally part of Base Julia. It supports integration of arbitrary numeric
  1787. types, including arbitrary precision (@code{BigFloat}), and even integration of
  1788. arbitrary normed vector spaces (e.g. matrix-valued integrands).")
  1789. (license license:expat)))