summaryrefslogtreecommitdiff
path: root/gnu/packages/ldc.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/ldc.scm')
-rw-r--r--gnu/packages/ldc.scm141
1 files changed, 141 insertions, 0 deletions
diff --git a/gnu/packages/ldc.scm b/gnu/packages/ldc.scm
index 6ea7f664bd..4b10ac25e0 100644
--- a/gnu/packages/ldc.scm
+++ b/gnu/packages/ldc.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015, 2016 Roel Janssen <roel@gnu.org>
;;; Copyright © 2015 Pjotr Prins <pjotr.guix@thebird.nl>
+;;; Copyright © 2017 Frederick Muriithi <fredmanglis@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -27,6 +28,8 @@
#:use-module (gnu packages)
#:use-module (gnu packages base)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages curl)
+ #:use-module (gnu packages gdb)
#:use-module (gnu packages libedit)
#:use-module (gnu packages llvm)
#:use-module (gnu packages python)
@@ -171,3 +174,141 @@ latest DMD frontend and uses LLVM as backend.")
(license (list license:bsd-3
license:gpl2+
license:boost1.0))))
+
+
+(define-public ldc-1.1.0-beta6
+ ;; The phobos, druntime and dmd-testsuite dependencies do not have a newer
+ ;; release than 1.1.0-beta4, hence the need to make use of the older-version
+ ;; variable to hold this variable.
+ (let ((older-version "1.1.0-beta4"))
+ (package
+ (inherit ldc)
+ (name "ldc")
+ (version "1.1.0-beta6")
+ ;; Beta version needed to compile various scientific tools that require
+ ;; the newer beta versions, and won't compile successfully with the
+ ;; older stable version.
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/ldc-developers/ldc/archive/v"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0n53brlkm86jjkppy9xmzx7nyxykzj68kcxgv8q7d10s5hfscxs8"))))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'unpack-submodule-sources
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((unpack (lambda (source target)
+ (with-directory-excursion target
+ (zero? (system* "tar" "xvf"
+ (assoc-ref inputs source)
+ "--strip-components=1"))))))
+ (and (unpack "phobos-src" "runtime/phobos")
+ (unpack "druntime-src" "runtime/druntime")
+ (unpack "dmd-testsuite-src" "tests/d2/dmd-testsuite")))))
+ ;; The 'patch-dmd2 step in ldc causes the build to fail since
+ ;; dmd2/root/port.c no longer exists. Arguments needed to have
+ ;; 'patch-dmd2 step removed, but retain everything else.
+ (add-after 'unpack-submodule-sources 'patch-phobos
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "runtime/phobos/std/process.d"
+ (("/bin/sh") (which "sh"))
+ (("echo") (which "echo")))
+ (substitute* "runtime/phobos/std/datetime.d"
+ (("/usr/share/zoneinfo/")
+ (string-append (assoc-ref inputs "tzdata") "/share/zoneinfo")))
+ (substitute* "tests/d2/dmd-testsuite/Makefile"
+ (("/bin/bash") (which "bash")))
+ #t)))))
+ (native-inputs
+ `(("llvm" ,llvm)
+ ("clang" ,clang)
+ ("ldc" ,ldc)
+ ("python-lit" ,python-lit)
+ ("python-wrapper" ,python-wrapper)
+ ("unzip" ,unzip)
+ ("gdb" ,gdb)
+ ("phobos-src"
+ ,(origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/ldc-developers/phobos/archive/ldc-v"
+ older-version ".tar.gz"))
+ (sha256
+ (base32
+ "1iwy5rs0rqkicj1zfsa5yqvk8ard99bfr8g69qmhlbzb98q0kpks"))
+ ;; 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-1.1.0-disable-phobos-tests.patch"))))
+ ("druntime-src"
+ ,(origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/ldc-developers/druntime/archive/ldc-v"
+ older-version ".tar.gz"))
+ (sha256
+ (base32
+ "1qsiw5lz1pr8ms9myjf8b94nqi7f1781k226jvxwnhkjg11d0s63"))))
+ ("dmd-testsuite-src"
+ ,(origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/ldc-developers/dmd-testsuite/archive/ldc-v"
+ older-version ".tar.gz"))
+ (sha256
+ (base32
+ "0jp54hyi75i9g41rvgmm3zg21yzv57q8dghrhb432rb0n9j15mbp"))
+ ;; Remove the gdb tests that fails with a "Error: No such file or
+ ;; directory" error, despite the files being present in the debug
+ ;; files left with the --keep-failed flag to guix build.
+ (patches (search-patches "ldc-1.1.0-disable-dmd-tests.patch")))))))))
+
+(define-public ldc-beta ldc-1.1.0-beta6)
+
+(define-public dub
+ (package
+ (name "dub")
+ (version "1.2.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/dlang/dub/archive/"
+ "v" version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1sd8i1rvxc7y7kk0y6km5zyvaladc5zh56r6afj74ndd63dssv43"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:tests? #f ; it would have tested itself by installing some packages (vibe etc)
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (replace 'build
+ (lambda _
+ (zero? (system* "./build.sh"))))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (outbin (string-append out "/bin")))
+ (mkdir-p outbin)
+ (install-file "bin/dub" outbin)
+ #t))))))
+ (inputs
+ `(("curl" ,curl)))
+ (native-inputs
+ `(("ldc" ,ldc)))
+ (home-page "https://code.dlang.org/getting_started")
+ (synopsis "DUB package manager")
+ (description "This package provides the D package manager.")
+ (license license:expat)))