From f91046ce67fcf75183c749fec7dc603d5eba8838 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Wed, 21 Oct 2020 21:23:24 +0200 Subject: gnu: clang@10, clang@11: Fix CMake files. * gnu/packages/llvm.scm (clang-from-llvm): Add phase adjust-cmake-file when building Clang 10 or later. --- gnu/packages/llvm.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'gnu/packages/llvm.scm') diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm index c500430dd5..eb93433c5b 100644 --- a/gnu/packages/llvm.scm +++ b/gnu/packages/llvm.scm @@ -326,6 +326,27 @@ given PATCHES. When TOOLS-EXTRA is given, it must point to the (("@GLIBC_LIBDIR@") (string-append libc "/lib")))))) #t))) + ,@(if (version>=? version "10") + `((add-after 'install 'adjust-cmake-file + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + ;; Clang generates a CMake file with "targets" + ;; for each installed library file. Downstream + ;; consumers of the CMake interface can use this + ;; to get absolute library locations. Including + ;; this file will needlessly assert that _all_ + ;; libraries are available, which causes problems + ;; in Guix because some are removed (see the + ;; move-extra-tools phase). Thus, remove the + ;; asserts so that the main functionality works. + (substitute* + (string-append + out + "/lib/cmake/clang/ClangTargets-release.cmake") + (("list\\(APPEND _IMPORT_CHECK_TARGETS.*" all) + (string-append "# Disabled by Guix.\n#" all))) + #t)))) + '()) ,@(if (version>? version "3.8") `((add-after 'install 'symlink-cfi_blacklist (lambda* (#:key inputs outputs #:allow-other-keys) -- cgit v1.2.3 From f11733bd9d4f8deb187364d5a9f5e365be048733 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Wed, 21 Oct 2020 21:31:36 +0200 Subject: gnu: Add LLDB. * gnu/packages/llvm.scm (lldb): New public variable. --- gnu/packages/llvm.scm | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'gnu/packages/llvm.scm') diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm index eb93433c5b..b2b80572fb 100644 --- a/gnu/packages/llvm.scm +++ b/gnu/packages/llvm.scm @@ -48,12 +48,16 @@ #:use-module (gnu packages gcc) #:use-module (gnu packages bootstrap) ;glibc-dynamic-linker #:use-module (gnu packages compression) + #:use-module (gnu packages libedit) #:use-module (gnu packages libffi) + #:use-module (gnu packages lua) #:use-module (gnu packages mpi) + #:use-module (gnu packages ncurses) #:use-module (gnu packages onc-rpc) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) + #:use-module (gnu packages swig) #:use-module (gnu packages xml) #:export (system->llvm-target)) @@ -875,6 +879,40 @@ of programming tools as well as libraries with equivalent functionality.") components which highly leverage existing libraries in the larger LLVM Project.") (license license:asl2.0))) ; With LLVM exception +(define-public lldb + (package + (name "lldb") + (version "11.0.0") + (source (origin + (method url-fetch) + (uri (llvm-uri "lldb" version)) + (sha256 + (base32 + "0wic9lyb2la9bkzdc13szkm4f793w1mddp50xvh237iraygw0w45")))) + (build-system cmake-build-system) + (arguments + `(#:configure-flags '("-DCMAKE_CXX_COMPILER=clang++"))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("swig" ,swig))) + (inputs + `(("clang" ,clang-11) + ("llvm" ,llvm-11) + + ;; Optional (but recommended) inputs. + ("curses" ,ncurses) + ("editline" ,libedit) + ("liblzma" ,xz) + ("libxml2" ,libxml2) + ("lua" ,lua) + ("python" ,python))) + (home-page "https://lldb.llvm.org/") + (synopsis "Low level debugger") + (description + "LLDB is a high performance debugger built as a set of reusable components +which highly leverage existing libraries in the larger LLVM project.") + (license license:asl2.0))) ;with LLVM exceptions + (define-public libcxx (package (name "libcxx") -- cgit v1.2.3 From 9e4c24ef90545e242539a16a5ea28d7effc45933 Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Sat, 14 Nov 2020 01:10:29 -0500 Subject: gnu: llvm-9: Standardize patch level. Having a non-standard (different than 1) patch level requirement means the patches cannot be composed easily from different origins. The following command was used to remove one level from the llvm-9 patches: sed -e 's|^--- a/|--- |' -e 's|^+++ b/|+++ |' \ gnu/packages/patches/llvm-9* -i * gnu/packages/llvm.scm (llvm-9)[source]: Drop the patch-flags field. Re-indent list of patches. * gnu/packages/patches/llvm-9-fix-bitcast-miscompilation.patch: Strip one level. * gnu/packages/patches/llvm-9-fix-lpad-miscompilation.patch: Likewise. * gnu/packages/patches/llvm-9-fix-scev-miscompilation.patch: Likewise. --- gnu/packages/llvm.scm | 7 +++---- .../patches/llvm-9-fix-bitcast-miscompilation.patch | 8 ++++---- .../patches/llvm-9-fix-lpad-miscompilation.patch | 8 ++++---- .../patches/llvm-9-fix-scev-miscompilation.patch | 20 ++++++++++---------- 4 files changed, 21 insertions(+), 22 deletions(-) (limited to 'gnu/packages/llvm.scm') diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm index b2b80572fb..1560d5900b 100644 --- a/gnu/packages/llvm.scm +++ b/gnu/packages/llvm.scm @@ -602,11 +602,10 @@ of programming tools as well as libraries with equivalent functionality.") (sha256 (base32 "16hwp3qa54c3a3v7h8nlw0fh5criqh0hlr1skybyk0cz70gyx880")) - (patch-flags '("-p2")) (patches (search-patches - "llvm-9-fix-bitcast-miscompilation.patch" - "llvm-9-fix-scev-miscompilation.patch" - "llvm-9-fix-lpad-miscompilation.patch")))))) + "llvm-9-fix-bitcast-miscompilation.patch" + "llvm-9-fix-scev-miscompilation.patch" + "llvm-9-fix-lpad-miscompilation.patch")))))) (define-public clang-runtime-9 (clang-runtime-from-llvm diff --git a/gnu/packages/patches/llvm-9-fix-bitcast-miscompilation.patch b/gnu/packages/patches/llvm-9-fix-bitcast-miscompilation.patch index fe381acf1b..ec8e888618 100644 --- a/gnu/packages/patches/llvm-9-fix-bitcast-miscompilation.patch +++ b/gnu/packages/patches/llvm-9-fix-bitcast-miscompilation.patch @@ -36,8 +36,8 @@ Differential Revision: https://reviews.llvm.org/D70844 diff --git a/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp b/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp index 2c9ba203fbf3..0af3de300e77 100644 ---- a/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp -+++ b/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp +--- llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp ++++ llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp @@ -18,6 +18,7 @@ #include "llvm/IR/DIBuilder.h" #include "llvm/IR/PatternMatch.h" @@ -158,8 +158,8 @@ index 2c9ba203fbf3..0af3de300e77 100644 diff --git a/llvm/test/Transforms/InstCombine/cast.ll b/llvm/test/Transforms/InstCombine/cast.ll index b6d1eda0601d..3ce8de033422 100644 ---- a/llvm/test/Transforms/InstCombine/cast.ll -+++ b/llvm/test/Transforms/InstCombine/cast.ll +--- llvm/test/Transforms/InstCombine/cast.ll ++++ llvm/test/Transforms/InstCombine/cast.ll @@ -824,7 +824,7 @@ define i64 @test59(i8 %A, i8 %B) { define <3 x i32> @test60(<4 x i32> %call4) { diff --git a/gnu/packages/patches/llvm-9-fix-lpad-miscompilation.patch b/gnu/packages/patches/llvm-9-fix-lpad-miscompilation.patch index 6cfe07e50a..9a97d82ddc 100644 --- a/gnu/packages/patches/llvm-9-fix-lpad-miscompilation.patch +++ b/gnu/packages/patches/llvm-9-fix-lpad-miscompilation.patch @@ -15,8 +15,8 @@ PR45261 diff --git a/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp b/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp index 5ac3606dc662..2638b1e8a05c 100644 ---- a/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp -+++ b/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp +--- llvm/lib/CodeGen/SelectionDAG/FastISel.cpp ++++ llvm/lib/CodeGen/SelectionDAG/FastISel.cpp @@ -225,6 +225,21 @@ static bool isRegUsedByPhiNodes(unsigned DefReg, return false; } @@ -50,8 +50,8 @@ index 5ac3606dc662..2638b1e8a05c 100644 } diff --git a/llvm/test/CodeGen/X86/sink-local-value.ll b/llvm/test/CodeGen/X86/sink-local-value.ll index b0e511ac1189..f7d861ac9b6c 100644 ---- a/llvm/test/CodeGen/X86/sink-local-value.ll -+++ b/llvm/test/CodeGen/X86/sink-local-value.ll +--- llvm/test/CodeGen/X86/sink-local-value.ll ++++ llvm/test/CodeGen/X86/sink-local-value.ll @@ -145,6 +145,42 @@ try.cont: ; preds = %entry, %lpad ; CHECK: retl diff --git a/gnu/packages/patches/llvm-9-fix-scev-miscompilation.patch b/gnu/packages/patches/llvm-9-fix-scev-miscompilation.patch index 3f16de5a2b..ec37dc16fd 100644 --- a/gnu/packages/patches/llvm-9-fix-scev-miscompilation.patch +++ b/gnu/packages/patches/llvm-9-fix-scev-miscompilation.patch @@ -21,8 +21,8 @@ llvm-svn: 373184 diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp index 354ae05bb841..c29fc5dbccfb 100644 ---- a/llvm/lib/Analysis/ScalarEvolution.cpp -+++ b/llvm/lib/Analysis/ScalarEvolution.cpp +--- llvm/lib/Analysis/ScalarEvolution.cpp ++++ llvm/lib/Analysis/ScalarEvolution.cpp @@ -4992,7 +4992,7 @@ const SCEV *ScalarEvolution::createSimpleAffineAddRec(PHINode *PN, // overflow. if (auto *BEInst = dyn_cast(BEValueV)) @@ -34,8 +34,8 @@ index 354ae05bb841..c29fc5dbccfb 100644 } diff --git a/llvm/test/Analysis/ScalarEvolution/limit-depth.ll b/llvm/test/Analysis/ScalarEvolution/limit-depth.ll index db68a4f84c91..6fdf8c5df974 100644 ---- a/llvm/test/Analysis/ScalarEvolution/limit-depth.ll -+++ b/llvm/test/Analysis/ScalarEvolution/limit-depth.ll +--- llvm/test/Analysis/ScalarEvolution/limit-depth.ll ++++ llvm/test/Analysis/ScalarEvolution/limit-depth.ll @@ -46,7 +46,7 @@ define void @test_mul(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f) { define void @test_sext(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f) { ; CHECK-LABEL: @test_sext @@ -47,8 +47,8 @@ index db68a4f84c91..6fdf8c5df974 100644 diff --git a/llvm/test/Analysis/ScalarEvolution/nsw.ll b/llvm/test/Analysis/ScalarEvolution/nsw.ll index 69427368625d..ca24f9d4a04b 100644 ---- a/llvm/test/Analysis/ScalarEvolution/nsw.ll -+++ b/llvm/test/Analysis/ScalarEvolution/nsw.ll +--- llvm/test/Analysis/ScalarEvolution/nsw.ll ++++ llvm/test/Analysis/ScalarEvolution/nsw.ll @@ -163,7 +163,7 @@ bb5: ; preds = %bb2 declare void @f(i32) @@ -60,8 +60,8 @@ index 69427368625d..ca24f9d4a04b 100644 %add = add nsw i32 %v, 1 diff --git a/llvm/test/Analysis/ScalarEvolution/trip-count12.ll b/llvm/test/Analysis/ScalarEvolution/trip-count12.ll index 5e7d72d5e4f3..d0086ee2e6ac 100644 ---- a/llvm/test/Analysis/ScalarEvolution/trip-count12.ll -+++ b/llvm/test/Analysis/ScalarEvolution/trip-count12.ll +--- llvm/test/Analysis/ScalarEvolution/trip-count12.ll ++++ llvm/test/Analysis/ScalarEvolution/trip-count12.ll @@ -1,7 +1,7 @@ ; RUN: opt < %s -analyze -scalar-evolution | FileCheck %s @@ -73,8 +73,8 @@ index 5e7d72d5e4f3..d0086ee2e6ac 100644 define zeroext i16 @test(i16* nocapture %p, i32 %len) nounwind readonly { diff --git a/llvm/test/Analysis/ScalarEvolution/trip-count9.ll b/llvm/test/Analysis/ScalarEvolution/trip-count9.ll index c0a1d12fa00e..9a080b34743f 100644 ---- a/llvm/test/Analysis/ScalarEvolution/trip-count9.ll -+++ b/llvm/test/Analysis/ScalarEvolution/trip-count9.ll +--- llvm/test/Analysis/ScalarEvolution/trip-count9.ll ++++ llvm/test/Analysis/ScalarEvolution/trip-count9.ll @@ -179,7 +179,7 @@ exit: } -- cgit v1.2.3 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