From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:470:142:3::10]:53053) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j6Kqo-0006Zk-08 for guix-patches@gnu.org; Mon, 24 Feb 2020 16:01:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j6Kqg-00071B-QI for guix-patches@gnu.org; Mon, 24 Feb 2020 16:01:13 -0500 Received: from debbugs.gnu.org ([209.51.188.43]:48207) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1j6Kqb-0006z1-Rj for guix-patches@gnu.org; Mon, 24 Feb 2020 16:01:02 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1j6Kqb-0005Cr-QT for guix-patches@gnu.org; Mon, 24 Feb 2020 16:01:01 -0500 Subject: [bug#38546] [PATCH v4] Update Julia 1.3.1: almost done Resent-Message-ID: From: =?UTF-8?Q?Nicol=C3=B2?= Balzarotti In-Reply-To: References: Date: Mon, 24 Feb 2020 21:59:46 +0100 Message-ID: <87imjvwvjx.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: zimoun , 38546@debbugs.gnu.org --=-=-= Content-Type: text/plain zimoun writes: > Hi, > Hi, > Friendly ping. :-) > Here's a friendly 1.3.1 + HTTP.jl + dependencies patch submission. Hopefully this time it's fine. Package precompilation should be working now (except json, whose cache, for some reason, is not valid and gets rebuilt). As a reminder: determinism is still not addressed and will be fixed in the 1.4.0 release (hopefully, upstream is still not that responsive). However, there are dozens of julia packages that I want to package, so if this first batch is finally fine, more will come. --=-=-= Content-Type: text/x-patch; charset=utf-8 Content-Disposition: attachment; filename=0001-gnu-Add-dsfmt.patch Content-Transfer-Encoding: quoted-printable >From aa02b06ade12613f81ddc0415fb0eecffb808352 Mon Sep 17 00:00:00 2001 From: nixo Date: Mon, 24 Feb 2020 15:06:28 +0100 Subject: [PATCH 01/16] gnu: Add dsfmt. * gnu/packages/maths.scm (dsfmt): New variable. --- gnu/packages/maths.scm | 72 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 10071c10d5..1c55334a7d 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -33,6 +33,7 @@ ;;; Copyright =C2=A9 2019 Nicolas Goaziou ;;; Copyright =C2=A9 2019 Steve Sprang ;;; Copyright =C2=A9 2019 Robert Smith +;;; Copyright =C2=A9 2020 Nicol=C3=B2 Balzarotti ;;; ;;; This file is part of GNU Guix. ;;; @@ -373,6 +374,77 @@ semiconductors.") (license license:gpl3+) (home-page "https://www.gnu.org/software/dionysus/"))) =20 +(define-public dsfmt + (package + (name "dsfmt") + (version "2.2.3") + (source + (origin + (method url-fetch) + (uri + (string-append + "http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/dSFMT-src-" + version ".tar.gz")) + (sha256 + (base32 + "03kaqbjbi6viz0n33dk5jlf6ayxqlsq4804n7kwkndiga9s4hd42")) + ;; julia needs those (and is the only program depending on dsfmt no= w) + (patches + (list + (origin + (method url-fetch) + (uri (string-append + "https://raw.githubusercontent.com/JuliaLang/julia/" + "v1.3.0/deps/patches/dSFMT.c.patch")) + (sha256 (base32 + "09mhv11bms8jsmkmdqvlcgljwhzw3b6n9nncpi2b6dla9798hw2y"= )) + (file-name "dSFMT.c.patch")) + (origin + (method url-fetch) + (uri (string-append + "https://raw.githubusercontent.com/JuliaLang/julia/" + "v1.3.0/deps/patches/dSFMT.h.patch")) + (sha256 (base32 + "1py5rd0yxic335lzka23f6x2dhncrpizpyrk57gi2f28c0p98y5n"= )) + (file-name "dSFMT.h.patch")))))) + (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (delete 'configure) ;no configure script + (replace 'build + ;; upstream Makefile does not build a shared library + (lambda _ + (invoke + "gcc" + ;; flags copied from julia + ;; https://github.com/JuliaLang/julia/blob/v1.3.0/deps/dsfmt= .mk + "-DNDEBUG" "-DDSFMT_MEXP=3D19937" + "-fPIC" "-DDSFMT_DO_NOT_USE_OLD_NAMES" + "-O3" "-finline-functions" "-fomit-frame-pointer" + "-fno-strict-aliasing" "--param" "max-inline-insns-single=3D= 1800" + "-Wmissing-prototypes" "-Wall" "-std=3Dc99" "-shared" "dSFMT= .c" + "-o" "libdSFMT.so"))) + (replace 'install ;no "install" target + (lambda* (#:key outputs #:allow-other-keys) + (let ((lib (string-append (assoc-ref outputs "out") + "/lib")) + (inc (string-append (assoc-ref outputs "out") + "/include"))) + (install-file "libdSFMT.so" lib) + (install-file "dSFMT.h" inc) + #t)))))) + (synopsis "Double precision SIMD-oriented Fast Mersenne Twister") + (description + "The dSMFT package speeds up Fast Mersenne Twister generation by avoi= ding +the expensive conversion of integer to double (floating point). dSFMT dir= ectly +generates double precision floating point pseudorandom numbers which have = the +IEEE Standard for Binary Floating-Point Arithmetic (ANSI/IEEE Std 754-1985) +format. dSFMT is only available on the CPUs which use IEEE 754 format dou= ble +precision floating point numbers.") + (home-page "http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/") + (license license:bsd-3))) + (define-public gsl (package (name "gsl") --=20 2.25.0 --=-=-= Content-Type: text/x-patch; charset=utf-8 Content-Disposition: attachment; filename=0002-gnu-julia-Update-to-1.3.1.patch Content-Transfer-Encoding: quoted-printable >From 2a4e73c2c4700be23092197c48465a605786683d Mon Sep 17 00:00:00 2001 From: nixo Date: Mon, 24 Feb 2020 15:07:27 +0100 Subject: [PATCH 02/16] gnu: julia: Update to 1.3.1. * gnu/packages/julia.scm (julia): Update to 1.3.1 * gnu/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch: New file. * gnu/packages/patches/julia-no-project-name-cache.patch: New file. * gnu/local.mk: Add julia patches. --- gnu/local.mk | 2 + gnu/packages/julia.scm | 348 +++++++++--------- .../julia-SOURCE_DATE_EPOCH-mtime.patch | 22 ++ 3 files changed, 188 insertions(+), 184 deletions(-) create mode 100644 gnu/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch diff --git a/gnu/local.mk b/gnu/local.mk index 1f7cad9d32..c2273d5745 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -26,6 +26,7 @@ # Copyright =C2=A9 2019 Evan Straw # Copyright =C2=A9 2019 Brett Gilio # Copyright =C2=A9 2019 Amin Bandali +# Copyright =C2=A9 2020 Nicol=C3=B2 Balzarotti # # This file is part of GNU Guix. # @@ -1038,6 +1039,7 @@ dist_patch_DATA =3D \ %D%/packages/patches/java-xerces-bootclasspath.patch \ %D%/packages/patches/java-xerces-build_dont_unzip.patch \ %D%/packages/patches/java-xerces-xjavac_taskdef.patch \ + %D%/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch \ %D%/packages/patches/jbig2dec-ignore-testtest.patch \ %D%/packages/patches/jfsutils-add-sysmacros.patch \ %D%/packages/patches/jfsutils-include-systypes.patch \ diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm index 65a5e42beb..74d214930e 100644 --- a/gnu/packages/julia.scm +++ b/gnu/packages/julia.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright =C2=A9 2015, 2016, 2017 Ricardo Wurmus ;;; Copyright =C2=A9 2016 Efraim Flashner +;;; Copyright =C2=A9 2020 Nicol=C3=B2 Balzarotti ;;; ;;; This file is part of GNU Guix. ;;; @@ -28,6 +29,7 @@ #:use-module (gnu packages algebra) #:use-module (gnu packages base) #:use-module (gnu packages compression) + #:use-module (gnu packages curl) #:use-module (gnu packages elf) #:use-module (gnu packages gcc) #:use-module (gnu packages llvm) @@ -43,18 +45,18 @@ #:use-module (gnu packages textutils) #:use-module (gnu packages tls) #:use-module (gnu packages version-control) + #:use-module (gnu packages ssh) #:use-module (gnu packages wget) #:use-module (ice-9 match)) =20 (define libuv-julia - (let ((commit "26dbe5672c33fc885462c509fe2a9b36f35866fd") - (revision "6")) - ;; When upgrading Julia, also upgrade this. - ;; Get the commit from https://github.com/JuliaLang/julia/blob/v1.1.1/= deps/libuv.version + (let ((commit "35b1504507a7a4168caae3d78db54d1121b121e1")) + ;; When upgrading Julia, also upgrade this. Get the commit from + ;; https://github.com/JuliaLang/julia/blob/v1.3.1/deps/libuv.version (package (inherit libuv) (name "libuv-julia") - (version (string-append "1.9.0-" revision "." (string-take commit 8)= )) + (version (string-append "2.0.0" "." (string-take commit 8))) (source (origin (method git-fetch) (uri (git-reference @@ -63,7 +65,7 @@ (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "17pn2xmqaramilx897s9grs966i5246gi6sric5alch4g9j4685n"))= )) + "0dn3v6fdp1z382pqg3nhjzk60l61ky9b65mfgaj29fv2da95rwjs"))= )) (build-system gnu-build-system) (arguments (substitute-keyword-arguments (package-arguments libuv) @@ -72,14 +74,37 @@ (delete 'autogen))))) (home-page "https://github.com/JuliaLang/libuv")))) =20 -(define (llvm-patch-url version name) +(define libunwind-julia + ;; The Julia projects requires their patched version. + ;; Get from https://github.com/JuliaLang/julia/tree/master/deps/patches + (package + (inherit libunwind) + (name "libunwind-julia") + (version "1.3.1") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://savannah/libunwind/libunwind-" + version ".tar.gz")) + (sha256 + (base32 + "1y0l08k6ak1mqbfj6accf9s5686kljwgsl4vcqpxzk5n74wpm6a3")) + (patches + (list + (julia-patch "libunwind-prefer-extbl" + "0lr4dafw8qyfh8sw8hhbwkql1dlhqv8px7k81y2l20hhxfgnh2m= 1") + (julia-patch "libunwind-static-arm" + "1jk3bmiw61ypcchqkk1fyg5wh8wpggk574wxyfyaic870zh3lhg= q"))))) + (home-page "https://github.com/JuliaLang/tree/master/deps/"))) + +(define (julia-patch-url version name) (string-append "https://raw.githubusercontent.com/JuliaLang/julia/v" ver= sion - "/deps/patches/" name)) + "/deps/patches/" name ".patch")) =20 -(define (llvm-patch name sha) - (let ((version "1.1.1")) +(define (julia-patch name sha) + (let ((version "1.3.1")) (origin (method url-fetch) - (uri (llvm-patch-url version name)) + (uri (julia-patch-url version name)) (sha256 (base32 sha)) (file-name name)))) =20 @@ -98,41 +123,44 @@ ;; but they are required to build Julia. ;; Discussion: https://bugs.debian.org/cgi-bin/bugreport.cgi= ?bug=3D919628 (patches - (list - (llvm-patch "llvm-6.0-D44650.patch" - "1336q4vqayr94wdcnlmcxh90mjdh34dzw9x2cbiqjnx9b1j8fxyb") - (llvm-patch "llvm-6.0-DISABLE_ABI_CHECKS.patch" - "014fawd1ba7yckalypfld22zgic87x9nx3cim42zrwygywd36pyg") - (llvm-patch "llvm-6.0-NVPTX-addrspaces.patch" - "1qdi2zmrjsrj0h84zv2vyly2hjcn4f67mfy0s1q353g4v4jkscqc") - (llvm-patch "llvm-6.0.0_D27296-libssp.patch" - "0s5hi2r1j63i8m6ig1346crx2aiv9f7rgb3mg80kw1wx5y7pdpfh") - (llvm-patch "llvm-D27629-AArch64-large_model_6.0.1.patch" - "1qrshmlqvnasdyc158vfn3hnbigqph3lsq7acb9w8lwkpnnm2j4z") - (llvm-patch "llvm-D34078-vectorize-fdiv.patch" - "1696hg84a0jxcnggvqsc2cdp271hf9a44p4qsd078qm1mfawkaay") - (llvm-patch "llvm-D42262-jumpthreading-not-i1.patch" - "1c8w210gwidbnkkw8anp17dk5pnxws2fl3mb2qxh7y9wzfpixgaq") - (llvm-patch "llvm-D44892-Perf-integration.patch" - "0r37jd0ssh2k1pndkfd5blgpg9z90im4vlzprhb0n0wwz45g4b05") - (llvm-patch "llvm-D46460.patch" - "1miqgswdc0qvbaf4571c2xkxyp9ais06b1bcpa83sq22vr4hbsfb") - (llvm-patch "llvm-D49832-SCEVPred.patch" - "0v5c88hgqj6dymv3j86ca5mhpqab5fbnrvjiw1nvnrnya9l4dlbn") - (llvm-patch "llvm-D50010-VNCoercion-ni.patch" - "0iblb3q1xixwrb12jpb89h3ywmqmzdp6aqp416j4ncwakyjhhfkp") - (llvm-patch "llvm-D50167-scev-umin.patch" - "1f2rakcnnyhr7w10k7gqg0k0491pyvx5ijplivw557f714ys3q6v") - (llvm-patch "llvm-OProfile-line-num.patch" - "1jvbbmwyags0xfwamb13qrf3rgcz9i1r03m9lava7swag8xb78c7") - (llvm-patch "llvm-PPC-addrspaces.patch" - "1f23nhsxh2s3jskbgs7da9nwg3s1hrkbk5aahl08x41wi3mny01p") - (llvm-patch "llvm-rL323946-LSRTy.patch" - "10cz3vy1yw0w643z7xx021wa4kymx9fcm3bjg61s6vzdqd6d9fns") - (llvm-patch "llvm-rL326967-aligned-load.patch" - "04jxnv32yj5x17hqhi8g2p8rhgp38gmjzr871w7z8s44pq10v9v4") - (llvm-patch "llvm-rL327898.patch" - "15ah49gbsll23z28kpyahi5vl0fh3fkxcgd1zmxxdcl96s3x8bnq"))))) + (map (match-lambda + ((name hash) + (julia-patch name hash))) + (list + '("llvm-6.0-D44650" + "1336q4vqayr94wdcnlmcxh90mjdh34dzw9x2cbiqjnx9b1j8fx= yb") + '("llvm-6.0-DISABLE_ABI_CHECKS" + "014fawd1ba7yckalypfld22zgic87x9nx3cim42zrwygywd36p= yg") + '("llvm-6.0-NVPTX-addrspaces" + "1qdi2zmrjsrj0h84zv2vyly2hjcn4f67mfy0s1q353g4v4jksc= qc") + '("llvm-6.0.0_D27296-libssp" + "0s5hi2r1j63i8m6ig1346crx2aiv9f7rgb3mg80kw1wx5y7pdp= fh") + '("llvm-D27629-AArch64-large_model_6.0.1" + "1qrshmlqvnasdyc158vfn3hnbigqph3lsq7acb9w8lwkpnnm2j= 4z") + '("llvm-D34078-vectorize-fdiv" + "1696hg84a0jxcnggvqsc2cdp271hf9a44p4qsd078qm1mfawka= ay") + '("llvm-D42262-jumpthreading-not-i1" + "1c8w210gwidbnkkw8anp17dk5pnxws2fl3mb2qxh7y9wzfpixg= aq") + '("llvm-D44892-Perf-integration" + "0r37jd0ssh2k1pndkfd5blgpg9z90im4vlzprhb0n0wwz45g4b= 05") + '("llvm-D46460" + "1miqgswdc0qvbaf4571c2xkxyp9ais06b1bcpa83sq22vr4hbs= fb") + '("llvm-D49832-SCEVPred" + "0v5c88hgqj6dymv3j86ca5mhpqab5fbnrvjiw1nvnrnya9l4dl= bn") + '("llvm-D50010-VNCoercion-ni" + "0iblb3q1xixwrb12jpb89h3ywmqmzdp6aqp416j4ncwakyjhhf= kp") + '("llvm-D50167-scev-umin" + "1f2rakcnnyhr7w10k7gqg0k0491pyvx5ijplivw557f714ys3q= 6v") + '("llvm-OProfile-line-num" + "1jvbbmwyags0xfwamb13qrf3rgcz9i1r03m9lava7swag8xb78= c7") + '("llvm-PPC-addrspaces" + "1f23nhsxh2s3jskbgs7da9nwg3s1hrkbk5aahl08x41wi3mny0= 1p") + '("llvm-rL323946-LSRTy" + "10cz3vy1yw0w643z7xx021wa4kymx9fcm3bjg61s6vzdqd6d9f= ns") + '("llvm-rL326967-aligned-load" + "04jxnv32yj5x17hqhi8g2p8rhgp38gmjzr871w7z8s44pq10v9= v4") + '("llvm-rL327898" + "15ah49gbsll23z28kpyahi5vl0fh3fkxcgd1zmxxdcl96s3x8b= nq")))))) (arguments (substitute-keyword-arguments (package-arguments llvm-6) ((#:configure-flags flags) @@ -158,7 +186,7 @@ (define-public julia (package (name "julia") - (version "1.1.1") + (version "1.3.1") (source (origin (method url-fetch) (uri (string-append @@ -166,7 +194,9 @@ version "/julia-" version ".tar.gz")) (sha256 (base32 - "0hk983mywimclgnjc41zmlppm5kfdz2aj85ky07p49ilcqxi998f")))) + "1nwkmr9j55g1zkxdchnid1h022s0is52vx23niksshgvh793g41x")) + (patches + (search-patches "julia-SOURCE_DATE_EPOCH-mtime.patch")))) (build-system gnu-build-system) (arguments `(#:test-target "test" @@ -188,30 +218,25 @@ (add-after 'unpack 'prepare-deps (lambda* (#:key inputs #:allow-other-keys) (mkdir "deps/srccache") - (copy-file (assoc-ref inputs "dsfmt") - "deps/srccache/dsfmt-2.2.3.tar.gz") + ;; no USE_SYSTEM_{OBJCONV/LIBWHICH} (copy-file (assoc-ref inputs "objconv") "deps/srccache/objconv.zip") - (copy-file (assoc-ref inputs "suitesparse") - "deps/srccache/SuiteSparse-4.4.5.tar.gz") - (copy-file (string-append (assoc-ref inputs "virtualenv") - "/bin/virtualenv") - "julia-env") (copy-file (assoc-ref inputs "libwhich") (string-append "deps/srccache/libwhich-" "81e9723c0273d78493dc8c8ed570f68d9c= e7e89e" ".tar.gz")) - (copy-file (assoc-ref inputs "rmath") - "deps/srccache/Rmath-julia-0.1.tar.gz") =20 ;; needed by libwhich (setenv "LD_LIBRARY_PATH" (string-join (map (lambda (pkg) (string-append (assoc-ref inputs = pkg) "/lib")) - '("arpack-ng" "fftw" "gmp" "lapack" - "libgit2" "mpfr" "openblas" "openlibm" - "openspecfun" "pcre2")) + '("arpack-ng" "curl" "dsfmt" + "gmp" "lapack" + "libssh2" "libgit2" + "mbedtls" "mpfr" + "openblas" "openlibm" "pcre2" + "suitesparse")) ":")) #t)) ;; FIXME: Building the documentation requires Julia packages that @@ -233,44 +258,12 @@ ;; using the output of "/sbin/ldconfig -p". Since ldconfig is n= ot ;; used in Guix, we patch runtime_ccall.cpp to contain a static = map. (lambda* (#:key inputs #:allow-other-keys) - (use-modules (ice-9 match)) - (substitute* "src/runtime_ccall.cpp" - ;; Patch out invocations of '/sbin/ldconfig' to avoid getting - ;; error messages about missing '/sbin/ldconfig' on Guix Sys= tem. - (("popen\\(.*ldconfig.*\\);") - "NULL;\n") - - ;; Populate 'sonameMap'. - (("jl_read_sonames.*;") - (string-join - (map (match-lambda - ((input libname soname) - (string-append - "sonameMap[\"" libname "\"] =3D " - "\"" (assoc-ref inputs input) "/lib/" soname "\";= "))) - '(("libc" "libc" "libc.so.6") - ("pcre2" "libpcre2-8" "libpcre2-8.so") - ("mpfr" "libmpfr" "libmpfr.so") - ("openblas" "libblas" "libopenblas.so") - ("arpack-ng" "libarpack" "libarpack.so") - ("lapack" "liblapack" "liblapack.so") - ("libgit2" "libgit2" "libgit2.so") - ("gmp" "libgmp" "libgmp.so") - ("openspecfun" "libopenspecfun" "libopenspecfun.so") - ("fftw" "libfftw3" "libfftw3_threads.s= o") - ("fftwf" "libfftw3f" "libfftw3f_threads.= so")))))) - (substitute* "base/math.jl" - (("const libm =3D Base.libm_name") - (string-append "const libm =3D \"" - (assoc-ref inputs "openlibm") - "/lib/libopenlibm.so" - "\"")) - (("const openspecfun =3D \"libopenspecfun\"") - (string-append "const openspecfun =3D \"" - (assoc-ref inputs "openspecfun") - "/lib/libopenspecfun.so" - "\""))) - #t)) + (substitute* "base/math.jl" + (("const libm =3D Base.libm_name") + (string-append "const libm =3D \"" + (assoc-ref inputs "openlibm") + "/lib/libopenlibm.so" + "\""))))) (add-before 'build 'fix-include-and-link-paths (lambda* (#:key inputs #:allow-other-keys) ;; LIBUTF8PROC is a linker flag, not a build target. It is @@ -278,10 +271,10 @@ ;; collection of build targets and a list of libraries to link ;; against. (substitute* "src/flisp/Makefile" - (("\\$\\(BUILDDIR\\)/\\$\\(EXENAME\\): \\$\\(OBJS\\) \\$\\(L= IBFILES_release\\)") - "$(BUILDDIR)/$(EXENAME): $(OBJS) $(LLT_release)") - (("\\$\\(BUILDDIR\\)/\\$\\(EXENAME\\)-debug: \\$\\(DOBJS\\) = \\$\\(LIBFILES_debug\\)") - "$(BUILDDIR)/$(EXENAME)-debug: $(DOBJS) $(LLT_debug)")) + (("\\$\\(BUILDDIR\\)/\\$\\(EXENAME\\)\\$\\(EXE\\): \\$\\(OB= JS\\) \\$\\(LIBFILES_release\\)") + "$(BUILDDIR)/$(EXENAME)$(EXE): $(OBJS) $(LLT_release)") + (("\\$\\(BUILDDIR\\)/\\$\\(EXENAME\\)-debug$(EXE): \\$\\(DO= BJS\\) \\$\\(LIBFILES_debug\\)") + "$(BUILDDIR)/$(EXENAME)-debug\\$\\(EXE\\): $(DOBJS) $(LLT_= debug)")) =20 ;; The REPL must be linked with libuv. (substitute* "ui/Makefile" @@ -296,39 +289,50 @@ "/include/uv/errno.h"))) #t)) (add-before 'build 'replace-default-shell - (lambda _ - (substitute* "base/client.jl" - (("/bin/sh") (which "sh"))) - #t)) - (add-after 'unpack 'hardcode-paths (lambda _ - (substitute* "stdlib/InteractiveUtils/src/InteractiveUtils.jl" - (("`which") (string-append "`" (which "which"))) - (("`wget") (string-append "`" (which "wget")))) + (substitute* "base/client.jl" + (("/bin/sh") (which "sh"))) + #t)) + (add-before 'build 'fix-precompile + (lambda _ + (substitute* "base/loading.jl" + (("something(Base.active_project(), \"\")") "\"\"")) #t)) (add-before 'check 'disable-broken-tests (lambda _ - (define (touch file-name) - (call-with-output-file file-name (const #t))) - ;; FIXME: All git tests works except this one. But *THIS* "fix" - ;; is not working, so right now I'm disabling all libgit2.jl = tests - ;; (substitute* "stdlib/LibGit2/test/libgit2.jl" - ;; (("!LibGit2.use_http_path(cfg, github_cred)") "true") - ;; (("LibGit2.use_http_path(cfg, mygit_cred)") "true")) - (map (lambda (test) - (delete-file test) - (touch test)) - '("stdlib/Sockets/test/runtests.jl" - "stdlib/Distributed/test/runtests.jl" - ;; FIXME: see above - "stdlib/LibGit2/test/libgit2.jl")) - (substitute* "test/choosetests.jl" - ;; These tests fail, probably because some of the input - ;; binaries have been stripped and thus backtraces don't look - ;; as expected. - (("\"backtrace\",") "") - (("\"cmdlineargs\",") "")) - #t))) + (substitute* "test/choosetests.jl" + (("tests =3D testnames") + ;; Those failings are not deterministic. They depends on = the + ;; running order. I think it depends on the number of + ;; runners, disabling it for now + ;; https://github.com/JuliaLang/julia/issues/34330 + "tests =3D filter(e->!in(e,[\"backtrace\",\"exceptions\", + \"stress\",\"precompile\", + \"client\",\"stacktraces\"]), + testnames)")) + ;; When HOME is not set, julia calls uv_os_homedir, which in + ;; turns call getpwuid_r. Add the HOME env variable to the + ;; external julia call to fix this + (substitute* "test/cmdlineargs.jl" + (("\"JULIA_PROJECT\"") "\"HOME\"=3D>\"/tmp\", \"JULIA_PROJE= CT\"")) + ;; Marking the test as broken as it's a known bug: + ;; https://github.com/JuliaLang/julia/issues/32377 + (substitute* "stdlib/REPL/test/replcompletions.jl" + (("@test count") "@test_broken count")) + #t)) + (add-after 'install 'make-wrapper + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (program "julia")) + (with-directory-excursion bin + (wrap-program program + `("JULIA_LOAD_PATH" ":" prefix + ("" "$JULIA_LOAD_PATH"))) + (wrap-program program + `("JULIA_DEPOT_PATH" ":" prefix + ("" "$JULIA_DEPOT_PATH")))) + #t)))) #:make-flags (list (string-append "prefix=3D" (assoc-ref %outputs "out")) @@ -346,25 +350,20 @@ (_ "MARCH=3DUNSUPPORTED")) =20 "CONFIG_SHELL=3Dbash" ;needed to build bundled libraries - "USE_SYSTEM_DSFMT=3D0" ;not packaged for Guix and upstream has = no - ;build system for a shared library. + ;; list of "USE_SYSTEM_*" is here: + ;; https://github.com/JuliaLang/julia/blob/v1.3.1/Make.inc + "USE_SYSTEM_DSFMT=3D1" + "USE_SYSTEM_P7ZIP=3D1" "USE_SYSTEM_LAPACK=3D1" "USE_SYSTEM_BLAS=3D1" "USE_BLAS64=3D0" ;needed when USE_SYSTEM_BLAS=3D1 "LIBBLAS=3D-lopenblas" "LIBBLASNAME=3Dlibopenblas" =20 - "USE_SYSTEM_FFTW=3D1" - "LIBFFTWNAME=3Dlibfftw3" - "LIBFFTWFNAME=3Dlibfftw3f" - - ;; TODO: Suitesparse does not install shared libraries, so we cann= ot - ;; use the suitesparse package. - ;; "USE_SYSTEM_SUITESPARSE=3D1" - ;; (string-append "SUITESPARSE_INC=3D-I " - ;; (assoc-ref %build-inputs "suitesparse") - ;; "/include") - + "USE_SYSTEM_SUITESPARSE=3D1" + (string-append "SUITESPARSE_INC=3D-I " + (assoc-ref %build-inputs "suitesparse") + "/include") "USE_GPL_LIBS=3D1" ;proudly "USE_SYSTEM_UTF8PROC=3D1" (string-append "UTF8PROC_INC=3D" @@ -390,11 +389,16 @@ "USE_SYSTEM_MPFR=3D1" "USE_SYSTEM_ARPACK=3D1" "USE_SYSTEM_LIBGIT2=3D1" - "USE_SYSTEM_ZLIB=3D1" - "USE_SYSTEM_OPENSPECFUN=3D1"))) + (string-append "LIBUV=3D" + (assoc-ref %build-inputs "libuv") + "/lib/libuv.so") + (string-append "LIBUV_INC=3D" + (assoc-ref %build-inputs "libuv") + "/include") + "USE_SYSTEM_ZLIB=3D1"))) (inputs `(("llvm" ,llvm-julia) - + ("p7zip" ,p7zip) ;; The bundled version is 3.3.0 so stick to that version. With oth= er ;; versions, we get test failures in 'linalg/arnoldi' as described = in ;; . @@ -403,12 +407,12 @@ ("coreutils" ,coreutils) ;for bindings to "mkdir" and the like ("lapack" ,lapack) ("openblas" ,openblas) ;Julia does not build with Atlas - ("libunwind" ,libunwind) + ("libunwind" ,libunwind-julia) ("openlibm" ,openlibm) - ("openspecfun" ,openspecfun) + ("mbedtls" ,mbedtls-apache) + ("curl" ,curl) ("libgit2" ,libgit2) - ("fftw" ,fftw) - ("fftwf" ,fftwf) + ("libssh2" ,libssh2) ("fortran" ,gfortran) ("libuv" ,libuv-julia) ("pcre2" ,pcre2) @@ -418,31 +422,12 @@ ("which" ,which) ("zlib" ,zlib) ("gmp" ,gmp) - ("virtualenv" ,python2-virtualenv) + ("suitesparse" ,suitesparse) ;; FIXME: The following inputs are downloaded from upstream to allo= w us ;; to use the lightweight Julia release tarball. Ideally, these in= puts ;; would eventually be replaced with proper Guix packages. - - ;; TODO: run "make -f contrib/repackage_system_suitesparse4.make" t= o copy static lib - ;; Find dependency versions here: - ;; https://raw.githubusercontent.com/JuliaLang/julia/77a2c1e245c858= 12dc1c7687540beedecc52758f/deps/Versions.make - ("rmath" - ,(origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/JuliaLang/Rmath-julia") - (commit "v0.1"))) - (file-name "rmath-julia-0.1-checkout") - (sha256 - (base32 - "1zkpy0cg5zivq40zbhbdgj9128fqzs2j94wkwih8nc6xaj3gp9p6")))) - ("suitesparse" - ,(origin - (method url-fetch) - (uri "http://faculty.cse.tamu.edu/davis/SuiteSparse/SuiteSparse= -4.4.5.tar.gz") - (sha256 - (base32 - "1jcbxb8jx5wlcixzf6n5dca2rcfx6mlcms1k2rl5gp67ay3bix43")))) + ;; Find dependencies versions here: + ;; https://raw.githubusercontent.com/JuliaLang/julia/v1.3.0/deps/Ve= rsions.make ("objconv" ,(origin (method url-fetch) @@ -466,16 +451,8 @@ ".tar.gz")) (sha256 (base32 - "1p7zg31kpmpbmh1znrk1xrbd074agx13b9q4dcw8n2zrwwdlbz3b"))))) - ("dsfmt" - ,(origin - (method url-fetch) - (uri (string-append - "http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/" - "SFMT/dSFMT-src-2.2.3.tar.gz")) - (sha256 - (base32 - "03kaqbjbi6viz0n33dk5jlf6ayxqlsq4804n7kwkndiga9s4hd42")))))) + "1p7zg31kpmpbmh1znrk1xrbd074agx13b9q4dcw8n2zrwwdlbz3b"))))) + ("dsfmt" ,dsfmt))) (native-inputs `(("openssl" ,openssl) ("perl" ,perl) @@ -485,7 +462,10 @@ (native-search-paths (list (search-path-specification (variable "JULIA_LOAD_PATH") - (files (list "share/julia/packages/"))))) + (files (list "share/julia/packages/"))) + (search-path-specification + (variable "JULIA_DEPOT_PATH") + (files (list "share/julia/"))))) ;; Julia is not officially released for ARM and MIPS. ;; See https://github.com/JuliaLang/julia/issues/10639 (supported-systems '("i686-linux" "x86_64-linux" "aarch64-linux")) diff --git a/gnu/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch b/gnu= /packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch new file mode 100644 index 0000000000..b60f284923 --- /dev/null +++ b/gnu/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch @@ -0,0 +1,22 @@ +Fix one of upstream non-determinism, tracked here: + +https://github.com/JuliaLang/julia/issues/34115 +https://github.com/JuliaLang/julia/issues/25900 + + +Patch by Nicol=C3=B3 Balzarotti . + +--- a/base/loading.jl ++++ b/base/loading.jl +@@ -807,7 +807,10 @@ + path =3D normpath(joinpath(dirname(prev), _path)) + end + if _track_dependencies[] +- push!(_require_dependencies, (mod, path, mtime(path))) ++ push!(_require_dependencies, ++ (mod, path, ++ haskey(ENV, "SOURCE_DATE_EPOCH") ? ++ parse(Float64, ENV["SOURCE_DATE_EPOCH"]) : mtime(path))) + end + return path, prev + end --=20 2.25.0 --=-=-= Content-Type: text/x-patch; charset=utf-8 Content-Disposition: attachment; filename=0003-gnu-julia-build-system-Enable-tests-fix-precompilati.patch Content-Transfer-Encoding: quoted-printable >From 69bfdff9a8772bbe9254c9cd3a97966e059060af Mon Sep 17 00:00:00 2001 From: nixo Date: Mon, 24 Feb 2020 15:28:45 +0100 Subject: [PATCH 03/16] gnu: julia-build-system: Enable tests, fix precompilation. --- guix/build-system/julia.scm | 2 +- guix/build/julia-build-system.scm | 71 +++++++++++++++---------------- 2 files changed, 36 insertions(+), 37 deletions(-) diff --git a/guix/build-system/julia.scm b/guix/build-system/julia.scm index 488fe9bb1d..d3cb41c054 100644 --- a/guix/build-system/julia.scm +++ b/guix/build-system/julia.scm @@ -75,7 +75,7 @@ =20 (define* (julia-build store name inputs #:key source - (tests? #f) + (tests? #t) (phases '(@ (guix build julia-build-system) %standard-phases)) (outputs '("out")) diff --git a/guix/build/julia-build-system.scm b/guix/build/julia-build-sys= tem.scm index ff6fcf5fe3..2916775c9d 100644 --- a/guix/build/julia-build-system.scm +++ b/guix/build/julia-build-system.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright =C2=A9 2019 Nicol=C3=B2 Balzarotti +;;; Copyright =C2=A9 2019, 2020 Nicol=C3=B2 Balzarotti ;;; ;;; This file is part of GNU Guix. ;;; @@ -37,54 +37,53 @@ ;; subpath where we store the package content (define %package-path "/share/julia/packages/") =20 -(define (generate-load-path inputs outputs) - (string-append - (string-join (map (match-lambda - ((_ . path) - (string-append path %package-path))) - ;; Restrict to inputs beginning with "julia-". - (filter (match-lambda - ((name . _) - (string-prefix? "julia-" name))) - inputs)) - ":") - (string-append ":" (assoc-ref outputs "out") %package-path) - ;; stdlib is always required to find Julia's standard libraries. - ;; usually there are other two paths in this variable: - ;; "@" and "@v#.#" - ":@stdlib")) - (define* (install #:key source inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (package-dir (string-append out %package-path - (string-append - (strip-store-file-name source))))) - (setenv "JULIA_LOAD_PATH" (generate-load-path inputs outputs)) + (strip-store-file-name source)))) (mkdir-p package-dir) - (copy-recursively source package-dir)) + (copy-recursively (getcwd) package-dir)) #t) =20 -;; TODO: Precompilation is working, but I don't know how to tell -;; julia to use use it. If (on rantime) we set HOME to -;; store path, julia tries to write files there (failing) (define* (precompile #:key source inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (builddir (string-append out "/share/julia/")) (package (strip-store-file-name source))) (mkdir-p builddir) (setenv "JULIA_DEPOT_PATH" builddir) - (setenv "JULIA_LOAD_PATH" (generate-load-path inputs outputs)) - ;; Actual precompilation - (invoke-julia (string-append "using " package))) + ;; add new package dir to the load path + (setenv "JULIA_LOAD_PATH" + (string-append builddir "packages/" + (if (getenv "JULIA_LOAD_PATH") + (string-append ":" (getenv "JULIA_LOAD_PATH= ")) + ""))) + ;; Actual precompilation. + (invoke-julia + ;; when using julia as a user, julia writes precompile cache to the f= irst + ;; entry of the DEPOT_PATH list (by default, the home dir). We want = to + ;; write it to the store, so let's push the store path as the first + ;; element of DEPOT_PATH. Once the cache file exists, this hack is n= ot + ;; needed anymore (like in the check phase). If the user install new + ;; pacakges, those will be installed and precompiled in the home dir + (string-append "pushfirst!(DEPOT_PATH, pop!(DEPOT_PATH)); using " pac= kage))) #t) =20 -(define* (check #:key source inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (package (strip-store-file-name source)) - (builddir (string-append out "/share/julia/"))) - (setenv "JULIA_DEPOT_PATH" builddir) - (setenv "JULIA_LOAD_PATH" (generate-load-path inputs outputs)) - (invoke-julia (string-append "using Pkg;Pkg.test(\"" package "\")"))) +(define* (check #:key tests? source outputs #:allow-other-keys) + (if tests? + (let* ((out (assoc-ref outputs "out")) + (package (strip-store-file-name source)) + (builddir (string-append out "/share/julia/"))) + (setenv "HOME" "/tmp") + (setenv "JULIA_DEPOT_PATH" builddir) + (setenv "JULIA_LOAD_PATH" + (string-append builddir "packages/" ":" + (or (getenv "JULIA_LOAD_PATH") + ""))) + ;; tests assume they are run from the test directory + (with-directory-excursion + (string-append builddir "packages/" package "/test/") + (invoke "julia" "runtests.jl"))) + (format #t "test suite not run~%")) #t) =20 (define (julia-create-package-toml outputs source @@ -119,7 +118,7 @@ version =3D \"" version "\" (delete 'check) ; tests must be run after installation (replace 'install install) (add-after 'install 'precompile precompile) - ;; (add-after 'install 'check check) + (add-after 'precompile 'check check) ;; TODO: In the future we could add a "system-image-generation" phase ;; where we use PackageCompiler.jl to speed up package loading times (delete 'configure) --=20 2.25.0 --=-=-= Content-Type: text/x-patch; charset=utf-8 Content-Disposition: attachment; filename=0004-gnu-Add-julia-compat.patch Content-Transfer-Encoding: quoted-printable >From a185f2d8112d55fe34fe5640edc6e4f46fece226 Mon Sep 17 00:00:00 2001 From: nixo Date: Mon, 24 Feb 2020 15:30:39 +0100 Subject: [PATCH 04/16] gnu: Add julia-compat. * gnu/packages/julia-xyz.scm (julia-compat): New variable. * gnu/packages/julia-xyz.scm: New file. * gnu/local.mk: Add gnu/packages/julia-xyz.scm. --- gnu/local.mk | 1 + gnu/packages/julia-xyz.scm | 45 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 gnu/packages/julia-xyz.scm diff --git a/gnu/local.mk b/gnu/local.mk index c2273d5745..1ebcc45a4c 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -281,6 +281,7 @@ GNU_SYSTEM_MODULES =3D \ %D%/packages/jrnl.scm \ %D%/packages/jose.scm \ %D%/packages/julia.scm \ + %D%/packages/julia-xyz.scm \ %D%/packages/jupyter.scm \ %D%/packages/kawa.scm \ %D%/packages/kde.scm \ diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm new file mode 100644 index 0000000000..abcfc4d0cf --- /dev/null +++ b/gnu/packages/julia-xyz.scm @@ -0,0 +1,45 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright =C2=A9 2020 Nicol=C3=B2 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)) + +(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-compat= ible +way.") + (license license:expat))) --=20 2.25.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0005-gnu-Add-julia-sha.patch >From a7a34a28d99bd9411d18e0e7f3d4efb406f2a817 Mon Sep 17 00:00:00 2001 From: nixo Date: Mon, 24 Feb 2020 15:33:08 +0100 Subject: [PATCH 05/16] gnu: Add julia-sha. * gnu/packages/julia-xyz.scm (julia-sha): New variable. --- gnu/packages/julia-xyz.scm | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm index abcfc4d0cf..91d497a0ce 100644 --- a/gnu/packages/julia-xyz.scm +++ b/gnu/packages/julia-xyz.scm @@ -43,3 +43,27 @@ 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-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))) -- 2.25.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0006-gnu-Add-julia-binaryprovider.patch >From 3fae18e43bd9cd0931d153a0b47bd2ba90d7eedb Mon Sep 17 00:00:00 2001 From: nixo Date: Mon, 24 Feb 2020 15:42:00 +0100 Subject: [PATCH 06/16] gnu: Add julia-binaryprovider. * gnu/packages/julia-xyz.scm (julia-binaryprovider): New variable. --- gnu/packages/julia-xyz.scm | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm index 91d497a0ce..86c0a6c3e9 100644 --- a/gnu/packages/julia-xyz.scm +++ b/gnu/packages/julia-xyz.scm @@ -20,7 +20,33 @@ #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix git-download) - #:use-module (guix build-system julia)) + #:use-module (guix build-system julia) + #:use-module (gnu packages curl)) + +(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-compat (package -- 2.25.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0007-gnu-Add-julia-inifile.patch >From 3f4e7fdbe183b950ef57c71b25de13ffc29eea68 Mon Sep 17 00:00:00 2001 From: nixo Date: Mon, 24 Feb 2020 15:42:59 +0100 Subject: [PATCH 07/16] gnu: Add julia-inifile. * gnu/packages/julia-xyz.scm (julia-inifile): New variable. --- gnu/packages/julia-xyz.scm | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm index 86c0a6c3e9..213aa0543c 100644 --- a/gnu/packages/julia-xyz.scm +++ b/gnu/packages/julia-xyz.scm @@ -70,6 +70,26 @@ provides a macro that lets you use the latest syntax in a backwards-compatible way.") (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-sha (package (name "julia-sha") -- 2.25.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0008-gnu-Add-julia-mbedtls.patch >From 44e8535f4e8b72cdb99c396dab53badcd5b02073 Mon Sep 17 00:00:00 2001 From: nixo Date: Mon, 24 Feb 2020 15:43:37 +0100 Subject: [PATCH 08/16] gnu: Add julia-mbedtls. * gnu/packages/julia-xyz.scm (julia-mbedtls): New variable. --- gnu/packages/julia-xyz.scm | 55 +++++++++++++++++++++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm index 213aa0543c..508b4835ca 100644 --- a/gnu/packages/julia-xyz.scm +++ b/gnu/packages/julia-xyz.scm @@ -21,7 +21,8 @@ #:use-module (guix packages) #:use-module (guix git-download) #:use-module (guix build-system julia) - #:use-module (gnu packages curl)) + #:use-module (gnu packages curl) + #:use-module (gnu packages tls)) (define-public julia-binaryprovider (package @@ -90,6 +91,58 @@ way.") allows to interface with @file{.ini} files.") (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-sha (package (name "julia-sha") -- 2.25.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0009-gnu-Add-julia-bufferedstreams.patch >From 2f205551cf5193a4d41541ba772b1db10f2f9248 Mon Sep 17 00:00:00 2001 From: nixo Date: Mon, 24 Feb 2020 15:46:35 +0100 Subject: [PATCH 09/16] gnu: Add julia-bufferedstreams. * gnu/packages/julia-xyz.scm (julia-bufferedstreams): New variable. --- gnu/packages/julia-xyz.scm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm index 508b4835ca..c26765f2a4 100644 --- a/gnu/packages/julia-xyz.scm +++ b/gnu/packages/julia-xyz.scm @@ -49,6 +49,31 @@ 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") -- 2.25.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0010-gnu-Add-julia-parsers.patch >From 5a906605765854b7955a8530e89f63959f3cc2ff Mon Sep 17 00:00:00 2001 From: nixo Date: Mon, 24 Feb 2020 15:48:25 +0100 Subject: [PATCH 10/16] gnu: Add julia-parsers. * gnu/packages/julia-xyz.scm (julia-parsers): New variable. --- gnu/packages/julia-xyz.scm | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm index c26765f2a4..22b1cc9914 100644 --- a/gnu/packages/julia-xyz.scm +++ b/gnu/packages/julia-xyz.scm @@ -168,6 +168,26 @@ allows to interface with @file{.ini} files.") cryptography C libary for Julia.") (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") -- 2.25.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0011-gnu-Add-julia-offsetarrays.patch >From 68f095c392924936f59c7df9ec2363f6054651ab Mon Sep 17 00:00:00 2001 From: nixo Date: Mon, 24 Feb 2020 15:51:21 +0100 Subject: [PATCH 11/16] gnu: Add julia-offsetarrays. * gnu/packages/julia-xyz.scm (julia-offsetarrays): New variable. --- gnu/packages/julia-xyz.scm | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm index 22b1cc9914..5cc7529c20 100644 --- a/gnu/packages/julia-xyz.scm +++ b/gnu/packages/julia-xyz.scm @@ -168,6 +168,30 @@ allows to interface with @file{.ini} files.") 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-parsers (package (name "julia-parsers") -- 2.25.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0012-gnu-Add-julia-fixedpointnumbers.patch >From 3a0f60d4e21dd893ee11ddde0947c0323c9b5537 Mon Sep 17 00:00:00 2001 From: nixo Date: Mon, 24 Feb 2020 15:54:30 +0100 Subject: [PATCH 12/16] gnu: Add julia-fixedpointnumbers. * gnu/packages/julia-xyz.scm (julia-fixedpointnumbers): New variable. --- gnu/packages/julia-xyz.scm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm index 5cc7529c20..046c365b08 100644 --- a/gnu/packages/julia-xyz.scm +++ b/gnu/packages/julia-xyz.scm @@ -96,6 +96,32 @@ provides a macro that lets you use the latest syntax in a backwards-compatible way.") (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-inifile (package (name "julia-inifile") -- 2.25.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0013-gnu-Add-julia-orderedcollections.patch >From 8582ad38d348dae41be96b5c9ff9512748c6ee7b Mon Sep 17 00:00:00 2001 From: nixo Date: Mon, 24 Feb 2020 16:08:00 +0100 Subject: [PATCH 13/16] gnu: Add julia-orderedcollections. * gnu/packages/julia-xyz.scm (julia-orderedcollections): New variable. --- gnu/packages/julia-xyz.scm | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm index 046c365b08..797c61ce6f 100644 --- a/gnu/packages/julia-xyz.scm +++ b/gnu/packages/julia-xyz.scm @@ -218,6 +218,30 @@ 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") -- 2.25.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0014-gnu-Add-julia-datastructures.patch >From 3b122c28d94bd0bdd149a0e7d1031d81bc85face Mon Sep 17 00:00:00 2001 From: nixo Date: Mon, 24 Feb 2020 16:08:25 +0100 Subject: [PATCH 14/16] gnu: Add julia-datastructures. * gnu/packages/julia-xyz.scm (julia-datastructures): New variable. --- gnu/packages/julia-xyz.scm | 43 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm index 797c61ce6f..a4a9939894 100644 --- a/gnu/packages/julia-xyz.scm +++ b/gnu/packages/julia-xyz.scm @@ -96,6 +96,49 @@ 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") -- 2.25.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0015-gnu-Add-julia-json.patch >From e29caaaf651b750f8fcc734dab06921c81f4b226 Mon Sep 17 00:00:00 2001 From: nixo Date: Mon, 24 Feb 2020 16:09:38 +0100 Subject: [PATCH 15/16] gnu: Add julia-json. * gnu/packages/julia-xyz.scm (julia-json): New variable. --- gnu/packages/julia-xyz.scm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm index a4a9939894..5130663e48 100644 --- a/gnu/packages/julia-xyz.scm +++ b/gnu/packages/julia-xyz.scm @@ -185,6 +185,31 @@ decimal (radix) point.") 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") -- 2.25.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0016-gnu-Add-julia-http.patch >From 238554a69cab1f7b1eedb93d453e78587b0e4597 Mon Sep 17 00:00:00 2001 From: nixo Date: Mon, 24 Feb 2020 16:37:10 +0100 Subject: [PATCH 16/16] gnu: Add julia-http. * gnu/packages/julia-xyz.scm (julia-http): New variable. --- gnu/packages/julia-xyz.scm | 45 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm index 5130663e48..be3c776f49 100644 --- a/gnu/packages/julia-xyz.scm +++ b/gnu/packages/julia-xyz.scm @@ -165,6 +165,51 @@ 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") -- 2.25.0 --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Thanks, Nicol=C3=B2 > > On Tue, 11 Feb 2020 at 18:58, zimoun wrote: >> >> Hi, >> >> Please find attach the almost updated julia using 2 patches. The first >> add a dependency and the second update and patch. >> >> I hope that I do not screw up the indentation; sometimes my Emacs does >> weird stuff. Anyway. >> >> If it is fine with you, please ping Ludo or any committer. :-) >> >> >> Cheers, >> simon --=-=-=--