diff options
-rw-r--r-- | gn/packages/dlang.scm | 167 |
1 files changed, 167 insertions, 0 deletions
diff --git a/gn/packages/dlang.scm b/gn/packages/dlang.scm new file mode 100644 index 0000000..7f5a8b0 --- /dev/null +++ b/gn/packages/dlang.scm @@ -0,0 +1,167 @@ +(define-module (gn packages dlang) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix git-download) + #:use-module (guix build-system gnu) + #:use-module (guix build-system cmake) + #:use-module (gnu packages) + #:use-module (gnu packages base) + #:use-module (gnu packages check) + #:use-module (gnu packages compression) + #:use-module (gnu packages curl) + #:use-module (gnu packages gdb) + #:use-module (gnu packages libedit) + #:use-module (gnu packages dlang) + #:use-module (gnu packages llvm) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages python) + #:use-module (gnu packages python-xyz) + #:use-module (gnu packages textutils) + #:use-module (gnu packages xorg)) + +#! +The following tests FAILED: + 394 - std.socket (Failed) + 793 - std.socket-debug (Failed) + 1192 - std.socket-shared (Failed) + 1591 - std.socket-debug-shared (Failed) + 1608 - druntime-test-aa (Failed) + 1610 - druntime-test-allocations (Failed) + 1612 - druntime-test-betterc (Failed) + 1614 - druntime-test-config (Failed) + 1616 - druntime-test-coverage (Failed) + 1618 - druntime-test-cpuid (Failed) + 1620 - druntime-test-cycles (Failed) + 1622 - druntime-test-exceptions (Failed) + 1624 - druntime-test-gc (Failed) + 1626 - druntime-test-hash (Failed) + 1630 - druntime-test-init_fini (Failed) + 1632 - druntime-test-profile (Failed) + 1634 - druntime-test-shared (Failed) + 1638 - druntime-test-thread (Failed) + 1640 - druntime-test-typeinfo (Failed) + 1642 - druntime-test-unittest (Failed) + 1643 - build-run-dmd-testsuite (Failed) + 1645 - dmd-testsuite-debug (Not Run) + 1647 - dmd-testsuite (Not Run) + 1648 - lit-tests (Failed) +Errors while running CTest +!# + +(define-public ldc + ;; Phobos, druntime and dmd-testsuite library dependencies do + ;; not always have a newer release than the compiler, hence we + ;; retain this variable. + (let ((older-version "1.26.0")) ;; retain this because sometimes the libs are older + (package + (inherit ldc-bootstrap) + (name "ldc") + (version "1.26.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ldc-developers/ldc") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1k9998w8zdm6l6ld8wzxvp5hj5jfqhnxmvs82vmrrh92ysrfjbp6")))) + (arguments + `(#:tests? #f ;; tests fail, see list above + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'unpack-submodule-sources + (lambda* (#:key inputs #:allow-other-keys) + (let ((unpack (lambda (input target) + (let ((source (assoc-ref inputs input))) + ;; Git checkouts are directories as long as + ;; there are no patches; tarballs otherwise. + (if (file-is-directory? source) + (copy-recursively source target) + (with-directory-excursion target + (invoke "tar" "xvf" source + "--strip-components=1"))))))) + (unpack "phobos-src" "runtime/phobos") + (unpack "druntime-src" "runtime/druntime") + (unpack "dmd-testsuite-src" "tests/d2/dmd-testsuite") + #t))) + (add-after 'unpack-submodule-sources 'patch-phobos + (lambda* (#:key inputs #:allow-other-keys) + (substitute* '("runtime/phobos/std/process.d" + "tests/linking/linker_switches.d") + (("/bin/sh") (which "sh")) + (("echo") (which "echo"))) + (substitute* "tests/d2/dmd-testsuite/Makefile" + (("/bin/bash") (which "bash"))) + ;; disable unittests in the following files. We are discussing with + ;; upstream + (substitute* '("runtime/phobos/std/net/curl.d" + "runtime/phobos/std/datetime/systime.d" + "runtime/phobos/std/datetime/timezone.d" + ) + (("version(unittest)") "version(skipunittest)") + ((" unittest") " version(skipunittest) unittest")) + ;; the following tests require a more recent LLVM + (delete-file "tests/compilable/ctfe_math.d") + (delete-file "tests/debuginfo/nested_gdb.d") + (delete-file "tests/debuginfo/classtypes_gdb.d") + ;; the following tests plugins we don't have. + (delete-file "tests/plugins/addFuncEntryCall/testPlugin.d") + ;; the following tests requires AVX instruction set in the CPU. + ; (substitute* "tests/d2/dmd-testsuite/runnable/test_cdvecfill.d" + ; (("^// DISABLED: ") "^// DISABLED: linux64 ")) + #t)) + ; (replace 'check + ; (lambda* (#:key inputs outputs #:allow-other-keys) + ; ;; some tests call into gdb binary which needs SHELL and CC set + ; (setenv "SHELL" (which "sh")) + ; (setenv "CC" (string-append (assoc-ref inputs "gcc") "/bin/gcc")) + ; (invoke "make" "test" "-j" (number->string (parallel-job-count)))))))) + ))) + (native-inputs + `(("llvm" ,llvm) + ("clang" ,clang) + ("ldc" ,ldc-bootstrap) + ("python-lit" ,python-lit) + ("python-wrapper" ,python-wrapper) + ("unzip" ,unzip) + ("gdb" ,gdb) + ("phobos-src" + ,(origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ldc-developers/phobos") + (commit (string-append "ldc-v" older-version)))) + (file-name (git-file-name "phobos" older-version)) + (sha256 + (base32 "0salwkm2kl9vyaqqjzxgqfd6k7grk2d8886g7vahl4mqm5nqc78w")) + ;; This patch deactivates some tests that depend on network access + ;; to pass. It also deactivates some tests that have some reliance + ;; on timezone. + ;; + ;; For the network tests, there's an effort to get a version flag + ;; added to deactivate these tests for distribution packagers + ;; that is being pursued at + ;; <https://forum.dlang.org/post/zmdbdgnzrxyvtpqafvyg@forum.dlang.org>. + ;; It also deactivates a test that requires /root + ;; (patches (search-patches "ldc-disable-phobos-tests.patch")) + )) + ("druntime-src" + ,(origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ldc-developers/druntime") + (commit (string-append "ldc-v" older-version)))) + (file-name (git-file-name "druntime" older-version)) + (sha256 + (base32 "07l71j3haafiglf8f0f5q5k84zsd61jgghsxqb4krs9rc1yxmr4s")))) + ("dmd-testsuite-src" + ,(origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ldc-developers/dmd-testsuite") + (commit (string-append "ldc-v" older-version)))) + (file-name (git-file-name "dmd-testsuite" older-version)) + (sha256 + (base32 "0cvf6nk7yi3s800plx0j6765p3irqm2k6zwz2pmwallxjl21zbvq"))))))))) |