From patchwork Wed Feb 26 12:32:19 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Nicol=C3=B2_Balzarotti?= X-Patchwork-Id: 20445 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 0A14127BBEA; Wed, 26 Feb 2020 12:33:23 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,FREEMAIL_FROM,MAILING_LIST_MULTI,T_DKIM_INVALID, URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.2 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTP id 197CB27BBE4 for ; Wed, 26 Feb 2020 12:33:17 +0000 (GMT) Received: from localhost ([::1]:43676 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j6vsK-0005zp-Gg for patchwork@mira.cbaines.net; Wed, 26 Feb 2020 07:33:16 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:34401) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j6vsA-0005rW-Dm for guix-patches@gnu.org; Wed, 26 Feb 2020 07:33:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j6vs6-0002b3-MI for guix-patches@gnu.org; Wed, 26 Feb 2020 07:33:06 -0500 Received: from debbugs.gnu.org ([209.51.188.43]:50579) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1j6vs6-0002Xg-92 for guix-patches@gnu.org; Wed, 26 Feb 2020 07:33:02 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1j6vs6-0007qL-6J for guix-patches@gnu.org; Wed, 26 Feb 2020 07:33:02 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#38546] [PATCH v5] Julia: Update to 1.3.1 Resent-From: =?utf-8?q?Nicol=C3=B2?= Balzarotti Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Wed, 26 Feb 2020 12:33:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 38546 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: zimoun Cc: 38546@debbugs.gnu.org Received: via spool by 38546-submit@debbugs.gnu.org id=B38546.158272036429826 (code B ref 38546); Wed, 26 Feb 2020 12:33:02 +0000 Received: (at 38546) by debbugs.gnu.org; 26 Feb 2020 12:32:44 +0000 Received: from localhost ([127.0.0.1]:56552 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1j6vrc-0007cE-RY for submit@debbugs.gnu.org; Wed, 26 Feb 2020 07:32:44 -0500 Received: from mail-wm1-f48.google.com ([209.85.128.48]:52930) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1j6vrY-0007VG-DV for 38546@debbugs.gnu.org; Wed, 26 Feb 2020 07:32:32 -0500 Received: by mail-wm1-f48.google.com with SMTP id p9so2865024wmc.2 for <38546@debbugs.gnu.org>; Wed, 26 Feb 2020 04:32:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:in-reply-to:references:date:message-id :mime-version; bh=xLqIqzOO6uJ4rf6DIwxkwMrauBRu2nkrR0p2beYDiYY=; b=ZG3a2ncs8PY+XJPz7M+X8pKhZj5VJDJU25B/eLJB/pkT/j9hQtAN3Hc4FpdafRsllK cx5ucI59JnxOFWNCvDaCCcaJ0BftgLowYfxAZdk+6CirLgM0r3cKIZVYM/ZJkQVrPep5 mc7z+0DuG6ZNH4BhDLuSMDtCdsxBoNgKDUNI3Dj8joQHRZLCa1MAVRMg7zlUtf7m1iHK iMjiJ3WKYxdYcnPp1jpXvYttU+gYCf2kVSd5l4GZXwjA9sw8GfBd0CdrI33iSWM1v7sV Tn89yaOl2vvIHN+7Pj5zKSQVtBOe+9AGVjNvJF/avoQQB3XUZksY6mNhP5M3+I87yb/e j6rQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:references:date :message-id:mime-version; bh=xLqIqzOO6uJ4rf6DIwxkwMrauBRu2nkrR0p2beYDiYY=; b=f5+azvfRRwQVmh6NYny1KSpJZTe+AJTV30t+qR3lZZ7ng19ysJVMi68HKJYlrT23g7 gb9DIX/k3OUZFVXJFRcvPEzZIZJjfulMctd0Ah6ZSCJHKtassrHlPuGkHQvHkkXl2a1o OESq1Aba6qFCl159vNHf7Q4WpRcHeG+aEUXTPoNR8SlxpbZz7syUm4oxOVEh+JJhq7My pk5DZlff96sJqOC8hr4r42d3GUQQIyEe6xbhG3SUN9QZlWW3d6+GbD8Mo7btQysB+2I5 S0/mEUo4BHzy3YdKXLVKLeUin92pC3xzmo09dB4mDhX/QzUD+5YgtITOW3MnzLzfjGe4 N6MA== X-Gm-Message-State: APjAAAXw+k6iFNkjpPeDiPkZvXOdyvph+XzDO29lcigabVhRz8DPQ9Bt 92BA6khV+tan03Nli4uLn6lelE8q X-Google-Smtp-Source: APXvYqwLr8/LOqVZEtH0FpSkRocNbd+b1Nsb64BH5HQ+tvxb9oYATN11pAk3PKfWHEodud64O/IPag== X-Received: by 2002:a05:600c:20c6:: with SMTP id y6mr5462108wmm.95.1582720342035; Wed, 26 Feb 2020 04:32:22 -0800 (PST) Received: from guixSD ([95.232.154.110]) by smtp.gmail.com with ESMTPSA id s1sm3058263wro.66.2020.02.26.04.32.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 26 Feb 2020 04:32:20 -0800 (PST) From: =?utf-8?q?Nicol=C3=B2?= Balzarotti In-Reply-To: <87fteywndk.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me> References: <87imjvwvjx.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me> <87fteywndk.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me> Date: Wed, 26 Feb 2020 13:32:19 +0100 Message-ID: <87blplwmuk.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me> MIME-Version: 1.0 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: "Guix-patches" X-getmail-retrieved-from-mailbox: Patches Hi, v5 of the Julia 1.3.1 update patch. This patch updates julia to 1.3.1. According to previous simon email, fixes to julia build system and julia package submissions will be done separately. Thanks, Nicolò Nicolò Balzarotti writes: > zimoun writes: > >> Hi Nicolò, >> >> On Mon, 24 Feb 2020 at 21:59, Nicolò Balzarotti wrote: >> >>> 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). >> >> Cool! Thank you. >> I would like to first push 1.3.1, i.e., the patches v4. >> > OOk >> Then let open another bug report with the patches attached here. >> Otherwise, it seems a non-ending process. ;-) >> >> >> About processing, if you use Magit to generate your patches, do not >> forget to increment the reroll-count (W c C-m v) otherwise "git >> format-patch -v5". It eases to know which version of the patches we >> are talking about. For example, here it is the fifth. >> > Thanks! Didn't know about it. Should I re-submit them with the v5 prefix? >> >>> 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. >> >> Yes, hope soon. :-) >> > Nicolò >> >> Cheers, >> simon From 76584b9e84ee988d038a1f6ad61333207353e001 Mon Sep 17 00:00:00 2001 From: nixo Date: Mon, 24 Feb 2020 15:07:27 +0100 Subject: [PATCH v5 2/2] gnu: julia: Update to 1.3.1. * gnu/packages/julia.scm (julia): Update to 1.3.1. * gnu/packages/julia.scm (libuv-julia): Update to 2.0.0. * gnu/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch: New file. * gnu/local.mk: Add julia-SOURCE_DATE_EPOCH-mtime.patch. * gnu/packages/julia.scm (llvm-patch, llvm-patch-url): Rename to... (julia-patch, llvm-patch-rul): ... these. --- 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 © 2019 Evan Straw # Copyright © 2019 Brett Gilio # Copyright © 2019 Amin Bandali +# Copyright © 2020 Nicolò Balzarotti # # This file is part of GNU Guix. # @@ -1038,6 +1039,7 @@ dist_patch_DATA = \ %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 © 2015, 2016, 2017 Ricardo Wurmus ;;; Copyright © 2016 Efraim Flashner +;;; Copyright © 2020 Nicolò 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)) (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")))) -(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" + "0lr4dafw8qyfh8sw8hhbwkql1dlhqv8px7k81y2l20hhxfgnh2m1") + (julia-patch "libunwind-static-arm" + "1jk3bmiw61ypcchqkk1fyg5wh8wpggk574wxyfyaic870zh3lhgq"))))) + (home-page "https://github.com/JuliaLang/tree/master/deps/"))) + +(define (julia-patch-url version name) (string-append "https://raw.githubusercontent.com/JuliaLang/julia/v" version - "/deps/patches/" name)) + "/deps/patches/" name ".patch")) -(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)))) @@ -98,41 +123,44 @@ ;; but they are required to build Julia. ;; Discussion: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=919628 (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" + "1336q4vqayr94wdcnlmcxh90mjdh34dzw9x2cbiqjnx9b1j8fxyb") + '("llvm-6.0-DISABLE_ABI_CHECKS" + "014fawd1ba7yckalypfld22zgic87x9nx3cim42zrwygywd36pyg") + '("llvm-6.0-NVPTX-addrspaces" + "1qdi2zmrjsrj0h84zv2vyly2hjcn4f67mfy0s1q353g4v4jkscqc") + '("llvm-6.0.0_D27296-libssp" + "0s5hi2r1j63i8m6ig1346crx2aiv9f7rgb3mg80kw1wx5y7pdpfh") + '("llvm-D27629-AArch64-large_model_6.0.1" + "1qrshmlqvnasdyc158vfn3hnbigqph3lsq7acb9w8lwkpnnm2j4z") + '("llvm-D34078-vectorize-fdiv" + "1696hg84a0jxcnggvqsc2cdp271hf9a44p4qsd078qm1mfawkaay") + '("llvm-D42262-jumpthreading-not-i1" + "1c8w210gwidbnkkw8anp17dk5pnxws2fl3mb2qxh7y9wzfpixgaq") + '("llvm-D44892-Perf-integration" + "0r37jd0ssh2k1pndkfd5blgpg9z90im4vlzprhb0n0wwz45g4b05") + '("llvm-D46460" + "1miqgswdc0qvbaf4571c2xkxyp9ais06b1bcpa83sq22vr4hbsfb") + '("llvm-D49832-SCEVPred" + "0v5c88hgqj6dymv3j86ca5mhpqab5fbnrvjiw1nvnrnya9l4dlbn") + '("llvm-D50010-VNCoercion-ni" + "0iblb3q1xixwrb12jpb89h3ywmqmzdp6aqp416j4ncwakyjhhfkp") + '("llvm-D50167-scev-umin" + "1f2rakcnnyhr7w10k7gqg0k0491pyvx5ijplivw557f714ys3q6v") + '("llvm-OProfile-line-num" + "1jvbbmwyags0xfwamb13qrf3rgcz9i1r03m9lava7swag8xb78c7") + '("llvm-PPC-addrspaces" + "1f23nhsxh2s3jskbgs7da9nwg3s1hrkbk5aahl08x41wi3mny01p") + '("llvm-rL323946-LSRTy" + "10cz3vy1yw0w643z7xx021wa4kymx9fcm3bjg61s6vzdqd6d9fns") + '("llvm-rL326967-aligned-load" + "04jxnv32yj5x17hqhi8g2p8rhgp38gmjzr871w7z8s44pq10v9v4") + '("llvm-rL327898" + "15ah49gbsll23z28kpyahi5vl0fh3fkxcgd1zmxxdcl96s3x8bnq")))))) (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-" "81e9723c0273d78493dc8c8ed570f68d9ce7e89e" ".tar.gz")) - (copy-file (assoc-ref inputs "rmath") - "deps/srccache/Rmath-julia-0.1.tar.gz") ;; 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 not ;; 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 System. - (("popen\\(.*ldconfig.*\\);") - "NULL;\n") - - ;; Populate 'sonameMap'. - (("jl_read_sonames.*;") - (string-join - (map (match-lambda - ((input libname soname) - (string-append - "sonameMap[\"" libname "\"] = " - "\"" (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.so") - ("fftwf" "libfftw3f" "libfftw3f_threads.so")))))) - (substitute* "base/math.jl" - (("const libm = Base.libm_name") - (string-append "const libm = \"" - (assoc-ref inputs "openlibm") - "/lib/libopenlibm.so" - "\"")) - (("const openspecfun = \"libopenspecfun\"") - (string-append "const openspecfun = \"" - (assoc-ref inputs "openspecfun") - "/lib/libopenspecfun.so" - "\""))) - #t)) + (substitute* "base/math.jl" + (("const libm = Base.libm_name") + (string-append "const libm = \"" + (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\\) \\$\\(LIBFILES_release\\)") - "$(BUILDDIR)/$(EXENAME): $(OBJS) $(LLT_release)") - (("\\$\\(BUILDDIR\\)/\\$\\(EXENAME\\)-debug: \\$\\(DOBJS\\) \\$\\(LIBFILES_debug\\)") - "$(BUILDDIR)/$(EXENAME)-debug: $(DOBJS) $(LLT_debug)")) + (("\\$\\(BUILDDIR\\)/\\$\\(EXENAME\\)\\$\\(EXE\\): \\$\\(OBJS\\) \\$\\(LIBFILES_release\\)") + "$(BUILDDIR)/$(EXENAME)$(EXE): $(OBJS) $(LLT_release)") + (("\\$\\(BUILDDIR\\)/\\$\\(EXENAME\\)-debug$(EXE): \\$\\(DOBJS\\) \\$\\(LIBFILES_debug\\)") + "$(BUILDDIR)/$(EXENAME)-debug\\$\\(EXE\\): $(DOBJS) $(LLT_debug)")) ;; 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 = 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 = 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\"=>\"/tmp\", \"JULIA_PROJECT\"")) + ;; 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=" (assoc-ref %outputs "out")) @@ -346,25 +350,20 @@ (_ "MARCH=UNSUPPORTED")) "CONFIG_SHELL=bash" ;needed to build bundled libraries - "USE_SYSTEM_DSFMT=0" ;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=1" + "USE_SYSTEM_P7ZIP=1" "USE_SYSTEM_LAPACK=1" "USE_SYSTEM_BLAS=1" "USE_BLAS64=0" ;needed when USE_SYSTEM_BLAS=1 "LIBBLAS=-lopenblas" "LIBBLASNAME=libopenblas" - "USE_SYSTEM_FFTW=1" - "LIBFFTWNAME=libfftw3" - "LIBFFTWFNAME=libfftw3f" - - ;; TODO: Suitesparse does not install shared libraries, so we cannot - ;; use the suitesparse package. - ;; "USE_SYSTEM_SUITESPARSE=1" - ;; (string-append "SUITESPARSE_INC=-I " - ;; (assoc-ref %build-inputs "suitesparse") - ;; "/include") - + "USE_SYSTEM_SUITESPARSE=1" + (string-append "SUITESPARSE_INC=-I " + (assoc-ref %build-inputs "suitesparse") + "/include") "USE_GPL_LIBS=1" ;proudly "USE_SYSTEM_UTF8PROC=1" (string-append "UTF8PROC_INC=" @@ -390,11 +389,16 @@ "USE_SYSTEM_MPFR=1" "USE_SYSTEM_ARPACK=1" "USE_SYSTEM_LIBGIT2=1" - "USE_SYSTEM_ZLIB=1" - "USE_SYSTEM_OPENSPECFUN=1"))) + (string-append "LIBUV=" + (assoc-ref %build-inputs "libuv") + "/lib/libuv.so") + (string-append "LIBUV_INC=" + (assoc-ref %build-inputs "libuv") + "/include") + "USE_SYSTEM_ZLIB=1"))) (inputs `(("llvm" ,llvm-julia) - + ("p7zip" ,p7zip) ;; The bundled version is 3.3.0 so stick to that version. With other ;; 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 allow us ;; to use the lightweight Julia release tarball. Ideally, these inputs ;; would eventually be replaced with proper Guix packages. - - ;; TODO: run "make -f contrib/repackage_system_suitesparse4.make" to copy static lib - ;; Find dependency versions here: - ;; https://raw.githubusercontent.com/JuliaLang/julia/77a2c1e245c85812dc1c7687540beedecc52758f/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/Versions.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ó Balzarotti . + +--- a/base/loading.jl ++++ b/base/loading.jl +@@ -807,7 +807,10 @@ + path = 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 -- 2.25.0