;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2020 Nicolò Balzarotti ;;; ;;; This file is part of GNU Guix. ;;; ;;; GNU Guix is free software; you can redistribute it and/or modify it ;;; under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 3 of the License, or (at ;;; your option) any later version. ;;; ;;; GNU Guix is distributed in the hope that it will be useful, but ;;; WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with GNU Guix. If not, see . (define-module (gnu packages julia-xyz) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix git-download) #:use-module (guix build-system julia) #:use-module (gnu packages curl) #:use-module (gnu packages tls)) (define-public julia-binaryprovider (package (name "julia-binaryprovider") (version "0.5.8") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/JuliaPackaging/BinaryProvider.jl") (commit (string-append "v" version)))) (file-name "BinaryProvider") (sha256 (base32 "174jmg4w8ncgfhdvfnm0p4cnlayw31j4s9sksqlwz1sipywqvww7")))) (build-system julia-build-system) ;; We don't really need BinaryProvider (as guix provides the binaries) but ;; since it's a dependency of other packages we want to precompile it. (arguments `(#:tests? #f)) (propagated-inputs `(("julia-sha" ,julia-sha))) (inputs `(("curl" ,curl))) (home-page "https://github.com/JuliaPackaging/BinaryProvider.jl") (synopsis "Reliable Binary provider for Julia") (description "@code{BinaryProvider.jl} simplifies the installation of binaries required by julia packages.") (license license:expat))) (define-public julia-bufferedstreams (package (name "julia-bufferedstreams") (version "1.0.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/BioJulia/BufferedStreams.jl") (commit (string-append "v" version)))) (file-name "BufferedStreams") (sha256 (base32 "0sf4sxbq55mg2pwxyxf0c839z1lk0yxg8nmb7617bfbvw31cp88z")))) (build-system julia-build-system) ;; tests are freezing, see ;; https://travis-ci.org/BioJulia/BufferedStreams.jl/jobs/491050182 (arguments '(#:tests? #f)) (propagated-inputs `(("julia-compat" ,julia-compat))) (home-page "https://github.com/BioJulia/BufferedStreams.jl") (synopsis "Fast composable IO streams") (description "@code{BufferedStreams} provides buffering for IO operations. It can wrap any IO type automatically making incremental reading and writing faster.") (license license:expat))) (define-public julia-compat (package (name "julia-compat") (version "3.6.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/JuliaLang/Compat.jl") (commit (string-append "v" version)))) (file-name "Compat") (sha256 (base32 "0dxy0kpwgz3a9w665lp154x9yrnic89f2b27b1nmh69jhnnb2zgr")))) (build-system julia-build-system) (home-page "https://github.com/JuliaLang/Compat.jl") (synopsis "Compatibility across Julia versions") (description "The Compat package is designed to ease interoperability between older and newer versions of the Julia language. The Compat package provides a macro that lets you use the latest syntax in a backwards-compatible way.") (license license:expat))) (define-public julia-datastructures (package (name "julia-datastructures") (version "0.17.9") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/JuliaCollections/DataStructures.jl") (commit (string-append "v" version)))) (file-name "DataStructures") (sha256 (base32 "1gp5n99c1llwp2zfsh1iw9jr5hhjswrq7v8iwkp2vj7yp5vvy5lw")))) (build-system julia-build-system) (propagated-inputs `(("julia-orderedcollections" ,julia-orderedcollections))) (home-page "https://github.com/JuliaCollections/DataStructures.jl") (synopsis "Julia implementation of Data structures") (description "This package implements a variety of data structures, including: @enumerate @item Deque (implemented with an unrolled linked list) @item CircularBuffer @item CircularDeque @item Stack @item Queue @item Accumulators and Counters (i.e. Multisets / Bags) @item Disjoint Sets @item Binary Heap @item Mutable Binary Heap @item Ordered Dicts and Sets @item Dictionaries with Defaults @item Trie @item Linked List and Mutable Linked List @item Sorted Dict, Sorted Multi-Dict and Sorted Set @item DataStructures.IntSet @item Priority Queue @item Fenwick Tree @item SparseIntSet @end enumerate") (license license:expat))) (define-public julia-fixedpointnumbers (package (name "julia-fixedpointnumbers") (version "0.8.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/JuliaMath/FixedPointNumbers.jl") (commit (string-append "v" version)))) (file-name "FixedPointNumbers") (sha256 (base32 "0zi0va64vhnhqga62j7116m5alrkfzlv7qady4bq6v9sfrwfzvw1")))) (build-system julia-build-system) (propagated-inputs `(("julia-compat" ,julia-compat))) (home-page "https://github.com/JuliaMath/FixedPointNumbers.jl") (synopsis "Fixed point types for julia") (description "This library implements fixed-point number types. A fixed-point number represents a fractional, or non-integral, number. In contrast with the more widely known floating-point numbers, with fixed-point numbers the decimal point doesn't \"float\": fixed-point numbers are effectively integers that are interpreted as being scaled by a constant factor. Consequently, they have a fixed number of digits (bits) after the decimal (radix) point.") (license license:expat))) (define-public julia-http (package (name "julia-http") (version "0.8.9") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/JuliaWeb/HTTP.jl") (commit (string-append "v" version)))) (file-name "HTTP") (sha256 (base32 "11g49gnnacvmihnr0p3inqmsdw6wllyfkq5sbka09mwnrf3vahs7")))) (build-system julia-build-system) (arguments `(#:phases (modify-phases %standard-phases (add-before 'install 'disable-network-tests (lambda _ (substitute* "test/runtests.jl" (("\"client.jl") "# \"client.jl") (("\"multipart.jl") "# \"multipart.jl") (("\"aws4.jl") "# \"as4.jl") ;; some of those might still be saved (("\"async.jl") "# \"async.jl") (("\"server.jl") "# \"server.jl")) (substitute* "test/websockets.jl" (("for s in socket_type") "for s in []")) (substitute* "test/messages.jl" (("@testset \"Read methods\" ") "return\n")) #t))))) (propagated-inputs `(("julia-inifile" ,julia-inifile) ("julia-mbedtls" ,julia-mbedtls) ("julia-compat" ,julia-compat))) ;; required for tests (inputs `(("julia-json" ,julia-json) ("julia-bufferedstreams" ,julia-bufferedstreams))) (home-page "https://juliaweb.github.io/HTTP.jl/") (synopsis "HTTP support for Julia") (description "@code{HTTP.jl} is a Julia library for HTTP Messages, implementing both a client and a server.") (license license:expat))) (define-public julia-inifile (package (name "julia-inifile") (version "0.5.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/JuliaIO/IniFile.jl") (commit "8ba59958495fa276d6489d2c3903e765d75e0bc0"))) (file-name "IniFile") (sha256 (base32 "11h6f99jpbg729lplw841m68jprka7q3n8yw390bndlmcdsjabpd")))) (build-system julia-build-system) (home-page "https://github.com/JuliaIO/IniFile.jl") (synopsis "Reading Windows-style INI files") (description "This is a julia package that defines an IniFile type that allows to interface with @file{.ini} files.") (license license:expat))) (define-public julia-json (package (name "julia-json") (version "0.21.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/JuliaIO/JSON.jl") (commit (string-append "v" version)))) (file-name "JSON") (sha256 (base32 "0knmfjhchd3ggy86dsfyb7l4v3fv5dcr207cgp54mj7rj96caqsm")))) (build-system julia-build-system) (propagated-inputs `(("julia-parsers" ,julia-parsers))) ;; For some reason, the precompile cache for this package is broken, ;; meaning that it will get re-generated at `using' (inputs `(("julia-offsetarrays" ,julia-offsetarrays) ("julia-datastructures" ,julia-datastructures) ("julia-fixedpointnumbers" ,julia-fixedpointnumbers))) (home-page "https://github.com/JuliaIO/JSON.jl") (synopsis "JSON parsing and printing in Julia") (description "Parsing and printing JSON in pure Julia.") (license license:expat))) (define-public julia-mbedtls (package (name "julia-mbedtls") (version "0.7.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/JuliaLang/MbedTLS.jl") (commit (string-append "v" version)))) (file-name "MbedTLS") (sha256 (base32 "1a8snw9gi21lm6r3kh6ly7ngi99s9k5shqkfiizj3g9li20q23h2")))) (build-system julia-build-system) (propagated-inputs `(("julia-binaryprovider" ,julia-binaryprovider))) (inputs `(("mbedtls-apache" ,mbedtls-apache))) (arguments `(#:phases (modify-phases %standard-phases (add-before 'install 'disable-network-tests (lambda _ (substitute* "test/runtests.jl" (("testhost =") "return #")) #t)) ;; Add binary dependency paths (add-before 'precompile 'build-deps (lambda* (#:key outputs source inputs #:allow-other-keys) (let ((f (open-file (string-append (assoc-ref outputs "out") "/share/julia/packages/" (string-append (strip-store-file-name source) "/deps/deps.jl")) "w"))) (display (string-append "const libmbedcrypto = \"" (assoc-ref inputs "mbedtls-apache") "/lib/libmbedcrypto.so\"\n") f) (display (string-append "const libmbedtls = \"" (assoc-ref inputs "mbedtls-apache") "/lib/libmbedtls.so\"\n") f) (display (string-append "const libmbedx509 = \"" (assoc-ref inputs "mbedtls-apache") "/lib/libmbedx509.so\"\n") f) (close-port f)) #t))))) (home-page "https://github.com/JuliaLang/MbedTLS.jl") (synopsis "Apache's mbed TLS library wrapper") (description "@code{MbedTLS.jl} provides a wrapper around the mbed TLS and cryptography C libary for Julia.") (license license:expat))) (define-public julia-offsetarrays (package (name "julia-offsetarrays") (version "1.0.2") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/JuliaArrays/OffsetArrays.jl") (commit (string-append "v" version)))) (file-name "OffsetArrays") (sha256 (base32 "0x86px7gynyzqqwan88z3lkq8yj0id4pa718l8xqj4yp9fbz440c")))) (build-system julia-build-system) ;; tests require Catindices, introducing a circular dependency (arguments '(#:tests? #f)) (home-page "https://github.com/JuliaArrays/OffsetArrays.jl") (synopsis "Fortran-like arrays with arbitrary, zero or negative starting indices") (description "OffsetArrays provides Julia users with arrays that have arbitrary indices, similar to those found in some other programming languages like Fortran.") (license license:expat))) (define-public julia-orderedcollections (package (name "julia-orderedcollections") (version "1.1.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/JuliaCollections/OrderedCollections.jl") ;; They added Package.toml after the 1.1.0 tag (commit "7a789d72a40f4c446f59575f5d77a63df4391a24"))) (file-name "OrderedCollections") (sha256 (base32 "09b3mlzkxcbc8wn0pji73591865li07q4kvvfzn9x4256mw47riq")))) (build-system julia-build-system) (home-page "https://github.com/JuliaCollections/OrderedCollections.jl") (synopsis "Julia implementation of associative containers that preserve insertion order") (description "This package implements OrderedDicts and OrderedSets, which are similar to containers in base Julia. However, during iteration the Ordered* containers return items in the order in which they were added to the collection.") (license license:expat))) (define-public julia-parsers (package (name "julia-parsers") (version "0.3.11") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/JuliaData/Parsers.jl") (commit (string-append "v" version)))) (file-name "Parsers") (sha256 (base32 "07dgcy12206a3lw55h00znq3yq4faczng6bbdn3lhc0l6jmclsly")))) (build-system julia-build-system) (home-page "https://github.com/JuliaData/Parsers.jl") (synopsis "Fast parsing machinery for basic types in Julia") (description "@code{Parsers} is a collection of type parsers and utilities for Julia") (license license:expat))) (define-public julia-sha (package (name "julia-sha") (version "0.5.7") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/staticfloat/SHA.jl") ;; tests fixed in this untagged version (commit "97b17a7fabf894257726c33cbd78255ac380906d"))) (file-name "SHA") (sha256 (base32 "169y78cmppj117cmh8ncnyh381caf9dsklaks5l40mia9jdcqbgl")))) (build-system julia-build-system) (propagated-inputs `(("julia-compat" ,julia-compat))) (home-page "https://github.com/staticfloat/SHA.jl") (synopsis "Performant, 100% native-julia SHA1, SHA2, and SHA3 implementation") (description "Julia package implementing SHA algorithms. Each exported function takes in either an @code{Array{UInt8}}, a @code{ByteString} or an @code{IO} object.") (license license:expat)))