~ruther/guix-local

8ecb6052ab893324567a8e3ea65a99c1152fe96d — Greg Hogan 1 year, 3 months ago 2063fcc
gnu: llvm: Fix tests.

* gnu/packages/llvm.scm (clang-from-llvm)[arguments]: Set #:tests? to
disabled.
(make-llvm, llvm-14)[arguments]
<#:tests?>: Disable for target-x86-32.
<#:phases>: Replace 'check phase to run tests.
(llvm-14)[native-inputs]: Add which.
(llvm-13)[arguments]<#:tests?>: Disable for target-x86-32.
(llvm-12)[arguments]<#:tests>: Disable tests.
<#:phases>: Add 'remove-failing-tests phase.
(llvm-6)[arguments]<#:phases>: ... and remove it.
* gnu/packages/patches/llvm-13-gcc-14.patch: Patch test file.
(llvm-3.9.1)[arguments]: Substitute from inherited package.

Change-Id: Ibf0e4a4b535838ff4ffd60d66bc0bee4314abde6
2 files changed, 45 insertions(+), 6 deletions(-)

M gnu/packages/llvm.scm
M gnu/packages/patches/llvm-13-gcc-14.patch
M gnu/packages/llvm.scm => gnu/packages/llvm.scm +35 -6
@@ 277,7 277,10 @@ until LLVM/Clang 14."
    (propagated-inputs
     (list llvm clang-runtime))
    (arguments
     `(#:configure-flags
     `(;; TODO: enable tests.
       #:tests? #f

       #:configure-flags
       (list "-DCLANG_INCLUDE_TESTS=True"

             ;; TODO: Use --gcc-install-dir when GCC_INSTALL_PREFIX is


@@ 618,6 621,7 @@ output), and Binutils.")
      (outputs '("out" "opt-viewer"))
      (arguments
       (list
        #:tests? (not (target-x86-32?))
        #:configure-flags
        #~(list
           ;; These options are required for cross-compiling LLVM according


@@ 659,11 663,19 @@ output), and Binutils.")
           "-DLLVM_PARALLEL_LINK_JOBS=1") ;cater to smaller build machines
        ;; Don't use '-g' during the build, to save space.
        #:build-type "Release"
        #:modules '((guix build cmake-build-system)
                    ((guix build gnu-build-system) #:prefix gnu:)
                    (guix build utils))
        #:phases
        #~(modify-phases %standard-phases
            (add-after 'unpack 'change-directory
              (lambda _
                (chdir "llvm")))
            (replace 'check
              (lambda* (#:rest args)
                (setenv "HOME" "/tmp")
                (apply (assoc-ref gnu:%standard-phases 'check)
                       #:test-target "check-llvm" args)))
            (add-after 'install 'install-opt-viewer
              (lambda* (#:key outputs #:allow-other-keys)
                (let* ((opt-viewer-share (string-append #$output:opt-viewer


@@ 701,6 713,10 @@ of programming tools as well as libraries with equivalent functionality.")
    (source (llvm-monorepo version))
    (arguments
     (list
      #:modules '((guix build cmake-build-system)
                  ((guix build gnu-build-system) #:prefix gnu:)
                  (guix build utils))
      #:tests? (not (target-x86-32?))
      #:configure-flags
      #~(list
         ;; These options are required for cross-compiling LLVM according


@@ 739,6 755,11 @@ of programming tools as well as libraries with equivalent functionality.")
          (add-after 'unpack 'change-directory
            (lambda _
              (chdir "llvm")))
          (replace 'check
            (lambda* (#:rest args)
              (setenv "HOME" "/tmp")
              (apply (assoc-ref gnu:%standard-phases 'check)
                     #:test-target "check-llvm" args)))
          (add-after 'install 'install-opt-viewer
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))


@@ 749,9 770,7 @@ of programming tools as well as libraries with equivalent functionality.")
                (rename-file (string-append out "/share/opt-viewer")
                             opt-viewer-dir)))))))

    (native-inputs
     `(("python" ,python-wrapper)
       ("perl"   ,perl)))))
    (native-inputs (list perl python-wrapper which))))

(define-public clang-runtime-15
  (clang-runtime-from-llvm llvm-15))


@@ 932,6 951,8 @@ Library.")
      (patches (search-patches "llvm-13-gcc-14.patch"))))
    (arguments
     (substitute-keyword-arguments (package-arguments llvm-13)
       ;; Disable tests for old releases now compiled with newer GCC.
       ((#:tests? _ #false) #false)
       ((#:phases phases)
        #~(modify-phases #$phases
           #$@(if (assoc "config" (package-native-inputs this-package))


@@ 942,6 963,9 @@ Library.")
                                             "/bin/config.guess")))
                         (copy-file config.guess "cmake/config.guess")))))
                #~())
         (add-after 'unpack 'delete-failing-tests
           (lambda _
             (delete-file "test/DebugInfo/X86/vla-multi.ll")))
         (add-before 'build 'shared-lib-workaround
           ;; Even with CMAKE_SKIP_BUILD_RPATH=FALSE, llvm-tblgen
           ;; doesn't seem to get the correct rpath to be able to run


@@ 1271,7 1295,12 @@ Library.")
              (uri (llvm-uri "llvm" version))
              (sha256
               (base32
                "1qpls3vk85lydi5b4axl0809fv932qgsqgdgrk098567z4jc7mmn"))))))
                "1qpls3vk85lydi5b4axl0809fv932qgsqgdgrk098567z4jc7mmn"))))
    (arguments
     (substitute-keyword-arguments (package-arguments llvm-7)
       ((#:phases phases)
        #~(modify-phases #$phases
            (delete 'delete-failing-tests)))))))

(define-public clang-runtime-6
  (clang-runtime-from-llvm


@@ 1320,7 1349,7 @@ Library.")
        "1vi9sf7rx1q04wj479rsvxayb6z740iaz3qniwp266fgp5a07n8z"))))
    (outputs '("out"))
    (arguments
     (substitute-keyword-arguments (package-arguments llvm)
     (substitute-keyword-arguments (package-arguments llvm-6)
       ((#:phases phases)
        #~(modify-phases #$phases
            (add-before 'build 'shared-lib-workaround

M gnu/packages/patches/llvm-13-gcc-14.patch => gnu/packages/patches/llvm-13-gcc-14.patch +10 -0
@@ 10,3 10,13 @@ See:  https://github.com/smlnj/smlnj/issues/279
 #include <string>
 
 namespace llvm {
--- llvm-13.0.1.src/include/llvm/Support/Base64.h	1970-01-01 00:00:01.000000000 +0000
+++ llvm-13.0.1.src/include/llvm/Support/Base64.h	2025-07-18 23:45:19.568475987 +0000
@@ -14,6 +14,7 @@
 #define LLVM_SUPPORT_BASE64_H
 
 #include <string>
+#include <cstdint>
 
 namespace llvm {