From 8a34f292923cc4b6487e39570a9c6e0526b094e1 Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Fri, 13 Nov 2020 22:05:26 -0500 Subject: gnu: python-llvmlite: Update to 0.34.0. This is in preparation of updating the broken python-numba package. * gnu/packages/llvm.scm (python-llvmlite): Update to 0.34.0. [arguments]: Enable tests. [phases]{patch-reference-to-llvmlite, skip-failing-tests} {set-compiler/linker-flags}: New phases. [inputs]: Update custom LLVM input and associated patches. [home-page]: Use HTTPS. --- gnu/packages/llvm.scm | 107 ++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 78 insertions(+), 29 deletions(-) (limited to 'gnu/packages/llvm.scm') diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm index 1560d5900b..1db01cea36 100644 --- a/gnu/packages/llvm.scm +++ b/gnu/packages/llvm.scm @@ -16,6 +16,7 @@ ;;; Copyright © 2019 Brett Gilio ;;; Copyright © 2020 Giacomo Leidi ;;; Copyright © 2020 Jakub Kądziołka +;;; Copyright © 2020 Maxim Cournoyer ;;; ;;; This file is part of GNU Guix. ;;; @@ -1044,48 +1045,96 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.") (define-public python-llvmlite (package (name "python-llvmlite") - (version "0.30.0") + (version "0.34.0") (source (origin (method url-fetch) (uri (pypi-uri "llvmlite" version)) (sha256 (base32 - "01wspdc0xhnydl66jyhyr4ii16h3fnw6mjihiwnnxdxg9j6kkajf")))) + "0qqzs6h34002ig2jn31vk08q9hh5kn84lhmv4bljz3yakg8y0gph")))) (build-system python-build-system) (arguments - ;; FIXME: One test fails unable to find libm.so - ;; https://github.com/numba/llvmlite/issues/537 - `(#:tests? #f)) + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-reference-to-llvmlite.so + ;; ctypes.CDLL uses dlopen to load libllvmlite.so, which + ;; fails, so locate it by its absolute path. Change it in + ;; ffi.py, not utils.py, because setup.py relies on the + ;; output of get_library_name for proper installation. + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (libllvmlite.so (string-append out "/lib/python" + ,(version-major+minor + (package-version python)) + "/site-packages/llvmlite/" + "binding/libllvmlite.so"))) + (substitute* "llvmlite/binding/ffi.py" + (("_lib_name = get_library_name\\(\\)") + (format #f "_lib_name = ~s" libllvmlite.so))) + #t))) + (add-after 'unpack 'skip-failing-tests + (lambda _ + (substitute* "llvmlite/tests/test_binding.py" + ((" def test_libm\\(self\\).*" all) + (string-append " @unittest.skip('Fails on Guix')\n" all))) + #t)) + (add-before 'build 'set-compiler/linker-flags + (lambda* (#:key inputs #:allow-other-keys) + (let ((llvm (assoc-ref inputs "llvm"))) + ;; Refer to ffi/Makefile.linux. + (setenv "CPPFLAGS" "-fPIC") + (setenv "LDFLAGS" (string-append "-Wl,-rpath=" + llvm "/lib")) + #t)))))) (inputs `(("llvm" - ,(let ((patches-commit "486edd5fb2a6667feb5c865f300c0da73785434a")) - (package - (inherit llvm-7) - (source - (origin - (inherit (package-source llvm-7)) - (patches + ,(let* ((patches-commit "061ab39e1d4591f3aa842458252a19ad01858167") + (patch-uri (lambda (name) + (string-append + "https://raw.githubusercontent.com/numba/" + "llvmlite/" patches-commit "/conda-recipes/" + name))) + (patch-origin (lambda (name hash) + (origin + (method url-fetch) + (uri (patch-uri name)) + (sha256 (base32 hash))))) + (arch-independent-patches (list + (patch-origin + "partial-testing.patch" + "1cwy4jsmijd838q0bylxl77vrwrb7ksijfly5062ay32303jmj86") + (patch-origin + "0001-Revert-Limit-size-of-non-GlobalValue-name.patch" + "0n4k7za0smx6qwdipsh6x5lm7bfvzzb3p9r8q1zq1dqi4na21295")))) + (if (string=? "aarch64-linux" (%current-system)) + (package + (inherit llvm-9) + (source (origin - (method url-fetch) - (uri (string-append - "https://raw.githubusercontent.com/numba/" - "llvmlite/" patches-commit "/conda-recipes/" - "D47188-svml-VF.patch")) - (sha256 - (base32 - "0wxhgb61k17f0zg2m0726sf3hppm41f8jar2kkg2n8sl5cnjj9mr"))) + (inherit (package-source llvm-9)) + (patches + `(,(patch-origin + "intel-D47188-svml-VF_LLVM9.patch" + "1f9ld7wc8bn4gbvdsmk07w1rq371h42vy05rxsq9a22f57rljqbd") + ,@arch-independent-patches + ,@(origin-patches (package-source llvm-9))))))) + (package + (inherit llvm-10) + (source (origin - (method url-fetch) - (uri (string-append - "https://raw.githubusercontent.com/numba/" - "llvmlite/" patches-commit "/conda-recipes/" - "twine_cfg_undefined_behavior.patch")) - (sha256 - (base32 - "07h71n2m1mn9zcfgw04zglffknplb233zqbcd6pckq0wygkrxflp")))))))))))) - (home-page "http://llvmlite.pydata.org") + (inherit (package-source llvm-10)) + (patches + `(,(patch-origin + "intel-D47188-svml-VF.patch" + "0n46qjwfl7i12bl7wp0cyxl277axfvaaz5lxx5kdlgwjcpa582dg") + ,(patch-origin + "expect-fastmath-entrypoints-in-add-TLI-mappings.ll.patch" + "0jxhjkkwwi1cy898l2n57l73ckpw0v73lqnrifp7r1mwpsh624nv") + ,@arch-independent-patches + ,@(origin-patches (package-source llvm-10)))))))))))) + (home-page "https://llvmlite.pydata.org") (synopsis "Wrapper around basic LLVM functionality") (description "This package provides a Python binding to LLVM for use in Numba.") -- cgit v1.2.3