gnu: ldc: Fix building on riscv64-linux.

* gnu/packages/dlang.scm (ldc)[arguments]: Add a configure-flag to link
the executables with -latomic.  Adjust the 'disable-problematic-tests
phase to disable 2 tests which fail on riscv64-linux and delete some
tests which fail on riscv64-linux.  Adjust the custom 'check phase to
skip several tests when building on riscv64-linux.

Change-Id: I38a87b053c1399fa7762b4843555d6e2afc20427
This commit is contained in:
Efraim Flashner 2024-06-04 20:02:48 +03:00
parent 3f62a5d6bb
commit f0bb724211
No known key found for this signature in database
GPG key ID: 41AAE7DCCA3D8351

View file

@ -227,7 +227,10 @@ (define-public ldc
"ldc2-unittest" "all-test-runners"))
((#:configure-flags _ #~'())
`(list "-GNinja"
"-DBUILD_SHARED_LIBS=ON"))
"-DBUILD_SHARED_LIBS=ON"
,@(if (target-riscv64?)
`("-DCMAKE_EXE_LINKER_FLAGS=-latomic")
'())))
((#:phases phases)
`(modify-phases ,phases
(add-after 'unpack 'fix-compiler-rt-library-discovery
@ -283,6 +286,15 @@ (define (gnu-triplet->clang-arch system)
(substitute* "runtime/phobos/std/socket.d"
(("assert\\(ih.addrList\\[0\\] == 0x7F_00_00_01\\);.*")
""))
;; These tests fail on riscv64-linux.
(substitute* "runtime/phobos/std/math/operations.d"
(("static assert\\(getNaNPayload\\(a\\)" all )
(string-append "// " all)))
(substitute* "runtime/phobos/std/math/traits.d"
(("static assert\\(signbit\\(-.*\\.nan" all)
(string-append "// " all)))
;; The GDB tests suite fails; there are a few bug reports about
;; it upstream.
(for-each delete-file (find-files "tests" "gdb.*\\.(c|d|sh)$"))
@ -316,6 +328,12 @@ (define (gnu-triplet->clang-arch system)
"sanitizers/msan_noerror.d"
"sanitizers/msan_uninitialized.d"
"dmd/runnable_cxx/cppa.d")))
(,(target-riscv64?)
(for-each delete-file
'("codegen/simd_alignment.d"
"dmd/runnable/argufilem.d"
"dmd/compilable/test23705.d"
"dmd/fail_compilation/diag7420.d")))
(#t '())))))
(add-before 'configure 'set-cc-and-cxx-to-use-clang
;; The tests require to be built with Clang; build everything
@ -350,13 +368,35 @@ (define (gnu-triplet->clang-arch system)
"ctest" "--output-on-failure" "-j" job-count "-E"
(string-append
"dmd-testsuite|lit-tests|ldc2-unittest"
,@(if (target-aarch64?)
`((string-append
,@(cond
((target-aarch64?)
`(,(string-append
"|std.internal.math.gammafunction-shared"
"|std.math.exponential-shared"
"|std.internal.math.gammafunction-debug-shared"
"|druntime-test-exceptions-debug"))
`(""))))))))))))
"|druntime-test-exceptions-debug")))
((target-riscv64?)
`(,(string-append
"|std.internal.math.errorfunction-shared"
"|std.internal.math.gammafunction-shared"
"|std.math.exponential-shared"
"|std.math.trigonometry-shared"
"|std.mathspecial-shared"
"|std.socket-shared"
"|std.internal.math.errorfunction-debug-shared"
"|std.internal.math.gammafunction-debug-shared"
"|std.math.operations-debug-shared"
"|std.math.exponential-debug-shared"
"|std.math.traits-debug-shared"
"|std.mathspecial-debug-shared"
"|std.math.trigonometry-debug-shared"
"|std.socket-debug-shared"
;; These four hang forever
"|core.thread.fiber-shared"
"|core.thread.osthread-shared"
"|core.thread.fiber-debug-shared"
"|core.thread.osthread-debug-shared")))
(#t `("")))))))))))))
(native-inputs
(append (delete "llvm"
(alist-replace "ldc" (list ldc-bootstrap)