From 81c24bae8573cdf4ff487ef52d853dddeb1506ee Mon Sep 17 00:00:00 2001 From: Muriithi Frederick Muriuki Date: Fri, 28 Oct 2016 23:28:10 +0300 Subject: Add the ruby-mechanize gem and dependencies - Add the ruby-mechanize gem and the dependent packages to the list of available ruby packages --- gn/packages/ruby.scm | 111 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) diff --git a/gn/packages/ruby.scm b/gn/packages/ruby.scm index 93f4628..45b840b 100644 --- a/gn/packages/ruby.scm +++ b/gn/packages/ruby.scm @@ -149,3 +149,114 @@ output") (home-page "http://github.com/pjotrp/bioruby-table") (license expat))) + +(define-public ruby-net-http-digest-auth + (package + (name "ruby-net-http-digest-auth") + (version "1.4") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "net-http-digest_auth" version)) + (sha256 + (base32 + "14801gr34g0rmqz9pv4rkfa3crfdbyfk6r48vpg5a5407v0sixqi")))) + (build-system ruby-build-system) + (synopsis + "An implementation of RFC 2617 - Digest Access Authentication. At this time +the gem does not drop in to Net::HTTP and can be used for with other HTTP +clients. + +In order to use net-http-digest_auth you'll need to perform some request +wrangling on your own. See the class documentation at Net::HTTP::DigestAuth +for an example.") + (description + "An implementation of RFC 2617 - Digest Access Authentication. At this time +the gem does not drop in to Net::HTTP and can be used for with other HTTP +clients. + +In order to use net-http-digest_auth you'll need to perform some request +wrangling on your own. See the class documentation at Net::HTTP::DigestAuth +for an example.") + (home-page + "http://github.com/drbrain/net-http-digest_auth") + (license #f))) + +(define-public ruby-ntlm-http + (package + (name "ruby-ntlm-http") + (version "0.1.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "ntlm-http" version)) + (sha256 + (base32 + "0yx01ffrw87wya1syivqzf8hz02axk7jdpw6aw221xwvib767d36")))) + (build-system ruby-build-system) + (synopsis + "Ruby/NTLM HTTP provides NTLM authentication over http.") + (description + "Ruby/NTLM HTTP provides NTLM authentication over http.") + (home-page "http://www.mindflowsolutions.net") + (license #f))) + +(define-public ruby-webrobots + (package + (name "ruby-webrobots") + (version "0.1.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "webrobots" version)) + (sha256 + (base32 + "19ndcbba8s8m62hhxxfwn83nax34rg2k5x066awa23wknhnamg7b")))) + (build-system ruby-build-system) + (synopsis + "This library helps write robots.txt compliant web robots in Ruby. +") + (description + "This library helps write robots.txt compliant web robots in Ruby. +") + (home-page "https://github.com/knu/webrobots") + (license #f))) + +(define-public ruby-mechanize + (package + (name "ruby-mechanize") + (version "2.7.5") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "mechanize" version)) + (sha256 + (base32 + "1f861x62kmggy60krv229s5jl7afq9nblwcfih3kp9bm5c5jn16y")))) + (build-system ruby-build-system) + (propagated-inputs + `(("ruby-domain-name" ,ruby-domain-name) + ("ruby-http-cookie" ,ruby-http-cookie) + ("ruby-mime-types" ,ruby-mime-types) + ("ruby-net-http-digest-auth" + ,ruby-net-http-digest-auth) + ("ruby-net-http-persistent" + ,ruby-net-http-persistent) + ("ruby-nokogiri" ,ruby-nokogiri) + ("ruby-ntlm-http" ,ruby-ntlm-http) + ("ruby-webrobots" ,ruby-webrobots))) + (synopsis + "The Mechanize library is used for automating interaction with websites. +Mechanize automatically stores and sends cookies, follows redirects, +and can follow links and submit forms. Form fields can be populated and +submitted. Mechanize also keeps track of the sites that you have visited as +a history.") + (description + "The Mechanize library is used for automating interaction with websites. +Mechanize automatically stores and sends cookies, follows redirects, +and can follow links and submit forms. Form fields can be populated and +submitted. Mechanize also keeps track of the sites that you have visited as +a history.") + (home-page + "http://docs.seattlerb.org/mechanize/") + (license expat))) -- cgit v1.2.3 From 6d80add340e48ff0bd6e0127ac21cbd4078f88b2 Mon Sep 17 00:00:00 2001 From: Muriithi Frederick Muriuki Date: Sat, 29 Oct 2016 10:38:45 +0300 Subject: Deactivate test for mechanize and dependencies - Failing tests are preventing successful build and installation of the ruby-mechanize gem. Temporarily deactivate tests to enable installation of ruby-mechanize --- gn/packages/ruby.scm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/gn/packages/ruby.scm b/gn/packages/ruby.scm index 45b840b..483be76 100644 --- a/gn/packages/ruby.scm +++ b/gn/packages/ruby.scm @@ -162,6 +162,8 @@ output") (base32 "14801gr34g0rmqz9pv4rkfa3crfdbyfk6r48vpg5a5407v0sixqi")))) (build-system ruby-build-system) + (arguments + `(#:tests? #f)) (synopsis "An implementation of RFC 2617 - Digest Access Authentication. At this time the gem does not drop in to Net::HTTP and can be used for with other HTTP @@ -194,6 +196,8 @@ for an example.") (base32 "0yx01ffrw87wya1syivqzf8hz02axk7jdpw6aw221xwvib767d36")))) (build-system ruby-build-system) + (arguments + `(#:tests? #f)) (synopsis "Ruby/NTLM HTTP provides NTLM authentication over http.") (description @@ -213,6 +217,8 @@ for an example.") (base32 "19ndcbba8s8m62hhxxfwn83nax34rg2k5x066awa23wknhnamg7b")))) (build-system ruby-build-system) + (arguments + `(#:tests? #f)) (synopsis "This library helps write robots.txt compliant web robots in Ruby. ") @@ -234,6 +240,8 @@ for an example.") (base32 "1f861x62kmggy60krv229s5jl7afq9nblwcfih3kp9bm5c5jn16y")))) (build-system ruby-build-system) + (arguments + `(#:tests? #f)) (propagated-inputs `(("ruby-domain-name" ,ruby-domain-name) ("ruby-http-cookie" ,ruby-http-cookie) -- cgit v1.2.3 From 7bf8bf6cc7b56268846f87a56e3587a7d8b076cf Mon Sep 17 00:00:00 2001 From: Muriithi Frederick Muriuki Date: Wed, 2 Nov 2016 17:52:58 +0300 Subject: Add ruby-rake and ruby-minitest for tests - Add ruby-rake package and ruby-minitest to enable the automated running of tests while building the mechanize package --- gn/packages/ruby.scm | 123 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 121 insertions(+), 2 deletions(-) diff --git a/gn/packages/ruby.scm b/gn/packages/ruby.scm index 483be76..1711d54 100644 --- a/gn/packages/ruby.scm +++ b/gn/packages/ruby.scm @@ -240,8 +240,8 @@ for an example.") (base32 "1f861x62kmggy60krv229s5jl7afq9nblwcfih3kp9bm5c5jn16y")))) (build-system ruby-build-system) - (arguments - `(#:tests? #f)) + (inputs + `(("ruby-rake" ,ruby-rake))) (propagated-inputs `(("ruby-domain-name" ,ruby-domain-name) ("ruby-http-cookie" ,ruby-http-cookie) @@ -268,3 +268,122 @@ a history.") (home-page "http://docs.seattlerb.org/mechanize/") (license expat))) + +(define-public ruby-rake + (package + (name "ruby-rake") + (version "11.3.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "rake" version)) + (sha256 + (base32 + "0cnjmbcyhm4hacpjn337mg1pnaw6hj09f74clwgh6znx8wam9xla")))) + (build-system ruby-build-system) + (inputs + `(("bundler" ,bundler) + ("ruby-minitest" ,ruby-minitest) + ("ruby-hoe" ,ruby-hoe))) + (synopsis + "Rake is a Make-like program implemented in Ruby. Tasks and dependencies are +specified in standard Ruby syntax.") + (description + "Rake is a Make-like program implemented in Ruby. Tasks and dependencies are +specified in standard Ruby syntax. + +Rake has the following features: + +* Rakefiles (rake's version of Makefiles) are completely defined in + standard Ruby syntax. No XML files to edit. No quirky Makefile + syntax to worry about (is that a tab or a space?) + +* Users can specify tasks with prerequisites. + +* Rake supports rule patterns to synthesize implicit tasks. + +* Flexible FileLists that act like arrays but know about manipulating + file names and paths. + +* A library of prepackaged tasks to make building rakefiles easier. For example, + tasks for building tarballs and publishing to FTP or SSH sites. (Formerly + tasks for building RDoc and Gems were included in rake but they're now + available in RDoc and RubyGems respectively.) + +* Supports parallel execution of tasks.") + (home-page "https://github.com/ruby/rake") + (license license:expat))) + +(define-public ruby-minitest + (package + (name "ruby-minitest") + (version "5.9.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "minitest" version)) + (sha256 + (base32 + "0300naf4ilpd9sf0k8si9h9sclkizaschn8bpnri5fqmvm9ybdbq")))) + (build-system ruby-build-system) + (inputs + `(("ruby-hoe" ,ruby-hoe))) + (synopsis + "minitest provides a complete suite of testing facilities supporting +TDD, BDD, mocking, and benchmarking.") + (description + "minitest provides a complete suite of testing facilities supporting +TDD, BDD, mocking, and benchmarking. + + \"I had a class with Jim Weirich on testing last week and we were + allowed to choose our testing frameworks. Kirk Haines and I were\n paired up and we cracked open the code for a few test + frameworks... + + I MUST say that minitest is *very* readable / understandable + compared to the 'other two' options we looked at. Nicely done and + thank you for helping us keep our mental sanity.\" + + -- Wayne E. Seguin + +minitest/test is a small and incredibly fast unit testing framework. +It provides a rich set of assertions to make your tests clean and +readable. + +minitest/spec is a functionally complete spec engine. It hooks onto +minitest/test and seamlessly bridges test assertions over to spec +expectations. + +minitest/benchmark is an awesome way to assert the performance of your +algorithms in a repeatable manner. Now you can assert that your newb +co-worker doesn't replace your linear algorithm with an exponential +one! + +minitest/mock by Steven Baker, is a beautifully tiny mock (and stub) +object framework. + +minitest/pride shows pride in testing and adds coloring to your test +output. I guess it is an example of how to write IO pipes too. :P + +minitest/test is meant to have a clean implementation for language +implementors that need a minimal set of methods to bootstrap a working +test suite. For example, there is no magic involved for test-case +discovery. + + \"Again, I can't praise enough the idea of a testing/specing + framework that I can actually read in full in one sitting!\" + + -- Piotr Szotkowski + +Comparing to rspec: + + rspec is a testing DSL. minitest is ruby. + + -- Adam Hawkins, \"Bow Before MiniTest\" + +minitest doesn't reinvent anything that ruby already provides, like: +classes, modules, inheritance, methods. This means you only have to +learn ruby to use minitest and all of your regular OO practices like +extract-method refactorings still apply.") + (home-page + "https://github.com/seattlerb/minitest") + (license license:expat))) -- cgit v1.2.3 From d42b5d2296385ced621dbbf83fd55e0bd0010145 Mon Sep 17 00:00:00 2001 From: Muriithi Frederick Muriuki Date: Sun, 6 Nov 2016 14:34:28 +0300 Subject: Remove unnecessary package definitions - rake and minitest are part of ruby, and do not need separate package definitions. To make the tests run, use ruby as an input to ruby-mechanize --- gn/packages/ruby.scm | 122 +-------------------------------------------------- 1 file changed, 2 insertions(+), 120 deletions(-) diff --git a/gn/packages/ruby.scm b/gn/packages/ruby.scm index 1711d54..41743d9 100644 --- a/gn/packages/ruby.scm +++ b/gn/packages/ruby.scm @@ -240,8 +240,9 @@ for an example.") (base32 "1f861x62kmggy60krv229s5jl7afq9nblwcfih3kp9bm5c5jn16y")))) (build-system ruby-build-system) + (arguments '(#:gem-flags '("--trace"))) (inputs - `(("ruby-rake" ,ruby-rake))) + `(("ruby" ,ruby))) (propagated-inputs `(("ruby-domain-name" ,ruby-domain-name) ("ruby-http-cookie" ,ruby-http-cookie) @@ -268,122 +269,3 @@ a history.") (home-page "http://docs.seattlerb.org/mechanize/") (license expat))) - -(define-public ruby-rake - (package - (name "ruby-rake") - (version "11.3.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "rake" version)) - (sha256 - (base32 - "0cnjmbcyhm4hacpjn337mg1pnaw6hj09f74clwgh6znx8wam9xla")))) - (build-system ruby-build-system) - (inputs - `(("bundler" ,bundler) - ("ruby-minitest" ,ruby-minitest) - ("ruby-hoe" ,ruby-hoe))) - (synopsis - "Rake is a Make-like program implemented in Ruby. Tasks and dependencies are -specified in standard Ruby syntax.") - (description - "Rake is a Make-like program implemented in Ruby. Tasks and dependencies are -specified in standard Ruby syntax. - -Rake has the following features: - -* Rakefiles (rake's version of Makefiles) are completely defined in - standard Ruby syntax. No XML files to edit. No quirky Makefile - syntax to worry about (is that a tab or a space?) - -* Users can specify tasks with prerequisites. - -* Rake supports rule patterns to synthesize implicit tasks. - -* Flexible FileLists that act like arrays but know about manipulating - file names and paths. - -* A library of prepackaged tasks to make building rakefiles easier. For example, - tasks for building tarballs and publishing to FTP or SSH sites. (Formerly - tasks for building RDoc and Gems were included in rake but they're now - available in RDoc and RubyGems respectively.) - -* Supports parallel execution of tasks.") - (home-page "https://github.com/ruby/rake") - (license license:expat))) - -(define-public ruby-minitest - (package - (name "ruby-minitest") - (version "5.9.1") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "minitest" version)) - (sha256 - (base32 - "0300naf4ilpd9sf0k8si9h9sclkizaschn8bpnri5fqmvm9ybdbq")))) - (build-system ruby-build-system) - (inputs - `(("ruby-hoe" ,ruby-hoe))) - (synopsis - "minitest provides a complete suite of testing facilities supporting -TDD, BDD, mocking, and benchmarking.") - (description - "minitest provides a complete suite of testing facilities supporting -TDD, BDD, mocking, and benchmarking. - - \"I had a class with Jim Weirich on testing last week and we were - allowed to choose our testing frameworks. Kirk Haines and I were\n paired up and we cracked open the code for a few test - frameworks... - - I MUST say that minitest is *very* readable / understandable - compared to the 'other two' options we looked at. Nicely done and - thank you for helping us keep our mental sanity.\" - - -- Wayne E. Seguin - -minitest/test is a small and incredibly fast unit testing framework. -It provides a rich set of assertions to make your tests clean and -readable. - -minitest/spec is a functionally complete spec engine. It hooks onto -minitest/test and seamlessly bridges test assertions over to spec -expectations. - -minitest/benchmark is an awesome way to assert the performance of your -algorithms in a repeatable manner. Now you can assert that your newb -co-worker doesn't replace your linear algorithm with an exponential -one! - -minitest/mock by Steven Baker, is a beautifully tiny mock (and stub) -object framework. - -minitest/pride shows pride in testing and adds coloring to your test -output. I guess it is an example of how to write IO pipes too. :P - -minitest/test is meant to have a clean implementation for language -implementors that need a minimal set of methods to bootstrap a working -test suite. For example, there is no magic involved for test-case -discovery. - - \"Again, I can't praise enough the idea of a testing/specing - framework that I can actually read in full in one sitting!\" - - -- Piotr Szotkowski - -Comparing to rspec: - - rspec is a testing DSL. minitest is ruby. - - -- Adam Hawkins, \"Bow Before MiniTest\" - -minitest doesn't reinvent anything that ruby already provides, like: -classes, modules, inheritance, methods. This means you only have to -learn ruby to use minitest and all of your regular OO practices like -extract-method refactorings still apply.") - (home-page - "https://github.com/seattlerb/minitest") - (license license:expat))) -- cgit v1.2.3 From c3031134beda3f1951742a6d4ca05c85f034af49 Mon Sep 17 00:00:00 2001 From: Muriithi Frederick Muriuki Date: Thu, 1 Dec 2016 17:24:59 +0300 Subject: Add ldc to repository * Copy ldc.scm from guix * Update ldc.scm with 2 new versions of ldc, version 0.17.2 and version 1.1.0-beta4 * Deactivate test temporarily to allow installation --- gn/packages/ldc.scm | 322 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 322 insertions(+) create mode 100644 gn/packages/ldc.scm diff --git a/gn/packages/ldc.scm b/gn/packages/ldc.scm new file mode 100644 index 0000000..45ba1b4 --- /dev/null +++ b/gn/packages/ldc.scm @@ -0,0 +1,322 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015, 2016 Roel Janssen +;;; Copyright © 2015 Pjotr Prins +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu packages ldc) + #: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 compression) + #:use-module (gnu packages libedit) + #:use-module (gnu packages llvm) + #:use-module (gnu packages textutils) + #:use-module (gnu packages zip)) + +(define-public rdmd + (let ((commit "da0a2e0a379b08294015eec9d531f1e5dd4226f0")) + (package + (name "rdmd") + (version (string-append "v2.070.0-1." (string-take commit 7))) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/D-Programming-Language/tools.git") + (commit commit))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "1pcx5lyqzrip86f4vv60x292rpvnwsq2hvl1znm9x9rn68f34m45")))) + (build-system gnu-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (delete 'configure) + (delete 'check) ; There is no Makefile, so there's no 'make check'. + (replace + 'build + (lambda _ + (zero? (system* "ldc2" "rdmd.d")))) + (replace + 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((bin (string-append (assoc-ref outputs "out") "/bin"))) + (install-file "rdmd" bin))))))) + (native-inputs + `(("ldc" ,ldc))) + (home-page "https://github.com/D-Programming-Language/tools/") + (synopsis "Specialized equivalent to 'make' for the D language") + (description + "rdmd is a companion to the dmd compiler that simplifies the typical +edit-compile-link-run or edit-make-run cycle to a rapid edit-run cycle. Like +make and other tools, rdmd uses the relative dates of the files involved to +minimize the amount of work necessary. Unlike make, rdmd tracks dependencies +and freshness without requiring additional information from the user.") + (license license:boost1.0)))) + +(define-public ldc-0.16.1 + (package + (name "ldc") + (version "0.16.1") + (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 + "1jvilxx0rpqmkbja4m69fhd5g09697xq7vyqp2hz4hvxmmmv4j40")))) + (build-system cmake-build-system) + ;; LDC currently only supports the x86_64 and i686 architectures. + (supported-systems '("x86_64-linux" "i686-linux")) + (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"))))) + (add-after 'unpack-submodule-sources 'patch-dmd2 + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "dmd2/root/port.c" + ((" ::isnan") " isnan") + ((" ::isinf") " isinf") + (("#undef isnan") "") + (("#undef isinf") "")) + #t)) + (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))))) + (inputs + `(("libconfig" ,libconfig) + ("libedit" ,libedit) + ("tzdata" ,tzdata) + ("zlib" ,zlib))) + (native-inputs + `(("llvm" ,llvm-3.7) + ("clang" ,clang-3.7) + ("unzip" ,unzip) + ("phobos-src" + ,(origin + (method url-fetch) + (uri (string-append + "https://github.com/ldc-developers/phobos/archive/ldc-v" + version ".tar.gz")) + (sha256 + (base32 + "0sgdj0536c4nb118yiw1f8lqy5d3g3lpg9l99l165lk9xy45l9z4")) + (patches (search-patches "ldc-disable-tests.patch")))) + ("druntime-src" + ,(origin + (method url-fetch) + (uri (string-append + "https://github.com/ldc-developers/druntime/archive/ldc-v" + version ".tar.gz")) + (sha256 + (base32 + "0z4mkyddx6c4sy1vqgqvavz55083dsxws681qkh93jh1rpby9yg6")))) + ("dmd-testsuite-src" + ,(origin + (method url-fetch) + (uri (string-append + "https://github.com/ldc-developers/dmd-testsuite/archive/ldc-v" + version ".tar.gz")) + (sha256 + (base32 + "0yc6miidzgl9k33ygk7xcppmfd6kivqj02cvv4fmkbs3qz4yy3z1")))))) + (home-page "http://wiki.dlang.org/LDC") + (synopsis "LLVM compiler for the D programming language") + (description + "LDC is a compiler for the D programming language. It is based on the +latest DMD frontend and uses LLVM as backend.") + ;; Most of the code is released under BSD-3, except for code originally + ;; written for GDC, which is released under GPLv2+, and the DMD frontend, + ;; which is released under the "Boost Software License version 1.0". + (license (list license:bsd-3 + license:gpl2+ + license:boost1.0)))) + +(define-public ldc-0.17.2 + (package + (inherit ldc) + (name "ldc") + (version "0.17.2") + (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 + "0iksl6cvhsiwnlh15b7s9v8f3grxk27jn0vja9n4sad7fvfwmmlc")))) + (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"))))) + (add-after 'unpack-submodule-sources 'patch-dmd2 + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "dmd2/root/port.c" + ((" ::isnan") " isnan") + ((" ::isinf") " isinf") + (("#undef isnan") "") + (("#undef isinf") "")) + #t)) + (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))) + #:tests? #f)) + (native-inputs + `(("llvm" ,llvm-3.7) + ("clang" ,clang-3.7) + ("unzip" ,unzip) + ("phobos-src" + ,(origin + (method url-fetch) + (uri (string-append + "https://github.com/ldc-developers/phobos/archive/ldc-v" + version ".tar.gz")) + (sha256 + (base32 + "07hh3ic3r755mq9hn9gfr0wlc5y8cr91xz2ydb6gqy4zy8jgp5s9")))) + ("druntime-src" + ,(origin + (method url-fetch) + (uri (string-append + "https://github.com/ldc-developers/druntime/archive/ldc-v" + version ".tar.gz")) + (sha256 + (base32 + "1m1dhday9dl3s04njmd29z7ism2xn2ksb9qlrwzykdgz27b3dk6x")))) + ("dmd-testsuite-src" + ,(origin + (method url-fetch) + (uri (string-append + "https://github.com/ldc-developers/dmd-testsuite/archive/ldc-v" + version ".tar.gz")) + (sha256 + (base32 + "0n7gvalxwfmia4gag53r9qhcnk2cqrw3n4icj1yri0zkgc27pm60")))))))) + +(define-public ldc-1.1.0-beta4 + (package + (inherit ldc) + (name "ldc") + (version "1.1.0-beta4") + (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 + "04n6sbz6l658s32f7zilpbi9m8a1m4g5wrgl44igkvla30niy5yn")))) + (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"))))) + (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))) + #:tests? #f)) + (native-inputs + `(("llvm" ,llvm-3.7) + ("ldc" ,ldc-0.17.2) + ("phobos-src" + ,(origin + (method url-fetch) + (uri (string-append + "https://github.com/ldc-developers/phobos/archive/ldc-v" + version ".tar.gz")) + (sha256 + (base32 + "1iwy5rs0rqkicj1zfsa5yqvk8ard99bfr8g69qmhlbzb98q0kpks")))) + ("druntime-src" + ,(origin + (method url-fetch) + (uri (string-append + "https://github.com/ldc-developers/druntime/archive/ldc-v" + 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" + version ".tar.gz")) + (sha256 + (base32 + "0jp54hyi75i9g41rvgmm3zg21yzv57q8dghrhb432rb0n9j15mbp")))))))) + +(define-public ldc ldc-1.1.0-beta4) -- cgit v1.2.3