unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* [PATCH] gnu: Add ECL.
@ 2015-02-11 23:27 Taylan Ulrich Bayırlı/Kammer
  2015-02-12  1:43 ` Mark H Weaver
  2015-02-12 20:37 ` Ludovic Courtès
  0 siblings, 2 replies; 7+ messages in thread
From: Taylan Ulrich Bayırlı/Kammer @ 2015-02-11 23:27 UTC (permalink / raw)
  To: guix-devel

[-- Attachment #1: Type: text/plain, Size: 342 bytes --]

The license declaration of this recipe is noteworthy.  I diligently
commented about the places each license appears in, from the non-LGPL2
places mentioned in the "Copyright" file, so as to make it easier to
verify nothing has been left out.  Tell me if I overdid it; I couldn't
see a better way to keep some sanity amid the license jungle.


[-- Attachment #2: patch --]
[-- Type: text/x-diff, Size: 4870 bytes --]

From 8852980acdfbcec00cb794fa924e03a95d60d59f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Taylan=20Ulrich=20Bay=C4=B1rl=C4=B1/Kammer?=
 <taylanbayirli@gmail.com>
Date: Thu, 12 Feb 2015 00:15:02 +0100
Subject: [PATCH] gnu: Add ECL.

* gnu/packages/lisp.scm (ecl): New variable.
---
 gnu/packages/lisp.scm | 74 ++++++++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 71 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 0bacac4..2e5770a 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 John Darrington <jmd@gnu.org>
+;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -20,13 +21,17 @@
   #:use-module (gnu packages)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix utils)
+  #:use-module (guix build-system gnu)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages texlive)
   #:use-module (gnu packages m4)
-  #:use-module (guix download)
-  #:use-module (guix utils)
-  #:use-module (guix build-system gnu))
+  #:use-module (gnu packages which)
+  #:use-module (gnu packages multiprecision)
+  #:use-module (gnu packages bdw-gc)
+  #:use-module (gnu packages libffi))
 
 (define-public gcl
   (package
@@ -81,3 +86,66 @@ stratified garbage collection strategy, a source-level debugger and a built-in
 interface to the Tk widget system.")
     (license license:lgpl2.0+)))
 
+(define-public ecl
+  (package
+    (name "ecl")
+    (version "13.5.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/ecls/ecls/"
+                           (version-prefix version 2) "/ecl-" version ".tgz"))
+       (sha256
+        (base32 "18ic8w9sdl0dh3kmyc9lsrafikrd9cg1jkhhr25p9saz0v75f77r"))))
+    (build-system gnu-build-system)
+    (native-inputs `(("which" ,which)))
+    (inputs `(("gmp" ,gmp)
+              ("libatomic-ops" ,libatomic-ops)
+              ("libgc" ,libgc)
+              ("libffi" ,libffi)))
+    (arguments
+     '(#:phases
+       ;; The test-suite seems to assume that ECL is installed.  So re-order
+       ;; the phases, then reference the installed executable.
+       (let* ((phases %standard-phases)
+              (check-phase (assq-ref phases 'check))
+              (phases (alist-delete 'check phases))
+              (phases (alist-cons-after 'install 'check check-phase phases))
+              (phases
+               (alist-cons-before
+                'check 'pre-check
+                (lambda* (#:key outputs #:allow-other-keys)
+                  (substitute* '("build/tests/Makefile")
+                    (("ECL=ecl")
+                     (string-append
+                      "ECL=" (assoc-ref outputs "out") "/bin/ecl"))))
+                phases)))
+         phases)
+       ;; Parallel builds explicitly not supported:
+       ;; http://sourceforge.net/p/ecls/bugs/98/
+       #:make-flags '("--jobs=1")))
+    (home-page "http://ecls.sourceforge.net/")
+    (synopsis "Embeddable Common Lisp")
+    (description "ECL is an implementation of the Common Lisp language as
+defined by the ANSI X3J13 specification.  Its most relevant features are: a
+bytecode compiler and interpreter, being able to compile Common Lisp with any
+C/C++ compiler, being able to build standalone executables and libraries, and
+supporting ASDF, Sockets, Gray streams, MOP, and other useful components.")
+    ;; The file "Copyright" points to some files and directories which aren't
+    ;; under the lgpl2.0+ and instead contain many different licenses.  The
+    ;; comments below should exhaust those files and directories, except for
+    ;; the contrib/unicode/ directory whose .lisp files have no copyright or
+    ;; license notice.
+    (license
+     (list
+      license:lgpl2.0+                  ;contrib/: encodings, bytecomp,
+                                        ;ecl-cdb, win32
+      (license:x11-style "file://src/lsp/loop2.lsp")
+      license:public-domain             ;src/lsp/: pprint.lsp, format.lsp,
+                                        ;profile, serve-event, sockets
+      license:expat                     ;contrib/: asdf, cl-simd, quicklisp
+      license:x11                       ;contrib/: deflate
+      (license:bsd-style "file://contrib/defsystem/defsystem.lisp")
+      license:bsd-2                     ;contrib/: ecl-curl
+      (license:x11-style "file://contrib/rt/rt.lisp")
+      (license:bsd-style "file://src/clx/clx.lisp"))))) ;TI License
-- 
2.2.1


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

* Re: [PATCH] gnu: Add ECL.
  2015-02-11 23:27 [PATCH] gnu: Add ECL Taylan Ulrich Bayırlı/Kammer
@ 2015-02-12  1:43 ` Mark H Weaver
  2015-02-12  9:17   ` Taylan Ulrich Bayırlı/Kammer
  2015-02-12 20:37 ` Ludovic Courtès
  1 sibling, 1 reply; 7+ messages in thread
From: Mark H Weaver @ 2015-02-12  1:43 UTC (permalink / raw)
  To: Taylan Ulrich "Bayırlı/Kammer"; +Cc: guix-devel

taylanbayirli@gmail.com (Taylan Ulrich "Bayırlı/Kammer") writes:

> The license declaration of this recipe is noteworthy.  I diligently
> commented about the places each license appears in, from the non-LGPL2
> places mentioned in the "Copyright" file, so as to make it easier to
> verify nothing has been left out.  Tell me if I overdid it; I couldn't
> see a better way to keep some sanity amid the license jungle.
>
>
> From 8852980acdfbcec00cb794fa924e03a95d60d59f Mon Sep 17 00:00:00 2001
> From: =?UTF-8?q?Taylan=20Ulrich=20Bay=C4=B1rl=C4=B1/Kammer?=
>  <taylanbayirli@gmail.com>
> Date: Thu, 12 Feb 2015 00:15:02 +0100
> Subject: [PATCH] gnu: Add ECL.
>
> * gnu/packages/lisp.scm (ecl): New variable.
> ---
>  gnu/packages/lisp.scm | 74 ++++++++++++++++++++++++++++++++++++++++++++++++---
>  1 file changed, 71 insertions(+), 3 deletions(-)
>
>
> diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
> index 0bacac4..2e5770a 100644
> --- a/gnu/packages/lisp.scm
> +++ b/gnu/packages/lisp.scm
> @@ -1,5 +1,6 @@
>  ;;; GNU Guix --- Functional package management for GNU
>  ;;; Copyright © 2014 John Darrington <jmd@gnu.org>
> +;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
>  ;;;
>  ;;; This file is part of GNU Guix.
>  ;;;
> @@ -20,13 +21,17 @@
>    #:use-module (gnu packages)
>    #:use-module ((guix licenses) #:prefix license:)
>    #:use-module (guix packages)
> +  #:use-module (guix download)
> +  #:use-module (guix utils)
> +  #:use-module (guix build-system gnu)
>    #:use-module (gnu packages readline)
>    #:use-module (gnu packages texinfo)
>    #:use-module (gnu packages texlive)
>    #:use-module (gnu packages m4)
> -  #:use-module (guix download)
> -  #:use-module (guix utils)
> -  #:use-module (guix build-system gnu))
> +  #:use-module (gnu packages which)
> +  #:use-module (gnu packages multiprecision)
> +  #:use-module (gnu packages bdw-gc)
> +  #:use-module (gnu packages libffi))
>  
>  (define-public gcl
>    (package

In general, it's probably better to avoid unnecessary rearrangements
like this, since it will tend to cause conflicts when other people have
pending patches in the same module.

> @@ -81,3 +86,66 @@ stratified garbage collection strategy, a source-level debugger and a built-in
>  interface to the Tk widget system.")
>      (license license:lgpl2.0+)))
>  
> +(define-public ecl
> +  (package
> +    (name "ecl")
> +    (version "13.5.1")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (string-append "mirror://sourceforge/ecls/ecls/"
> +                           (version-prefix version 2) "/ecl-" version ".tgz"))

Our convention is to write (version-major+minor version) since it
results in more readable code, even though it is a few more characters
and will force the remaining arguments to the next line.

> +       (sha256
> +        (base32 "18ic8w9sdl0dh3kmyc9lsrafikrd9cg1jkhhr25p9saz0v75f77r"))))
> +    (build-system gnu-build-system)
> +    (native-inputs `(("which" ,which)))
> +    (inputs `(("gmp" ,gmp)
> +              ("libatomic-ops" ,libatomic-ops)
> +              ("libgc" ,libgc)
> +              ("libffi" ,libffi)))
> +    (arguments
> +     '(#:phases
> +       ;; The test-suite seems to assume that ECL is installed.  So re-order
> +       ;; the phases, then reference the installed executable.
> +       (let* ((phases %standard-phases)
> +              (check-phase (assq-ref phases 'check))
> +              (phases (alist-delete 'check phases))
> +              (phases (alist-cons-after 'install 'check check-phase phases))
> +              (phases
> +               (alist-cons-before
> +                'check 'pre-check
> +                (lambda* (#:key outputs #:allow-other-keys)
> +                  (substitute* '("build/tests/Makefile")
> +                    (("ECL=ecl")
> +                     (string-append
> +                      "ECL=" (assoc-ref outputs "out") "/bin/ecl"))))
> +                phases)))
> +         phases)

Hmm.  This is very far from our conventional style for phases.  I don't
doubt that our conventional style could be improved, but I'm fond of the
style above either.  Although there is no mutation, it is essentially
written in an imperative style.

How about something like this instead?

--8<---------------cut here---------------start------------->8---
     '(#:phases
       ;; The test-suite seems to assume that ECL is installed.  So re-order
       ;; the phases, then reference the installed executable.
       (let* ((check-phase (assq-ref %standard-phases 'check))
              (rearranged-phases (alist-cons-after
                                  'install 'check check-phase
                                  (alist-delete 'check %standard-phases))))
         (alist-cons-before
          'check 'pre-check
          (lambda* (#:key outputs #:allow-other-keys)
            (substitute* '("build/tests/Makefile")
              (("ECL=ecl")
               (string-append
                "ECL=" (assoc-ref outputs "out") "/bin/ecl"))))
          rearranged-phases))
--8<---------------cut here---------------end--------------->8---

> +       ;; Parallel builds explicitly not supported:
> +       ;; http://sourceforge.net/p/ecls/bugs/98/
> +       #:make-flags '("--jobs=1")))

Instead of this, please add the following build arguments:

       #:parallel-build? #f
       #:parallel-tests? #f

> +    (home-page "http://ecls.sourceforge.net/")
> +    (synopsis "Embeddable Common Lisp")
> +    (description "ECL is an implementation of the Common Lisp language as
> +defined by the ANSI X3J13 specification.  Its most relevant features are: a
> +bytecode compiler and interpreter, being able to compile Common Lisp with any
> +C/C++ compiler, being able to build standalone executables and libraries, and
> +supporting ASDF, Sockets, Gray streams, MOP, and other useful components.")
> +    ;; The file "Copyright" points to some files and directories which aren't
> +    ;; under the lgpl2.0+ and instead contain many different licenses.  The
> +    ;; comments below should exhaust those files and directories, except for
> +    ;; the contrib/unicode/ directory whose .lisp files have no copyright or
> +    ;; license notice.
> +    (license
> +     (list
> +      license:lgpl2.0+                  ;contrib/: encodings, bytecomp,
> +                                        ;ecl-cdb, win32
> +      (license:x11-style "file://src/lsp/loop2.lsp")
> +      license:public-domain             ;src/lsp/: pprint.lsp, format.lsp,
> +                                        ;profile, serve-event, sockets
> +      license:expat                     ;contrib/: asdf, cl-simd, quicklisp
> +      license:x11                       ;contrib/: deflate
> +      (license:bsd-style "file://contrib/defsystem/defsystem.lisp")
> +      license:bsd-2                     ;contrib/: ecl-curl
> +      (license:x11-style "file://contrib/rt/rt.lisp")
> +      (license:bsd-style "file://src/clx/clx.lisp"))))) ;TI License

Yowza!  I appreciate you being so thorough, but this may be a bit over
the top :)  I'd like to hear what Ludovic thinks before okaying a push.

     Thanks!
       Mark

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

* Re: [PATCH] gnu: Add ECL.
  2015-02-12  1:43 ` Mark H Weaver
@ 2015-02-12  9:17   ` Taylan Ulrich Bayırlı/Kammer
  2015-02-12 11:03     ` Andreas Enge
  2015-02-12 21:11     ` Ludovic Courtès
  0 siblings, 2 replies; 7+ messages in thread
From: Taylan Ulrich Bayırlı/Kammer @ 2015-02-12  9:17 UTC (permalink / raw)
  To: Mark H Weaver; +Cc: guix-devel

Mark H Weaver <mhw@netris.org> writes:

> In general, it's probably better to avoid unnecessary rearrangements
> like this, since it will tend to cause conflicts when other people have
> pending patches in the same module.

OK, I undid that.

> Our convention is to write (version-major+minor version) since it
> results in more readable code, even though it is a few more characters
> and will force the remaining arguments to the next line.

Done.

> Hmm.  This is very far from our conventional style for phases.  I don't
> doubt that our conventional style could be improved, but I'm fond of the
> style above either.  Although there is no mutation, it is essentially
> written in an imperative style.
>
> How about something like this instead?
>
>      '(#:phases
>        ;; The test-suite seems to assume that ECL is installed.  So re-order
>        ;; the phases, then reference the installed executable.
>        (let* ((check-phase (assq-ref %standard-phases 'check))
>               (rearranged-phases (alist-cons-after
>                                   'install 'check check-phase
>                                   (alist-delete 'check %standard-phases))))
>          (alist-cons-before
>           'check 'pre-check
>           (lambda* (#:key outputs #:allow-other-keys)
>             (substitute* '("build/tests/Makefile")
>               (("ECL=ecl")
>                (string-append
>                 "ECL=" (assoc-ref outputs "out") "/bin/ecl"))))
>           rearranged-phases))

That looks better indeed.  Done.

> Instead of this, please add the following build arguments:
>
>        #:parallel-build? #f
>        #:parallel-tests? #f

Done.

> Yowza!  I appreciate you being so thorough, but this may be a bit over
> the top :)  I'd like to hear what Ludovic thinks before okaying a push.

Thought so. :)  At least I'm halfway a license guru now.


It would be neat to have a page sequentially listing all the licenses we
support, with some short notice on each highlighting its distinguishing
features.  I had to visit all the separate FSF wiki pages linked from
guix/licenses.scm and make out my own mental map of them so to say.

It would also be neat to have a better version of
<http://www.what-license.com/>, tuned for our purposes.  (This one
doesn't support many licenses and seems to use a very bad algorithm.)

(I might find time to work on these myself.)


Taylan

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

* Re: [PATCH] gnu: Add ECL.
  2015-02-12  9:17   ` Taylan Ulrich Bayırlı/Kammer
@ 2015-02-12 11:03     ` Andreas Enge
  2015-02-12 21:11     ` Ludovic Courtès
  1 sibling, 0 replies; 7+ messages in thread
From: Andreas Enge @ 2015-02-12 11:03 UTC (permalink / raw)
  To: Taylan Ulrich Bayırlı/Kammer; +Cc: guix-devel

On Thu, Feb 12, 2015 at 10:17:50AM +0100, Taylan Ulrich Bayırlı/Kammer wrote:
> Mark H Weaver <mhw@netris.org> writes:
> > Yowza!  I appreciate you being so thorough, but this may be a bit over
> > the top :)  I'd like to hear what Ludovic thinks before okaying a push.

I think there is no problem in pushing the patch as Taylan has gone to
all these lengths. In general, I think we do not have the manpower to be
so thorough for each package, so I would not advocate it, but since the
work is done, it may as well appear in the package.

Andreas

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

* Re: [PATCH] gnu: Add ECL.
  2015-02-11 23:27 [PATCH] gnu: Add ECL Taylan Ulrich Bayırlı/Kammer
  2015-02-12  1:43 ` Mark H Weaver
@ 2015-02-12 20:37 ` Ludovic Courtès
  2015-02-12 21:11   ` Taylan Ulrich Bayırlı/Kammer
  1 sibling, 1 reply; 7+ messages in thread
From: Ludovic Courtès @ 2015-02-12 20:37 UTC (permalink / raw)
  To: taylanbayirli; +Cc: guix-devel

taylanbayirli@gmail.com (Taylan Ulrich "Bayırlı/Kammer") skribis:

> +    ;; The file "Copyright" points to some files and directories which aren't
> +    ;; under the lgpl2.0+ and instead contain many different licenses.  The
> +    ;; comments below should exhaust those files and directories, except for
> +    ;; the contrib/unicode/ directory whose .lisp files have no copyright or
> +    ;; license notice.
> +    (license
> +     (list
> +      license:lgpl2.0+                  ;contrib/: encodings, bytecomp,
> +                                        ;ecl-cdb, win32
> +      (license:x11-style "file://src/lsp/loop2.lsp")
> +      license:public-domain             ;src/lsp/: pprint.lsp, format.lsp,
> +                                        ;profile, serve-event, sockets
> +      license:expat                     ;contrib/: asdf, cl-simd, quicklisp
> +      license:x11                       ;contrib/: deflate
> +      (license:bsd-style "file://contrib/defsystem/defsystem.lisp")
> +      license:bsd-2                     ;contrib/: ecl-curl
> +      (license:x11-style "file://contrib/rt/rt.lisp")
> +      (license:bsd-style "file://src/clx/clx.lisp"))))) ;TI License

Congratulations, indeed.  :-)

The intent for the ‘license’ field is mostly to describe the license of
the combined work (although apparently the intent was not crystal
clear.)

In this case, I believe lgpl2.0+ “wins” over the other, more permissive
licenses.  So I would just list lgpl2.0+ (sorry about that ;-)).

However it’s good to keep a note like the one you wrote above the
‘license’ field.  Perhaps you could just s/many different licenses/many
different, non-copyleft licenses/ ?

OK to push with a change along these lines.

Thank you!

Ludo’.

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

* Re: [PATCH] gnu: Add ECL.
  2015-02-12  9:17   ` Taylan Ulrich Bayırlı/Kammer
  2015-02-12 11:03     ` Andreas Enge
@ 2015-02-12 21:11     ` Ludovic Courtès
  1 sibling, 0 replies; 7+ messages in thread
From: Ludovic Courtès @ 2015-02-12 21:11 UTC (permalink / raw)
  To: taylanbayirli; +Cc: guix-devel

taylanbayirli@gmail.com (Taylan Ulrich "Bayırlı/Kammer") skribis:

> It would be neat to have a page sequentially listing all the licenses we
> support, with some short notice on each highlighting its distinguishing
> features.  I had to visit all the separate FSF wiki pages linked from
> guix/licenses.scm and make out my own mental map of them so to say.
>
> It would also be neat to have a better version of
> <http://www.what-license.com/>, tuned for our purposes.  (This one
> doesn't support many licenses and seems to use a very bad algorithm.)

I’m sure FOSSology and the like already have sophisticated tools in that
area, but a ‘guix license’ tool that would do that would be nice (a
simple way would be to extract the text from the corresponding fsf.org
pages.)

(It’s Guile potluck soon.  Hint.  ;-))

Ludo’.

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

* Re: [PATCH] gnu: Add ECL.
  2015-02-12 20:37 ` Ludovic Courtès
@ 2015-02-12 21:11   ` Taylan Ulrich Bayırlı/Kammer
  0 siblings, 0 replies; 7+ messages in thread
From: Taylan Ulrich Bayırlı/Kammer @ 2015-02-12 21:11 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel

ludo@gnu.org (Ludovic Courtès) writes:

> Congratulations, indeed.  :-)
>
> The intent for the ‘license’ field is mostly to describe the license of
> the combined work (although apparently the intent was not crystal
> clear.)
>
> In this case, I believe lgpl2.0+ “wins” over the other, more permissive
> licenses.  So I would just list lgpl2.0+ (sorry about that ;-)).
>
> However it’s good to keep a note like the one you wrote above the
> ‘license’ field.  Perhaps you could just s/many different licenses/many
> different, non-copyleft licenses/ ?
>
> OK to push with a change along these lines.
>
> Thank you!
>
> Ludo’.

Understood, thanks for the explanation. :-)

Taylan

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

end of thread, other threads:[~2015-02-12 21:11 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-02-11 23:27 [PATCH] gnu: Add ECL Taylan Ulrich Bayırlı/Kammer
2015-02-12  1:43 ` Mark H Weaver
2015-02-12  9:17   ` Taylan Ulrich Bayırlı/Kammer
2015-02-12 11:03     ` Andreas Enge
2015-02-12 21:11     ` Ludovic Courtès
2015-02-12 20:37 ` Ludovic Courtès
2015-02-12 21:11   ` Taylan Ulrich Bayırlı/Kammer

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).