unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* [PATCH] Add LDC.
@ 2015-12-29 11:18 Roel Janssen
  2015-12-29 15:02 ` Ricardo Wurmus
  2015-12-29 15:42 ` Ricardo Wurmus
  0 siblings, 2 replies; 11+ messages in thread
From: Roel Janssen @ 2015-12-29 11:18 UTC (permalink / raw)
  To: guix-devel

[-- Attachment #1: 0001-gnu-add-LDC.patch --]
[-- Type: text/x-patch, Size: 11017 bytes --]

From 02ac3c5d71e16dc0851018e04aec817e86c8597c Mon Sep 17 00:00:00 2001
From: Roel Janssen <roel@gnu.org>
Date: Tue, 29 Dec 2015 12:06:25 +0100
Subject: [PATCH] gnu: add LDC.

* gnu/packages/dlanguage.scm (ldc): New variable.
* gnu/packages/patches/ldc-disable-tests.patch: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add (gnu packages dlanguage).
* gnu-system.am (dist_patch_DATA): Add patch file.
---
 gnu-system.am                                |   2 +
 gnu/packages/dlanguage.scm                   | 134 +++++++++++++++++++++++++++
 gnu/packages/patches/ldc-disable-tests.patch |  90 ++++++++++++++++++
 3 files changed, 226 insertions(+)
 create mode 100644 gnu/packages/dlanguage.scm
 create mode 100644 gnu/packages/patches/ldc-disable-tests.patch

diff --git a/gnu-system.am b/gnu-system.am
index e1874fa..1ede2ac 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -175,6 +175,7 @@ GNU_SYSTEM_MODULES =				\
   gnu/packages/key-mon.scm			\
   gnu/packages/kodi.scm				\
   gnu/packages/language.scm			\
+  gnu/packages/dlanguage.scm			\
   gnu/packages/less.scm				\
   gnu/packages/lesstif.scm			\
   gnu/packages/libcanberra.scm			\
@@ -522,6 +523,7 @@ dist_patch_DATA =						\
   gnu/packages/patches/jbig2dec-ignore-testtest.patch		\
   gnu/packages/patches/julia-0.3.10-fix-empty-array.patch	\
   gnu/packages/patches/kmod-module-directory.patch		\
+  gnu/packages/patches/ldc-disable-tests.patch			\
   gnu/packages/patches/lftp-dont-save-unknown-host-fingerprint.patch \
   gnu/packages/patches/liba52-enable-pic.patch			\
   gnu/packages/patches/liba52-link-with-libm.patch		\
diff --git a/gnu/packages/dlanguage.scm b/gnu/packages/dlanguage.scm
new file mode 100644
index 0000000..a90519c
--- /dev/null
+++ b/gnu/packages/dlanguage.scm
@@ -0,0 +1,134 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015 Roel Janssen <roel@gnu.org>
+;;; Copyright © 2015 Pjotr Prins <pjotr.guix@thebird.nl>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages dlanguage)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system cmake)
+  #:use-module (gnu packages textutils)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages libedit)
+  #:use-module (gnu packages llvm)
+  #:use-module (gnu packages zip)
+  #:use-module (guix git-download))
+
+(define-public ldc
+  (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)
+    (supported-systems '("x86_64-linux" "i686-linux"))
+    (arguments
+     `(#:tests? #t
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'unpack-phobos-source
+                    (lambda* (#:key source inputs #:allow-other-keys)
+                      (with-directory-excursion "runtime/phobos"
+                        (copy-file (assoc-ref inputs "phobos-src")
+                                   "phobos-src.tar")
+                        (zero? (system* "tar" "xvf" "phobos-src.tar"
+                                        "--strip-components=1")))))
+         (add-after 'unpack 'unpack-druntime-source
+                    (lambda* (#:key source inputs #:allow-other-keys)
+                      (with-directory-excursion "runtime/druntime"
+                        (copy-file (assoc-ref inputs "druntime-src")
+                                   "druntime-src.tar.gz")
+                        (zero? (system* "tar" "xvzf" "druntime-src.tar.gz"
+                                        "--strip-components=1")))))
+         (add-after 'unpack 'unpack-dmd-testsuite-source
+                    (lambda* (#:key source inputs #:allow-other-keys)
+                      (with-directory-excursion "tests/d2/dmd-testsuite"
+                        (copy-file (assoc-ref inputs "dmd-testsuite-src")
+                                   "dmd-testsuite-src.tar.gz")
+                        (zero? (system* "tar" "xvzf" "dmd-testsuite-src.tar.gz"
+                                        "--strip-components=1")))))
+         (add-after
+          'unpack-phobos-source 'patch-phobos
+          (lambda* (#:key source 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")))
+            #t))
+         (add-after
+          'unpack-dmd-testsuite-source 'patch-dmd-testsuite
+          (lambda _
+            (substitute* "tests/d2/dmd-testsuite/Makefile"
+              (("/bin/bash") (which "bash")))
+            #t)))))
+    (inputs
+     `(("libconfig" ,libconfig)
+       ("libedit" ,libedit)
+       ("tzdata" ,tzdata)))  ;; needed for tests
+    (native-inputs
+     `(("llvm" ,llvm)
+       ("clang" ,clang)
+       ("unzip" ,unzip) ;; needed for tests
+       ("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 (list (search-patch "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 "https://github.com/ldc-developers/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.  LLVM provides a fast and modern
+backend for high quality code generation.  LDC is released under a BSD license
+with exceptions for the DMD frontend and code from GDC.  The development takes
+place mostly on x86-32 and x86-64 Linux and that is where LDC works best.")
+    (license license:bsd-3)))
diff --git a/gnu/packages/patches/ldc-disable-tests.patch b/gnu/packages/patches/ldc-disable-tests.patch
new file mode 100644
index 0000000..42e394d
--- /dev/null
+++ b/gnu/packages/patches/ldc-disable-tests.patch
@@ -0,0 +1,90 @@
+This patch fixes a failing unit test by feeding buildNormalizedPath to the
+tzdata properly. Three other tests are disables, one assumes /root and the
+two others use networking. Not bad out of almost 700 tests!
+
+by Pjotr Prins <pjotr.guix@thebird.nl>
+
+diff --git a/std/datetime.d b/std/datetime.d
+index 8e4ed3b..6c15bc5 100644
+--- a/std/datetime.d
++++ b/std/datetime.d
+@@ -28018,6 +28018,7 @@ public:
+             The default directory where the TZ Database files are. It's empty
+             for Windows, since Windows doesn't have them.
+           +/
++          
+         enum defaultTZDatabaseDir = "/usr/share/zoneinfo/";
+     }
+     else version(Windows)
+@@ -28069,14 +28070,13 @@ assert(tz.dstName == "PDT");
+         import std.range : retro;
+         import std.format : format;
+ 
+-        name = strip(name);
+-
+         enforce(tzDatabaseDir.exists(), new DateTimeException(format("Directory %s does not exist.", tzDatabaseDir)));
+         enforce(tzDatabaseDir.isDir, new DateTimeException(format("%s is not a directory.", tzDatabaseDir)));
+ 
+-        immutable file = buildNormalizedPath(tzDatabaseDir, name);
++        auto filename = "./" ~ strip(name); // make sure the prefix is not stripped
++        immutable file = buildNormalizedPath(tzDatabaseDir, filename);
+ 
+-        enforce(file.exists(), new DateTimeException(format("File %s does not exist.", file)));
++        enforce(file.exists(), new DateTimeException(format("File %s does not exist in %s.", file, tzDatabaseDir)));
+         enforce(file.isFile, new DateTimeException(format("%s is not a file.", file)));
+ 
+         auto tzFile = File(file);
+diff --git a/std/path.d b/std/path.d
+index 254d8f0..b0fc04d 100644
+--- a/std/path.d
++++ b/std/path.d
+@@ -3080,8 +3080,11 @@ unittest
+         }
+         else
+         {
++            pragma(msg, "test disabled on GNU Guix");
++/*
+             assert(expandTilde("~root") == "/root", expandTilde("~root"));
+             assert(expandTilde("~root/") == "/root/", expandTilde("~root/"));
++*/
+         }
+         assert(expandTilde("~Idontexist/hey") == "~Idontexist/hey");
+     }
+diff --git a/std/socket.d b/std/socket.d
+index b85d1c9..7fbf346 100644
+--- a/std/socket.d
++++ b/std/socket.d
+@@ -517,6 +517,8 @@ class Protocol
+ 
+ unittest
+ {
++    pragma(msg, "test disabled on GNU Guix");
++/*
+     // getprotobyname,number are unimplemented on Android
+     softUnittest({
+         Protocol proto = new Protocol;
+@@ -530,6 +532,7 @@ unittest
+         assert(proto.name == "tcp");
+         assert(proto.aliases.length == 1 && proto.aliases[0] == "TCP");
+     });
++*/
+ }
+ 
+ 
+@@ -859,6 +862,8 @@ class InternetHost
+ 
+ unittest
+ {
++    pragma(msg, "test disabled on GNU Guix");
++    /*
+     InternetHost ih = new InternetHost;
+ 
+     ih.getHostByAddr(0x7F_00_00_01);
+@@ -889,6 +894,7 @@ unittest
+         //      writefln("aliases[%d] = %s", i, s);
+         // }
+     });
++    */
+ }
+ 
+ 
-- 
2.5.0


[-- Attachment #2: Type: text/plain, Size: 350 bytes --]

Dear list,

Here is a patch to add the LLVM-based D compiler.  The developers split
the source code in "submodules".  Since these submodules are specific to
LDC, they are described in a single package.

I tried to conform to all style/syntax "rules", so please let me know
when some formatting is wrong.

Thank you for your time.

Kind regards,
Roel

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH] Add LDC.
  2015-12-29 11:18 [PATCH] Add LDC Roel Janssen
@ 2015-12-29 15:02 ` Ricardo Wurmus
  2015-12-29 15:37   ` Pjotr Prins
  2016-01-04 14:23   ` Roel Janssen
  2015-12-29 15:42 ` Ricardo Wurmus
  1 sibling, 2 replies; 11+ messages in thread
From: Ricardo Wurmus @ 2015-12-29 15:02 UTC (permalink / raw)
  To: Roel Janssen; +Cc: guix-devel

Hi Roel,

Roel Janssen <roel@gnu.org> writes:

> Here is a patch to add the LLVM-based D compiler.  The developers split
> the source code in "submodules".  Since these submodules are specific to
> LDC, they are described in a single package.

I think that’s okay.

> I tried to conform to all style/syntax "rules", so please let me know
> when some formatting is wrong.

thanks for the patch!  Below is a style critique with additional
ramblings.

> From 02ac3c5d71e16dc0851018e04aec817e86c8597c Mon Sep 17 00:00:00 2001
> From: Roel Janssen <roel@gnu.org>
> Date: Tue, 29 Dec 2015 12:06:25 +0100
> Subject: [PATCH] gnu: add LDC.

Please capitalise “add”.

> * gnu/packages/dlanguage.scm (ldc): New variable.
> * gnu/packages/patches/ldc-disable-tests.patch: New file.
> * gnu-system.am (GNU_SYSTEM_MODULES): Add (gnu packages dlanguage).
> * gnu-system.am (dist_patch_DATA): Add patch file.

Actually, since “dlanguage.scm” is a new file it should be something
like this:

  * gnu/packages/dlanguage.scm: New file.
  * gnu/packages/patches/ldc-disable-tests.patch: New file.
  * gnu-system.am (GNU_SYSTEM_MODULES): Add dlanguage.scm.
  (dist_patch_DATA): Add patch file.

Why “dlanguage.scm” and not just “d.scm”?

> @@ -175,6 +175,7 @@ GNU_SYSTEM_MODULES =				\
>    gnu/packages/key-mon.scm			\
>    gnu/packages/kodi.scm				\
>    gnu/packages/language.scm			\
> +  gnu/packages/dlanguage.scm			\
>    gnu/packages/less.scm				\
>    gnu/packages/lesstif.scm			\
>    gnu/packages/libcanberra.scm			\

Could you please place this in alphabetic order?

> +(define-module (gnu packages dlanguage)
> +  #:use-module ((guix licenses) #:prefix license:)
> +  #:use-module (gnu packages)
> +  #:use-module (guix packages)
> +  #:use-module (guix download)
> +  #:use-module (guix build-system cmake)
> +  #:use-module (gnu packages textutils)
> +  #:use-module (gnu packages base)
> +  #:use-module (gnu packages libedit)
> +  #:use-module (gnu packages llvm)
> +  #:use-module (gnu packages zip)
> +  #:use-module (guix git-download))

It would be nice if (guix git-download) were up there with the other
(guix ...) imports.

> +
> +(define-public ldc
> +  (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)
> +    (supported-systems '("x86_64-linux" "i686-linux"))

Could you add a comment here?  Does upstream say that only these two
systems are supported?

> +    (arguments
> +     `(#:tests? #t

This is the default, so it’s not needed.

> +       #:phases
> +       (modify-phases %standard-phases
> +         (add-after 'unpack 'unpack-phobos-source
> +                    (lambda* (#:key source inputs #:allow-other-keys)
> +                      (with-directory-excursion "runtime/phobos"
> +                        (copy-file (assoc-ref inputs "phobos-src")
> +                                   "phobos-src.tar")
> +                        (zero? (system* "tar" "xvf" "phobos-src.tar"
> +                                        "--strip-components=1")))))

We usually align the “(lambda” with the first “d” in “add-after”.  Why
is “source” among the keys when you don’t use it?  Why copy the file
from the inputs to some other place rather than using (assoc-ref inputs
...) as the argument to “tar”?  (I may have done the same in the icedtea
packages—this probably could also be changed.)

> +         (add-after 'unpack 'unpack-druntime-source
[...]
> +         (add-after 'unpack 'unpack-dmd-testsuite-source

I think all these three phases could be merged into one appropriately
named phase.

> +         (add-after
> +          'unpack-phobos-source 'patch-phobos
> +          (lambda* (#:key source 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")))

Please put the “(string-append” on a new line.

> +            #t))
> +         (add-after
> +          'unpack-dmd-testsuite-source 'patch-dmd-testsuite
> +          (lambda _
> +            (substitute* "tests/d2/dmd-testsuite/Makefile"
> +              (("/bin/bash") (which "bash")))
> +            #t)))))
> +    (inputs
> +     `(("libconfig" ,libconfig)
> +       ("libedit" ,libedit)
> +       ("tzdata" ,tzdata)))  ;; needed for tests

If it’s needed for tests shouldn’t it be among the native-inputs then?

> +    (native-inputs
> +     `(("llvm" ,llvm)

The home page says that the compiler “relies on the LLVM Core libraries
for code generation”.  Doesn’t this mean that llvm should be a regular
input?

> +       ("clang" ,clang)
> +       ("unzip" ,unzip) ;; needed for tests
> +       ("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 (list (search-patch "ldc-disable-tests.patch")))))

Why is this patch needed?  Can they not be disabled elsewhere?

> +       ("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 "https://github.com/ldc-developers/ldc")

Is this really the project home page?  Or is it
“http://wiki.dlang.org/LDC”?

> +    (synopsis "LLVM compiler for the D programming language")

Must “LLVM” be part of the synopsis?  I’d think of this as just a
compiler, not an “LLVM compiler”.

> +    (description
> +     "LDC is a compiler for the D programming Language.  It is based on the
> +latest DMD frontend and uses LLVM as backend.  LLVM provides a fast and modern
> +backend for high quality code generation.  LDC is released under a BSD license
> +with exceptions for the DMD frontend and code from GDC.  The development takes
> +place mostly on x86-32 and x86-64 Linux and that is where LDC works best.")

“D programming Language” —> “D programming language”.
Please remove the third sentence (“LLVM provides...”) because it doesn’t
really describe LDC.  Also the next sentence (“LDC is released
under...”) should not be part of the description (that’s what the
“license” field is there for).

Also the last sentence probably isn’t a good fit for the description.
It would make a good comment for the “supported-systems” field, though.

> +    (license license:bsd-3)))

Please also mention in a comment the exceptions alluded to in the
description.

> diff --git a/gnu/packages/patches/ldc-disable-tests.patch b/gnu/packages/patches/ldc-disable-tests.patch
> new file mode 100644
> index 0000000..42e394d
> --- /dev/null
> +++ b/gnu/packages/patches/ldc-disable-tests.patch
> @@ -0,0 +1,90 @@
> +This patch fixes a failing unit test by feeding buildNormalizedPath to the
> +tzdata properly. Three other tests are disables, one assumes /root and the
> +two others use networking. Not bad out of almost 700 tests!

Please use two spaces between sentences.
s/disables/disabled/.

Is there no other way to disable tests, e.g. by name or by passing some
kind of variable to the build system?

~~ Ricardo

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] Add LDC.
  2015-12-29 15:02 ` Ricardo Wurmus
@ 2015-12-29 15:37   ` Pjotr Prins
  2016-01-04 14:23   ` Roel Janssen
  1 sibling, 0 replies; 11+ messages in thread
From: Pjotr Prins @ 2015-12-29 15:37 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: guix-devel

Just a few comments from my end:

On Tue, Dec 29, 2015 at 04:02:00PM +0100, Ricardo Wurmus wrote:
> Why “dlanguage.scm” and not just “d.scm”?

We could do. But in general it is referred to as the D language. I
don't know why.

> > +    (supported-systems '("x86_64-linux" "i686-linux"))
> 
> Could you add a comment here?  Does upstream say that only these two
> systems are supported?

Other targets are untested - the authors say. I think someone is
working on ARM - there is evidence of Android in the tests.

> > +         (add-after 'unpack 'unpack-druntime-source
> [...]
> > +         (add-after 'unpack 'unpack-dmd-testsuite-source
> 
> I think all these three phases could be merged into one appropriately
> named phase.

The order matters. Something to keep in mind.

> > +       ("tzdata" ,tzdata)))  ;; needed for tests
> 
> If it’s needed for tests shouldn’t it be among the native-inputs then?

The comment is wrong, sorry (it is mine).

> > +    (native-inputs
> > +     `(("llvm" ,llvm)
> 
> The home page says that the compiler “relies on the LLVM Core libraries
> for code generation”.  Doesn’t this mean that llvm should be a regular
> input?

Perhaps, but the compiler works fine.

> > +          (patches (list (search-patch "ldc-disable-tests.patch")))))
> 
> Why is this patch needed?  Can they not be disabled elsewhere?

Unfortunately not. D compiles with all unit tests. Also we don't want
to disable the other tests in the files by removing them from the
Makefile. Only 4 tests out of almost 700 are patched out. I think it
is amazingly good. Actually 1 test works after this patch. We'll send
it upstream.

> > +    (synopsis "LLVM compiler for the D programming language")
> 
> Must “LLVM” be part of the synopsis?  I’d think of this as just a
> compiler, not an “LLVM compiler”.

Yes, there are 3 different D compilers. This one is specific for LLVM.

> Is there no other way to disable tests, e.g. by name or by passing some
> kind of variable to the build system?

No, there is no easy way that I am aware. Actually we spent quite some
time getting the tests to pass. The patch is simple and easy to
maintain.

I am very excited to get a working D compiler in GNU Guix! This is a
nice bit of team work.

Pj.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] Add LDC.
  2015-12-29 11:18 [PATCH] Add LDC Roel Janssen
  2015-12-29 15:02 ` Ricardo Wurmus
@ 2015-12-29 15:42 ` Ricardo Wurmus
  1 sibling, 0 replies; 11+ messages in thread
From: Ricardo Wurmus @ 2015-12-29 15:42 UTC (permalink / raw)
  To: Roel Janssen; +Cc: guix-devel


One more thing:

> +       ("unzip" ,unzip) ;; needed for tests

Please just use one semicolon for margin comments like this.  Double
semicolon is only used for line comments.

~~ Ricardo

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] Add LDC.
  2015-12-29 15:02 ` Ricardo Wurmus
  2015-12-29 15:37   ` Pjotr Prins
@ 2016-01-04 14:23   ` Roel Janssen
  2016-01-05 10:06     ` Ricardo Wurmus
  1 sibling, 1 reply; 11+ messages in thread
From: Roel Janssen @ 2016-01-04 14:23 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: guix-devel

[-- Attachment #1: 0001-gnu-Add-LDC.patch --]
[-- Type: text/x-patch, Size: 10241 bytes --]

From 966a694d19450aa11bf668d7f28ce1bb31c61d7a Mon Sep 17 00:00:00 2001
From: Roel Janssen <roel@gnu.org>
Date: Mon, 4 Jan 2016 15:14:27 +0100
Subject: [PATCH] gnu: Add LDC.

* gnu/packages/ldc.scm: New file.
* gnu/packages/patches/ldc-disable-tests.patch: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add ldc.scm.
  (dist_patch_DATA): Add patch file.
---
 gnu-system.am                                |   2 +
 gnu/packages/ldc.scm                         | 123 +++++++++++++++++++++++++++
 gnu/packages/patches/ldc-disable-tests.patch |  90 ++++++++++++++++++++
 3 files changed, 215 insertions(+)
 create mode 100644 gnu/packages/ldc.scm
 create mode 100644 gnu/packages/patches/ldc-disable-tests.patch

diff --git a/gnu-system.am b/gnu-system.am
index 6626cd9..e92829d 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -174,6 +174,7 @@ GNU_SYSTEM_MODULES =				\
   gnu/packages/key-mon.scm			\
   gnu/packages/kodi.scm				\
   gnu/packages/language.scm			\
+  gnu/packages/ldc.scm				\
   gnu/packages/less.scm				\
   gnu/packages/lesstif.scm			\
   gnu/packages/libcanberra.scm			\
@@ -520,6 +521,7 @@ dist_patch_DATA =						\
   gnu/packages/patches/jasper-CVE-2008-3522.patch		\
   gnu/packages/patches/jbig2dec-ignore-testtest.patch		\
   gnu/packages/patches/kmod-module-directory.patch		\
+  gnu/packages/patches/ldc-disable-tests.patch			\
   gnu/packages/patches/lftp-dont-save-unknown-host-fingerprint.patch \
   gnu/packages/patches/liba52-enable-pic.patch			\
   gnu/packages/patches/liba52-link-with-libm.patch		\
diff --git a/gnu/packages/ldc.scm b/gnu/packages/ldc.scm
new file mode 100644
index 0000000..d904a0c
--- /dev/null
+++ b/gnu/packages/ldc.scm
@@ -0,0 +1,123 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015 Roel Janssen <roel@gnu.org>
+;;; Copyright © 2015 Pjotr Prins <pjotr.guix@thebird.nl>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages ldc)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system cmake)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages libedit)
+  #:use-module (gnu packages llvm)
+  #:use-module (gnu packages textutils)
+  #:use-module (gnu packages zip))
+
+(define-public ldc
+  (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)
+    (supported-systems '("x86_64-linux" "i686-linux")) ; other architectures are
+    (arguments                                         ; not supported (yet).
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'unpack-phobos-source
+           (lambda* (#:key inputs #:allow-other-keys)
+               (with-directory-excursion "runtime/phobos"
+                 (zero? (system* "tar" "xvf" (assoc-ref inputs "phobos-src")
+                                 "--strip-components=1")))))
+         (add-after 'unpack 'unpack-druntime-source
+           (lambda* (#:key inputs #:allow-other-keys)
+               (with-directory-excursion "runtime/druntime"
+                 (zero? (system* "tar" "xvzf" (assoc-ref inputs "druntime-src")
+                                 "--strip-components=1")))))
+         (add-after 'unpack 'unpack-dmd-testsuite-source
+           (lambda* (#:key inputs #:allow-other-keys)
+               (with-directory-excursion "tests/d2/dmd-testsuite"
+                 (zero? (system* "tar" "xvzf"
+                                 (assoc-ref inputs "dmd-testsuite-src")
+                                 "--strip-components=1")))))
+         (add-after
+          'unpack-phobos-source 'patch-phobos
+          (lambda* (#:key inputs #:allow-other-keys)
+            (begin
+              (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))
+         (add-after 'unpack-dmd-testsuite-source 'patch-dmd-testsuite
+          (lambda _
+            #t)))))
+    (inputs
+     `(("libconfig" ,libconfig)
+       ("libedit" ,libedit)
+       ("tzdata" ,tzdata)))
+    (native-inputs
+     `(("llvm" ,llvm)
+       ("clang" ,clang)
+       ("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 (list (search-patch "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.")
+    (license license:bsd-3))) ; with exceptions for the DMD frontend (custom) and code from GDC (GPLv2+)
diff --git a/gnu/packages/patches/ldc-disable-tests.patch b/gnu/packages/patches/ldc-disable-tests.patch
new file mode 100644
index 0000000..3f5e6c2
--- /dev/null
+++ b/gnu/packages/patches/ldc-disable-tests.patch
@@ -0,0 +1,90 @@
+This patch fixes a failing unit test by feeding buildNormalizedPath to the
+tzdata properly.  Three other tests are disabled, one assumes /root and the
+two others use networking.  Not bad out of almost 700 tests!
+
+by Pjotr Prins <pjotr.guix@thebird.nl>
+
+diff --git a/std/datetime.d b/std/datetime.d
+index 8e4ed3b..6c15bc5 100644
+--- a/std/datetime.d
++++ b/std/datetime.d
+@@ -28018,6 +28018,7 @@ public:
+             The default directory where the TZ Database files are. It's empty
+             for Windows, since Windows doesn't have them.
+           +/
++          
+         enum defaultTZDatabaseDir = "/usr/share/zoneinfo/";
+     }
+     else version(Windows)
+@@ -28069,14 +28070,13 @@ assert(tz.dstName == "PDT");
+         import std.range : retro;
+         import std.format : format;
+ 
+-        name = strip(name);
+-
+         enforce(tzDatabaseDir.exists(), new DateTimeException(format("Directory %s does not exist.", tzDatabaseDir)));
+         enforce(tzDatabaseDir.isDir, new DateTimeException(format("%s is not a directory.", tzDatabaseDir)));
+ 
+-        immutable file = buildNormalizedPath(tzDatabaseDir, name);
++        auto filename = "./" ~ strip(name); // make sure the prefix is not stripped
++        immutable file = buildNormalizedPath(tzDatabaseDir, filename);
+ 
+-        enforce(file.exists(), new DateTimeException(format("File %s does not exist.", file)));
++        enforce(file.exists(), new DateTimeException(format("File %s does not exist in %s.", file, tzDatabaseDir)));
+         enforce(file.isFile, new DateTimeException(format("%s is not a file.", file)));
+ 
+         auto tzFile = File(file);
+diff --git a/std/path.d b/std/path.d
+index 254d8f0..b0fc04d 100644
+--- a/std/path.d
++++ b/std/path.d
+@@ -3080,8 +3080,11 @@ unittest
+         }
+         else
+         {
++            pragma(msg, "test disabled on GNU Guix");
++/*
+             assert(expandTilde("~root") == "/root", expandTilde("~root"));
+             assert(expandTilde("~root/") == "/root/", expandTilde("~root/"));
++*/
+         }
+         assert(expandTilde("~Idontexist/hey") == "~Idontexist/hey");
+     }
+diff --git a/std/socket.d b/std/socket.d
+index b85d1c9..7fbf346 100644
+--- a/std/socket.d
++++ b/std/socket.d
+@@ -517,6 +517,8 @@ class Protocol
+ 
+ unittest
+ {
++    pragma(msg, "test disabled on GNU Guix");
++/*
+     // getprotobyname,number are unimplemented on Android
+     softUnittest({
+         Protocol proto = new Protocol;
+@@ -530,6 +532,7 @@ unittest
+         assert(proto.name == "tcp");
+         assert(proto.aliases.length == 1 && proto.aliases[0] == "TCP");
+     });
++*/
+ }
+ 
+ 
+@@ -859,6 +862,8 @@ class InternetHost
+ 
+ unittest
+ {
++    pragma(msg, "test disabled on GNU Guix");
++    /*
+     InternetHost ih = new InternetHost;
+ 
+     ih.getHostByAddr(0x7F_00_00_01);
+@@ -889,6 +894,7 @@ unittest
+         //      writefln("aliases[%d] = %s", i, s);
+         // }
+     });
++    */
+ }
+ 
+ 
-- 
2.5.0


[-- Attachment #2: Type: text/plain, Size: 10019 bytes --]

Hello Ricardo,

Sorry for the late reply.  I hope I followed the style rules better this
time.  Could you take another look?

Ricardo Wurmus writes:

>> From 02ac3c5d71e16dc0851018e04aec817e86c8597c Mon Sep 17 00:00:00 2001
>> From: Roel Janssen <roel@gnu.org>
>> Date: Tue, 29 Dec 2015 12:06:25 +0100
>> Subject: [PATCH] gnu: add LDC.
>
> Please capitalise “add”.

Done.  (I saw both variants in the commit log, and opted for the most
recent message at that time).

>> * gnu/packages/dlanguage.scm (ldc): New variable.
>> * gnu/packages/patches/ldc-disable-tests.patch: New file.
>> * gnu-system.am (GNU_SYSTEM_MODULES): Add (gnu packages dlanguage).
>> * gnu-system.am (dist_patch_DATA): Add patch file.
>
> Actually, since “dlanguage.scm” is a new file it should be something
> like this:
>
>   * gnu/packages/dlanguage.scm: New file.
>   * gnu/packages/patches/ldc-disable-tests.patch: New file.
>   * gnu-system.am (GNU_SYSTEM_MODULES): Add dlanguage.scm.
>   (dist_patch_DATA): Add patch file.
>
> Why “dlanguage.scm” and not just “d.scm”?

I renamed it to ldc.scm, following the example of GCC and LLVM compilers
for C. 

>> @@ -175,6 +175,7 @@ GNU_SYSTEM_MODULES =				\
>>    gnu/packages/key-mon.scm			\
>>    gnu/packages/kodi.scm				\
>>    gnu/packages/language.scm			\
>> +  gnu/packages/dlanguage.scm			\
>>    gnu/packages/less.scm				\
>>    gnu/packages/lesstif.scm			\
>>    gnu/packages/libcanberra.scm			\
>
> Could you please place this in alphabetic order?

I'm really sorry.  I should've catched this.  It's fixed now.

>> +(define-module (gnu packages dlanguage)
>> +  #:use-module ((guix licenses) #:prefix license:)
>> +  #:use-module (gnu packages)
>> +  #:use-module (guix packages)
>> +  #:use-module (guix download)
>> +  #:use-module (guix build-system cmake)
>> +  #:use-module (gnu packages textutils)
>> +  #:use-module (gnu packages base)
>> +  #:use-module (gnu packages libedit)
>> +  #:use-module (gnu packages llvm)
>> +  #:use-module (gnu packages zip)
>> +  #:use-module (guix git-download))
>
> It would be nice if (guix git-download) were up there with the other
> (guix ...) imports.

I removed (guix git-download) since we don't use git-download
anymore. Sorry, this shouldn't have been in there. Fixed now.

>> +
>> +(define-public ldc
>> +  (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)
>> +    (supported-systems '("x86_64-linux" "i686-linux"))
>
> Could you add a comment here?  Does upstream say that only these two
> systems are supported?

As Pjotr said, other platforms are not supported (yet) by the developers.

>> +    (arguments
>> +     `(#:tests? #t
>
> This is the default, so it’s not needed.

I removed it from the patch.

>> +       #:phases
>> +       (modify-phases %standard-phases
>> +         (add-after 'unpack 'unpack-phobos-source
>> +                    (lambda* (#:key source inputs #:allow-other-keys)
>> +                      (with-directory-excursion "runtime/phobos"
>> +                        (copy-file (assoc-ref inputs "phobos-src")
>> +                                   "phobos-src.tar")
>> +                        (zero? (system* "tar" "xvf" "phobos-src.tar"
>> +                                        "--strip-components=1")))))
>
> We usually align the “(lambda” with the first “d” in “add-after”.  Why
> is “source” among the keys when you don’t use it?

Yes, that looks better and leaves some more space on the lines.  I
removed "source" from the keys.

> Why copy the file
> from the inputs to some other place rather than using (assoc-ref inputs
> ...) as the argument to “tar”?  (I may have done the same in the icedtea
> packages—this probably could also be changed.)

Good question..  I applied your suggestion.

>> +         (add-after 'unpack 'unpack-druntime-source
> [...]
>> +         (add-after 'unpack 'unpack-dmd-testsuite-source
>
> I think all these three phases could be merged into one appropriately
> named phase.

I suppose they could.  But I'm not sure why this would be
benificial.  What's the benefit of merging them into one phase?  I like
the separation..

>> +         (add-after
>> +          'unpack-phobos-source 'patch-phobos
>> +          (lambda* (#:key source 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")))
>
> Please put the “(string-append” on a new line.

Done.

>> +            #t))
>> +         (add-after
>> +          'unpack-dmd-testsuite-source 'patch-dmd-testsuite
>> +          (lambda _
>> +            (substitute* "tests/d2/dmd-testsuite/Makefile"
>> +              (("/bin/bash") (which "bash")))
>> +            #t)))))
>> +    (inputs
>> +     `(("libconfig" ,libconfig)
>> +       ("libedit" ,libedit)
>> +       ("tzdata" ,tzdata)))  ;; needed for tests
>
> If it’s needed for tests shouldn’t it be among the native-inputs then?

As Pjotr said.  The comment was wrong, so I removed the comment.

>> +    (native-inputs
>> +     `(("llvm" ,llvm)
>
> The home page says that the compiler “relies on the LLVM Core libraries
> for code generation”.  Doesn’t this mean that llvm should be a regular
> input?

I checked the output binaries and they don't link to llvm.  This is
statically compiled into to executable.  It therefore doesn't need llvm
as a regular input.

>> +       ("clang" ,clang)
>> +       ("unzip" ,unzip) ;; needed for tests
>> +       ("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 (list (search-patch "ldc-disable-tests.patch")))))
>
> Why is this patch needed?  Can they not be disabled elsewhere?

See Pjotr's comment.  Unfortunately they cannot.

>> +       ("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 "https://github.com/ldc-developers/ldc")
>
> Is this really the project home page?  Or is it
> “http://wiki.dlang.org/LDC”?

You're right, it is http://wiki.dlang.org/LDC.  Fixed now.

>> +    (synopsis "LLVM compiler for the D programming language")
>
> Must “LLVM” be part of the synopsis?  I’d think of this as just a
> compiler, not an “LLVM compiler”.

There are three compilers for D.  One is a reference compiler (DMD), one
is GDC which is based on GCC, and one is LDC which is based on LLVM.

So to be clear about which of the three compilers it is, I think "LLVM"
should be part of the synopsis. 

>> +    (description
>> +     "LDC is a compiler for the D programming Language.  It is based on the
>> +latest DMD frontend and uses LLVM as backend.  LLVM provides a fast and modern
>> +backend for high quality code generation.  LDC is released under a BSD license
>> +with exceptions for the DMD frontend and code from GDC.  The development takes
>> +place mostly on x86-32 and x86-64 Linux and that is where LDC works best.")
>
> “D programming Language” —> “D programming language”.
> Please remove the third sentence (“LLVM provides...”) because it doesn’t
> really describe LDC.  Also the next sentence (“LDC is released
> under...”) should not be part of the description (that’s what the
> “license” field is there for).
>
> Also the last sentence probably isn’t a good fit for the description.
> It would make a good comment for the “supported-systems” field, though.

I added a comment to "supported-systems" and to "license".

>> +    (license license:bsd-3)))
>
> Please also mention in a comment the exceptions alluded to in the
> description.

Done.

>> diff --git a/gnu/packages/patches/ldc-disable-tests.patch b/gnu/packages/patches/ldc-disable-tests.patch
>> new file mode 100644
>> index 0000000..42e394d
>> --- /dev/null
>> +++ b/gnu/packages/patches/ldc-disable-tests.patch
>> @@ -0,0 +1,90 @@
>> +This patch fixes a failing unit test by feeding buildNormalizedPath to the
>> +tzdata properly. Three other tests are disables, one assumes /root and the
>> +two others use networking. Not bad out of almost 700 tests!
>
> Please use two spaces between sentences.
> s/disables/disabled/.
>
> Is there no other way to disable tests, e.g. by name or by passing some
> kind of variable to the build system?

I fixed the patch.

Not that I am aware of.  You could add the "(arguments `(#:tests? #f))"
to the package definition.

Thanks again for your time,
Roel Janssen

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH] Add LDC.
  2016-01-04 14:23   ` Roel Janssen
@ 2016-01-05 10:06     ` Ricardo Wurmus
  2016-01-05 14:48       ` Roel Janssen
  0 siblings, 1 reply; 11+ messages in thread
From: Ricardo Wurmus @ 2016-01-05 10:06 UTC (permalink / raw)
  To: Roel Janssen; +Cc: guix-devel


Roel Janssen <roel@gnu.org> writes:

> +(define-module (gnu packages ldc)
> +  #:use-module ((guix licenses) #:prefix license:)
> +  #:use-module (guix packages)
> +  #:use-module (guix download)
> +  #:use-module (guix build-system cmake)
> +  #:use-module (gnu packages)
> +  #:use-module (gnu packages base)
> +  #:use-module (gnu packages libedit)
> +  #:use-module (gnu packages llvm)
> +  #:use-module (gnu packages textutils)
> +  #:use-module (gnu packages zip))
> +
> +(define-public ldc
> +  (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)
> +    (supported-systems '("x86_64-linux" "i686-linux")) ; other architectures are
> +    (arguments                                         ; not supported (yet).

This comment would better be placed above the ‘(supported-systems...)’
line.  Having it be part of the ‘(arguments’ line as well is not nice.
As a line comment it would then start with a double-semicolon.

> +     `(#:phases
> +       (modify-phases %standard-phases
> +         (add-after 'unpack 'unpack-phobos-source
> +           (lambda* (#:key inputs #:allow-other-keys)
> +               (with-directory-excursion "runtime/phobos"
> +                 (zero? (system* "tar" "xvf" (assoc-ref inputs "phobos-src")
> +                                 "--strip-components=1")))))
> +         (add-after 'unpack 'unpack-druntime-source
> +           (lambda* (#:key inputs #:allow-other-keys)
> +               (with-directory-excursion "runtime/druntime"
> +                 (zero? (system* "tar" "xvzf" (assoc-ref inputs "druntime-src")
> +                                 "--strip-components=1")))))
> +         (add-after 'unpack 'unpack-dmd-testsuite-source
> +           (lambda* (#:key inputs #:allow-other-keys)
> +               (with-directory-excursion "tests/d2/dmd-testsuite"
> +                 (zero? (system* "tar" "xvzf"
> +                                 (assoc-ref inputs "dmd-testsuite-src")
> +                                 "--strip-components=1")))))

I still think that using one phase for unpacking additional tarballs
would totally suffice.  Something like this, maybe:

        (add-after 'unpack 'unpack-phobos-source
          (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")))))

It’s just a matter of taste, but I really find that your proposed three
phases look rather noisy with lots of boilerplate, which I don’t think
needs repeating.

> +         (add-after
> +          'unpack-phobos-source 'patch-phobos

Please pull the symbols onto the same line as “add-after”.

> +          (lambda* (#:key inputs #:allow-other-keys)
> +            (begin

“begin” is not needed in “lambda”.

> +              (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))


> +         (add-after 'unpack-dmd-testsuite-source 'patch-dmd-testsuite
> +          (lambda _
> +            #t)))))

I don’t think this phase is needed.

> +    (inputs
> +     `(("libconfig" ,libconfig)
> +       ("libedit" ,libedit)
> +       ("tzdata" ,tzdata)))
> +    (native-inputs
> +     `(("llvm" ,llvm)
> +       ("clang" ,clang)
> +       ("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 (list (search-patch "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.")
> +    (license license:bsd-3))) ; with exceptions for the DMD frontend (custom) and code from GDC (GPLv2+)

This comment is too long for a margin comment.  Better place it above
the ‘(license ...’ line (with double semicolon).

I don’t understand the comment.  What exceptions apply to the DMD
frontend?  What does “(custom)” mean?  Is it a different license?  If
this package contains code under different licenses it should be made
clear by providing a list of licenses:

    ;; Most of the code is released under BSD-3, except for code from
    ;; GDC (what is this?), which is released under GPLv2+, and the DMD
    ;; frontend, which is released under the “whatever” license.
    (license (list license:bsd-3
                   license:gpl2+
                   license:whatever-custom-is))

If there is no matching license value for “custom” you can use
“(license:non-copyleft uri)”, where “uri” is a string holding the URL
where the license can be read.

I think with these changes it’s okay.

~~ Ricardo

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] Add LDC.
  2016-01-05 10:06     ` Ricardo Wurmus
@ 2016-01-05 14:48       ` Roel Janssen
  2016-01-05 15:22         ` Ricardo Wurmus
  2016-02-27  6:20         ` Pjotr Prins
  0 siblings, 2 replies; 11+ messages in thread
From: Roel Janssen @ 2016-01-05 14:48 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: guix-devel

[-- Attachment #1: 0001-gnu-Add-LDC-v2.patch --]
[-- Type: text/x-patch, Size: 10014 bytes --]

From 2a07b6ca221a6466d05fcc434331748b80dc3809 Mon Sep 17 00:00:00 2001
From: Roel Janssen <roel@gnu.org>
Date: Tue, 5 Jan 2016 15:43:50 +0100
Subject: [PATCH] gnu: Add LDC.

* gnu/packages/ldc.scm: New file.
* gnu/packages/patches/ldc-disable-tests.patch: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add ldc.scm.
  (dist_patch_DATA): Add patch file.
---
 gnu-system.am                                |   2 +
 gnu/packages/ldc.scm                         | 118 +++++++++++++++++++++++++++
 gnu/packages/patches/ldc-disable-tests.patch |  90 ++++++++++++++++++++
 3 files changed, 210 insertions(+)
 create mode 100644 gnu/packages/ldc.scm
 create mode 100644 gnu/packages/patches/ldc-disable-tests.patch

diff --git a/gnu-system.am b/gnu-system.am
index 4788bc7..3dd49fe 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -174,6 +174,7 @@ GNU_SYSTEM_MODULES =				\
   gnu/packages/key-mon.scm			\
   gnu/packages/kodi.scm				\
   gnu/packages/language.scm			\
+  gnu/packages/ldc.scm				\
   gnu/packages/less.scm				\
   gnu/packages/lesstif.scm			\
   gnu/packages/libcanberra.scm			\
@@ -522,6 +523,7 @@ dist_patch_DATA =						\
   gnu/packages/patches/jasper-CVE-2008-3522.patch		\
   gnu/packages/patches/jbig2dec-ignore-testtest.patch		\
   gnu/packages/patches/kmod-module-directory.patch		\
+  gnu/packages/patches/ldc-disable-tests.patch			\
   gnu/packages/patches/lftp-dont-save-unknown-host-fingerprint.patch \
   gnu/packages/patches/liba52-enable-pic.patch			\
   gnu/packages/patches/liba52-link-with-libm.patch		\
diff --git a/gnu/packages/ldc.scm b/gnu/packages/ldc.scm
new file mode 100644
index 0000000..0bafad0
--- /dev/null
+++ b/gnu/packages/ldc.scm
@@ -0,0 +1,118 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015 Roel Janssen <roel@gnu.org>
+;;; Copyright © 2015 Pjotr Prins <pjotr.guix@thebird.nl>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages ldc)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system cmake)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages libedit)
+  #:use-module (gnu packages llvm)
+  #:use-module (gnu packages textutils)
+  #:use-module (gnu packages zip))
+
+(define-public ldc
+  (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-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)))
+    (native-inputs
+     `(("llvm" ,llvm)
+       ("clang" ,clang)
+       ("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 (list (search-patch "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:x11-style "http://www.boost.org/LICENSE_1_0.txt"))))
diff --git a/gnu/packages/patches/ldc-disable-tests.patch b/gnu/packages/patches/ldc-disable-tests.patch
new file mode 100644
index 0000000..3f5e6c2
--- /dev/null
+++ b/gnu/packages/patches/ldc-disable-tests.patch
@@ -0,0 +1,90 @@
+This patch fixes a failing unit test by feeding buildNormalizedPath to the
+tzdata properly.  Three other tests are disabled, one assumes /root and the
+two others use networking.  Not bad out of almost 700 tests!
+
+by Pjotr Prins <pjotr.guix@thebird.nl>
+
+diff --git a/std/datetime.d b/std/datetime.d
+index 8e4ed3b..6c15bc5 100644
+--- a/std/datetime.d
++++ b/std/datetime.d
+@@ -28018,6 +28018,7 @@ public:
+             The default directory where the TZ Database files are. It's empty
+             for Windows, since Windows doesn't have them.
+           +/
++          
+         enum defaultTZDatabaseDir = "/usr/share/zoneinfo/";
+     }
+     else version(Windows)
+@@ -28069,14 +28070,13 @@ assert(tz.dstName == "PDT");
+         import std.range : retro;
+         import std.format : format;
+ 
+-        name = strip(name);
+-
+         enforce(tzDatabaseDir.exists(), new DateTimeException(format("Directory %s does not exist.", tzDatabaseDir)));
+         enforce(tzDatabaseDir.isDir, new DateTimeException(format("%s is not a directory.", tzDatabaseDir)));
+ 
+-        immutable file = buildNormalizedPath(tzDatabaseDir, name);
++        auto filename = "./" ~ strip(name); // make sure the prefix is not stripped
++        immutable file = buildNormalizedPath(tzDatabaseDir, filename);
+ 
+-        enforce(file.exists(), new DateTimeException(format("File %s does not exist.", file)));
++        enforce(file.exists(), new DateTimeException(format("File %s does not exist in %s.", file, tzDatabaseDir)));
+         enforce(file.isFile, new DateTimeException(format("%s is not a file.", file)));
+ 
+         auto tzFile = File(file);
+diff --git a/std/path.d b/std/path.d
+index 254d8f0..b0fc04d 100644
+--- a/std/path.d
++++ b/std/path.d
+@@ -3080,8 +3080,11 @@ unittest
+         }
+         else
+         {
++            pragma(msg, "test disabled on GNU Guix");
++/*
+             assert(expandTilde("~root") == "/root", expandTilde("~root"));
+             assert(expandTilde("~root/") == "/root/", expandTilde("~root/"));
++*/
+         }
+         assert(expandTilde("~Idontexist/hey") == "~Idontexist/hey");
+     }
+diff --git a/std/socket.d b/std/socket.d
+index b85d1c9..7fbf346 100644
+--- a/std/socket.d
++++ b/std/socket.d
+@@ -517,6 +517,8 @@ class Protocol
+ 
+ unittest
+ {
++    pragma(msg, "test disabled on GNU Guix");
++/*
+     // getprotobyname,number are unimplemented on Android
+     softUnittest({
+         Protocol proto = new Protocol;
+@@ -530,6 +532,7 @@ unittest
+         assert(proto.name == "tcp");
+         assert(proto.aliases.length == 1 && proto.aliases[0] == "TCP");
+     });
++*/
+ }
+ 
+ 
+@@ -859,6 +862,8 @@ class InternetHost
+ 
+ unittest
+ {
++    pragma(msg, "test disabled on GNU Guix");
++    /*
+     InternetHost ih = new InternetHost;
+ 
+     ih.getHostByAddr(0x7F_00_00_01);
+@@ -889,6 +894,7 @@ unittest
+         //      writefln("aliases[%d] = %s", i, s);
+         // }
+     });
++    */
+ }
+ 
+ 
-- 
2.5.0


[-- Attachment #2: Type: text/plain, Size: 7796 bytes --]

Hello Ricardo,

Thanks again for your time and helpful response.  I hope this version of
the patch is fine.

Ricardo Wurmus writes:

> Roel Janssen <roel@gnu.org> writes:
>
>> +(define-module (gnu packages ldc)
>> +  #:use-module ((guix licenses) #:prefix license:)
>> +  #:use-module (guix packages)
>> +  #:use-module (guix download)
>> +  #:use-module (guix build-system cmake)
>> +  #:use-module (gnu packages)
>> +  #:use-module (gnu packages base)
>> +  #:use-module (gnu packages libedit)
>> +  #:use-module (gnu packages llvm)
>> +  #:use-module (gnu packages textutils)
>> +  #:use-module (gnu packages zip))
>> +
>> +(define-public ldc
>> +  (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)
>> +    (supported-systems '("x86_64-linux" "i686-linux")) ; other architectures are
>> +    (arguments                                         ; not supported (yet).
>
> This comment would better be placed above the ‘(supported-systems...)’
> line.  Having it be part of the ‘(arguments’ line as well is not nice.
> As a line comment it would then start with a double-semicolon.

Ok.

>> +     `(#:phases
>> +       (modify-phases %standard-phases
>> +         (add-after 'unpack 'unpack-phobos-source
>> +           (lambda* (#:key inputs #:allow-other-keys)
>> +               (with-directory-excursion "runtime/phobos"
>> +                 (zero? (system* "tar" "xvf" (assoc-ref inputs "phobos-src")
>> +                                 "--strip-components=1")))))
>> +         (add-after 'unpack 'unpack-druntime-source
>> +           (lambda* (#:key inputs #:allow-other-keys)
>> +               (with-directory-excursion "runtime/druntime"
>> +                 (zero? (system* "tar" "xvzf" (assoc-ref inputs "druntime-src")
>> +                                 "--strip-components=1")))))
>> +         (add-after 'unpack 'unpack-dmd-testsuite-source
>> +           (lambda* (#:key inputs #:allow-other-keys)
>> +               (with-directory-excursion "tests/d2/dmd-testsuite"
>> +                 (zero? (system* "tar" "xvzf"
>> +                                 (assoc-ref inputs "dmd-testsuite-src")
>> +                                 "--strip-components=1")))))
>
> I still think that using one phase for unpacking additional tarballs
> would totally suffice.  Something like this, maybe:
>
>         (add-after 'unpack 'unpack-phobos-source
>           (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")))))
>
> It’s just a matter of taste, but I really find that your proposed three
> phases look rather noisy with lots of boilerplate, which I don’t think
> needs repeating.

After seeing how you would go about this I totally agree.  I envisioned
three times the (with-directory-excursion) part, which wasn't much
better than what I had.

This looks really good.  Thanks for your guidance!

>> +         (add-after
>> +          'unpack-phobos-source 'patch-phobos
>
> Please pull the symbols onto the same line as “add-after”.

Ok.

>> +          (lambda* (#:key inputs #:allow-other-keys)
>> +            (begin
>
> “begin” is not needed in “lambda”.

Cool. I didn't know that, thanks!

>> +              (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))
>
>
>> +         (add-after 'unpack-dmd-testsuite-source 'patch-dmd-testsuite
>> +          (lambda _
>> +            #t)))))
>
> I don’t think this phase is needed.

You're right.

>> +    (inputs
>> +     `(("libconfig" ,libconfig)
>> +       ("libedit" ,libedit)
>> +       ("tzdata" ,tzdata)))
>> +    (native-inputs
>> +     `(("llvm" ,llvm)
>> +       ("clang" ,clang)
>> +       ("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 (list (search-patch "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.")
>> +    (license license:bsd-3))) ; with exceptions for the DMD frontend (custom) and code from GDC (GPLv2+)
>
> This comment is too long for a margin comment.  Better place it above
> the ‘(license ...’ line (with double semicolon).

Done.

> I don’t understand the comment.  What exceptions apply to the DMD
> frontend?  What does “(custom)” mean?  Is it a different license?  If
> this package contains code under different licenses it should be made
> clear by providing a list of licenses:
>
>     ;; Most of the code is released under BSD-3, except for code from
>     ;; GDC (what is this?), which is released under GPLv2+, and the DMD
>     ;; frontend, which is released under the “whatever” license.
>     (license (list license:bsd-3
>                    license:gpl2+
>                    license:whatever-custom-is))
>
> If there is no matching license value for “custom” you can use
> “(license:non-copyleft uri)”, where “uri” is a string holding the URL
> where the license can be read.
>
> I think with these changes it’s okay.

It is the Boost Software License v1.  So I peeked at boost.scm and
copied that license (license:x11-style ...).

The attached patch should be good, I believe.  I hope the description
for the licenses is fine now.  The LDC developers have just copied
source code files from GDC.

Thanks,
Roel Janssen

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH] Add LDC.
  2016-01-05 14:48       ` Roel Janssen
@ 2016-01-05 15:22         ` Ricardo Wurmus
  2016-01-05 18:46           ` Roel Janssen
  2016-02-27  6:20         ` Pjotr Prins
  1 sibling, 1 reply; 11+ messages in thread
From: Ricardo Wurmus @ 2016-01-05 15:22 UTC (permalink / raw)
  To: Roel Janssen; +Cc: guix-devel


Roel Janssen <roel@gnu.org> writes:

> Thanks again for your time and helpful response.  I hope this version of
> the patch is fine.

It is :)  Thanks for your patience!

> It is the Boost Software License v1.  So I peeked at boost.scm and
> copied that license (license:x11-style ...).
>
> The attached patch should be good, I believe.  I hope the description
> for the licenses is fine now.  The LDC developers have just copied
> source code files from GDC.

Looks good to me.  There’s a tiny style error (mixed quotes in a
comment), which I will fix up before pushing the patch in a moment.

Thanks again for the patch!

~~ Ricardo

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] Add LDC.
  2016-01-05 15:22         ` Ricardo Wurmus
@ 2016-01-05 18:46           ` Roel Janssen
  0 siblings, 0 replies; 11+ messages in thread
From: Roel Janssen @ 2016-01-05 18:46 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: guix-devel


Ricardo Wurmus writes:

> Roel Janssen <roel@gnu.org> writes:
>
>> Thanks again for your time and helpful response.  I hope this version of
>> the patch is fine.
>
> It is :)  Thanks for your patience!
>
>> It is the Boost Software License v1.  So I peeked at boost.scm and
>> copied that license (license:x11-style ...).
>>
>> The attached patch should be good, I believe.  I hope the description
>> for the licenses is fine now.  The LDC developers have just copied
>> source code files from GDC.
>
> Looks good to me.  There’s a tiny style error (mixed quotes in a
> comment), which I will fix up before pushing the patch in a moment.
>
> Thanks again for the patch!

Oops. I will take extra care for this next time.

Thank you!

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] Add LDC.
  2016-01-05 14:48       ` Roel Janssen
  2016-01-05 15:22         ` Ricardo Wurmus
@ 2016-02-27  6:20         ` Pjotr Prins
  2016-02-29  9:58           ` Ludovic Courtès
  1 sibling, 1 reply; 11+ messages in thread
From: Pjotr Prins @ 2016-02-27  6:20 UTC (permalink / raw)
  To: Roel Janssen; +Cc: guix-devel

Announcement:

  The ldc D compiler has been added to GNU Guix
  http://forum.dlang.org/thread/zeeytgxkdkjdeebqozfz@forum.dlang.org
 
Right before ldc 1.0 going into alpha. Great timing :)

  LDC 1.0.0-alpha1 has been released!
  http://forum.dlang.org/thread/ndafedsqoqxkhqpbkfja@forum.dlang.org

Pj.

On Tue, Jan 05, 2016 at 03:48:33PM +0100, Roel Janssen wrote:
> From 2a07b6ca221a6466d05fcc434331748b80dc3809 Mon Sep 17 00:00:00 2001
> From: Roel Janssen <roel@gnu.org>
> Date: Tue, 5 Jan 2016 15:43:50 +0100
> Subject: [PATCH] gnu: Add LDC.
> 
> * gnu/packages/ldc.scm: New file.
> * gnu/packages/patches/ldc-disable-tests.patch: New file.
> * gnu-system.am (GNU_SYSTEM_MODULES): Add ldc.scm.
>   (dist_patch_DATA): Add patch file.
> ---
>  gnu-system.am                                |   2 +
>  gnu/packages/ldc.scm                         | 118 +++++++++++++++++++++++++++
>  gnu/packages/patches/ldc-disable-tests.patch |  90 ++++++++++++++++++++
>  3 files changed, 210 insertions(+)
>  create mode 100644 gnu/packages/ldc.scm
>  create mode 100644 gnu/packages/patches/ldc-disable-tests.patch
> 
> diff --git a/gnu-system.am b/gnu-system.am
> index 4788bc7..3dd49fe 100644
> --- a/gnu-system.am
> +++ b/gnu-system.am
> @@ -174,6 +174,7 @@ GNU_SYSTEM_MODULES =				\
>    gnu/packages/key-mon.scm			\
>    gnu/packages/kodi.scm				\
>    gnu/packages/language.scm			\
> +  gnu/packages/ldc.scm				\
>    gnu/packages/less.scm				\
>    gnu/packages/lesstif.scm			\
>    gnu/packages/libcanberra.scm			\
> @@ -522,6 +523,7 @@ dist_patch_DATA =						\
>    gnu/packages/patches/jasper-CVE-2008-3522.patch		\
>    gnu/packages/patches/jbig2dec-ignore-testtest.patch		\
>    gnu/packages/patches/kmod-module-directory.patch		\
> +  gnu/packages/patches/ldc-disable-tests.patch			\
>    gnu/packages/patches/lftp-dont-save-unknown-host-fingerprint.patch \
>    gnu/packages/patches/liba52-enable-pic.patch			\
>    gnu/packages/patches/liba52-link-with-libm.patch		\
> diff --git a/gnu/packages/ldc.scm b/gnu/packages/ldc.scm
> new file mode 100644
> index 0000000..0bafad0
> --- /dev/null
> +++ b/gnu/packages/ldc.scm
> @@ -0,0 +1,118 @@
> +;;; GNU Guix --- Functional package management for GNU
> +;;; Copyright © 2015 Roel Janssen <roel@gnu.org>
> +;;; Copyright © 2015 Pjotr Prins <pjotr.guix@thebird.nl>
> +;;;
> +;;; 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 <http://www.gnu.org/licenses/>.
> +
> +(define-module (gnu packages ldc)
> +  #:use-module ((guix licenses) #:prefix license:)
> +  #:use-module (guix packages)
> +  #:use-module (guix download)
> +  #:use-module (guix build-system cmake)
> +  #:use-module (gnu packages)
> +  #:use-module (gnu packages base)
> +  #:use-module (gnu packages libedit)
> +  #:use-module (gnu packages llvm)
> +  #:use-module (gnu packages textutils)
> +  #:use-module (gnu packages zip))
> +
> +(define-public ldc
> +  (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-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)))
> +    (native-inputs
> +     `(("llvm" ,llvm)
> +       ("clang" ,clang)
> +       ("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 (list (search-patch "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:x11-style "http://www.boost.org/LICENSE_1_0.txt"))))
> diff --git a/gnu/packages/patches/ldc-disable-tests.patch b/gnu/packages/patches/ldc-disable-tests.patch
> new file mode 100644
> index 0000000..3f5e6c2
> --- /dev/null
> +++ b/gnu/packages/patches/ldc-disable-tests.patch
> @@ -0,0 +1,90 @@
> +This patch fixes a failing unit test by feeding buildNormalizedPath to the
> +tzdata properly.  Three other tests are disabled, one assumes /root and the
> +two others use networking.  Not bad out of almost 700 tests!
> +
> +by Pjotr Prins <pjotr.guix@thebird.nl>
> +
> +diff --git a/std/datetime.d b/std/datetime.d
> +index 8e4ed3b..6c15bc5 100644
> +--- a/std/datetime.d
> ++++ b/std/datetime.d
> +@@ -28018,6 +28018,7 @@ public:
> +             The default directory where the TZ Database files are. It's empty
> +             for Windows, since Windows doesn't have them.
> +           +/
> ++          
> +         enum defaultTZDatabaseDir = "/usr/share/zoneinfo/";
> +     }
> +     else version(Windows)
> +@@ -28069,14 +28070,13 @@ assert(tz.dstName == "PDT");
> +         import std.range : retro;
> +         import std.format : format;
> + 
> +-        name = strip(name);
> +-
> +         enforce(tzDatabaseDir.exists(), new DateTimeException(format("Directory %s does not exist.", tzDatabaseDir)));
> +         enforce(tzDatabaseDir.isDir, new DateTimeException(format("%s is not a directory.", tzDatabaseDir)));
> + 
> +-        immutable file = buildNormalizedPath(tzDatabaseDir, name);
> ++        auto filename = "./" ~ strip(name); // make sure the prefix is not stripped
> ++        immutable file = buildNormalizedPath(tzDatabaseDir, filename);
> + 
> +-        enforce(file.exists(), new DateTimeException(format("File %s does not exist.", file)));
> ++        enforce(file.exists(), new DateTimeException(format("File %s does not exist in %s.", file, tzDatabaseDir)));
> +         enforce(file.isFile, new DateTimeException(format("%s is not a file.", file)));
> + 
> +         auto tzFile = File(file);
> +diff --git a/std/path.d b/std/path.d
> +index 254d8f0..b0fc04d 100644
> +--- a/std/path.d
> ++++ b/std/path.d
> +@@ -3080,8 +3080,11 @@ unittest
> +         }
> +         else
> +         {
> ++            pragma(msg, "test disabled on GNU Guix");
> ++/*
> +             assert(expandTilde("~root") == "/root", expandTilde("~root"));
> +             assert(expandTilde("~root/") == "/root/", expandTilde("~root/"));
> ++*/
> +         }
> +         assert(expandTilde("~Idontexist/hey") == "~Idontexist/hey");
> +     }
> +diff --git a/std/socket.d b/std/socket.d
> +index b85d1c9..7fbf346 100644
> +--- a/std/socket.d
> ++++ b/std/socket.d
> +@@ -517,6 +517,8 @@ class Protocol
> + 
> + unittest
> + {
> ++    pragma(msg, "test disabled on GNU Guix");
> ++/*
> +     // getprotobyname,number are unimplemented on Android
> +     softUnittest({
> +         Protocol proto = new Protocol;
> +@@ -530,6 +532,7 @@ unittest
> +         assert(proto.name == "tcp");
> +         assert(proto.aliases.length == 1 && proto.aliases[0] == "TCP");
> +     });
> ++*/
> + }
> + 
> + 
> +@@ -859,6 +862,8 @@ class InternetHost
> + 
> + unittest
> + {
> ++    pragma(msg, "test disabled on GNU Guix");
> ++    /*
> +     InternetHost ih = new InternetHost;
> + 
> +     ih.getHostByAddr(0x7F_00_00_01);
> +@@ -889,6 +894,7 @@ unittest
> +         //      writefln("aliases[%d] = %s", i, s);
> +         // }
> +     });
> ++    */
> + }
> + 
> + 
> -- 
> 2.5.0
> 

> Hello Ricardo,
> 
> Thanks again for your time and helpful response.  I hope this version of
> the patch is fine.
> 
> Ricardo Wurmus writes:
> 
> > Roel Janssen <roel@gnu.org> writes:
> >
> >> +(define-module (gnu packages ldc)
> >> +  #:use-module ((guix licenses) #:prefix license:)
> >> +  #:use-module (guix packages)
> >> +  #:use-module (guix download)
> >> +  #:use-module (guix build-system cmake)
> >> +  #:use-module (gnu packages)
> >> +  #:use-module (gnu packages base)
> >> +  #:use-module (gnu packages libedit)
> >> +  #:use-module (gnu packages llvm)
> >> +  #:use-module (gnu packages textutils)
> >> +  #:use-module (gnu packages zip))
> >> +
> >> +(define-public ldc
> >> +  (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)
> >> +    (supported-systems '("x86_64-linux" "i686-linux")) ; other architectures are
> >> +    (arguments                                         ; not supported (yet).
> >
> > This comment would better be placed above the ‘(supported-systems...)’
> > line.  Having it be part of the ‘(arguments’ line as well is not nice.
> > As a line comment it would then start with a double-semicolon.
> 
> Ok.
> 
> >> +     `(#:phases
> >> +       (modify-phases %standard-phases
> >> +         (add-after 'unpack 'unpack-phobos-source
> >> +           (lambda* (#:key inputs #:allow-other-keys)
> >> +               (with-directory-excursion "runtime/phobos"
> >> +                 (zero? (system* "tar" "xvf" (assoc-ref inputs "phobos-src")
> >> +                                 "--strip-components=1")))))
> >> +         (add-after 'unpack 'unpack-druntime-source
> >> +           (lambda* (#:key inputs #:allow-other-keys)
> >> +               (with-directory-excursion "runtime/druntime"
> >> +                 (zero? (system* "tar" "xvzf" (assoc-ref inputs "druntime-src")
> >> +                                 "--strip-components=1")))))
> >> +         (add-after 'unpack 'unpack-dmd-testsuite-source
> >> +           (lambda* (#:key inputs #:allow-other-keys)
> >> +               (with-directory-excursion "tests/d2/dmd-testsuite"
> >> +                 (zero? (system* "tar" "xvzf"
> >> +                                 (assoc-ref inputs "dmd-testsuite-src")
> >> +                                 "--strip-components=1")))))
> >
> > I still think that using one phase for unpacking additional tarballs
> > would totally suffice.  Something like this, maybe:
> >
> >         (add-after 'unpack 'unpack-phobos-source
> >           (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")))))
> >
> > It’s just a matter of taste, but I really find that your proposed three
> > phases look rather noisy with lots of boilerplate, which I don’t think
> > needs repeating.
> 
> After seeing how you would go about this I totally agree.  I envisioned
> three times the (with-directory-excursion) part, which wasn't much
> better than what I had.
> 
> This looks really good.  Thanks for your guidance!
> 
> >> +         (add-after
> >> +          'unpack-phobos-source 'patch-phobos
> >
> > Please pull the symbols onto the same line as “add-after”.
> 
> Ok.
> 
> >> +          (lambda* (#:key inputs #:allow-other-keys)
> >> +            (begin
> >
> > “begin” is not needed in “lambda”.
> 
> Cool. I didn't know that, thanks!
> 
> >> +              (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))
> >
> >
> >> +         (add-after 'unpack-dmd-testsuite-source 'patch-dmd-testsuite
> >> +          (lambda _
> >> +            #t)))))
> >
> > I don’t think this phase is needed.
> 
> You're right.
> 
> >> +    (inputs
> >> +     `(("libconfig" ,libconfig)
> >> +       ("libedit" ,libedit)
> >> +       ("tzdata" ,tzdata)))
> >> +    (native-inputs
> >> +     `(("llvm" ,llvm)
> >> +       ("clang" ,clang)
> >> +       ("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 (list (search-patch "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.")
> >> +    (license license:bsd-3))) ; with exceptions for the DMD frontend (custom) and code from GDC (GPLv2+)
> >
> > This comment is too long for a margin comment.  Better place it above
> > the ‘(license ...’ line (with double semicolon).
> 
> Done.
> 
> > I don’t understand the comment.  What exceptions apply to the DMD
> > frontend?  What does “(custom)” mean?  Is it a different license?  If
> > this package contains code under different licenses it should be made
> > clear by providing a list of licenses:
> >
> >     ;; Most of the code is released under BSD-3, except for code from
> >     ;; GDC (what is this?), which is released under GPLv2+, and the DMD
> >     ;; frontend, which is released under the “whatever” license.
> >     (license (list license:bsd-3
> >                    license:gpl2+
> >                    license:whatever-custom-is))
> >
> > If there is no matching license value for “custom” you can use
> > “(license:non-copyleft uri)”, where “uri” is a string holding the URL
> > where the license can be read.
> >
> > I think with these changes it’s okay.
> 
> It is the Boost Software License v1.  So I peeked at boost.scm and
> copied that license (license:x11-style ...).
> 
> The attached patch should be good, I believe.  I hope the description
> for the licenses is fine now.  The LDC developers have just copied
> source code files from GDC.
> 
> Thanks,
> Roel Janssen


-- 

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] Add LDC.
  2016-02-27  6:20         ` Pjotr Prins
@ 2016-02-29  9:58           ` Ludovic Courtès
  0 siblings, 0 replies; 11+ messages in thread
From: Ludovic Courtès @ 2016-02-29  9:58 UTC (permalink / raw)
  To: Pjotr Prins; +Cc: guix-devel

Pjotr Prins <pjotr.public12@thebird.nl> skribis:

> Announcement:
>
>   The ldc D compiler has been added to GNU Guix
>   http://forum.dlang.org/thread/zeeytgxkdkjdeebqozfz@forum.dlang.org

Heheh, thanks for spreading the word!

Ludo’.

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2016-02-29  9:58 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-12-29 11:18 [PATCH] Add LDC Roel Janssen
2015-12-29 15:02 ` Ricardo Wurmus
2015-12-29 15:37   ` Pjotr Prins
2016-01-04 14:23   ` Roel Janssen
2016-01-05 10:06     ` Ricardo Wurmus
2016-01-05 14:48       ` Roel Janssen
2016-01-05 15:22         ` Ricardo Wurmus
2016-01-05 18:46           ` Roel Janssen
2016-02-27  6:20         ` Pjotr Prins
2016-02-29  9:58           ` Ludovic Courtès
2015-12-29 15:42 ` Ricardo Wurmus

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).