all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Mark H Weaver <mhw@netris.org>
To: "Taylan Ulrich \"Bayırlı/Kammer\"" <taylanbayirli@gmail.com>
Cc: guix-devel@gnu.org
Subject: Re: [PATCH] gnu: Add ECL.
Date: Wed, 11 Feb 2015 20:43:50 -0500	[thread overview]
Message-ID: <87d25fx5t5.fsf@netris.org> (raw)
In-Reply-To: <871tlwf2qq.fsf@taylan.uni.cx> ("Taylan Ulrich \=\?utf-8\?Q\?\=5C\=22Bay\=C4\=B1rl\=C4\=B1\=2FKammer\=5C\=22\=22's\?\= message of "Thu, 12 Feb 2015 00:27:25 +0100")

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

  reply	other threads:[~2015-02-12  1:44 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-11 23:27 [PATCH] gnu: Add ECL Taylan Ulrich Bayırlı/Kammer
2015-02-12  1:43 ` Mark H Weaver [this message]
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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87d25fx5t5.fsf@netris.org \
    --to=mhw@netris.org \
    --cc=guix-devel@gnu.org \
    --cc=taylanbayirli@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.