about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--gn/packages/dlang.scm167
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")))))))))