diff mbox

gnu: Add emacs-ess.

Message ID 87d1mrkw5d.fsf@gnu.org
State New
Headers show

Commit Message

Roel Janssen July 6, 2016, 8:28 a.m. UTC
Hello Ricardo,

Thanks for your quick and elaborate reply.

Ricardo Wurmus writes:

> Hi Roel,
>
> thanks for taking on ESS!  (I was surprised to see that ESS is not
> actually part of Emacs; I always assumed it was.)
>
>>>From 0beacae7c386ea032cfac4511f4a9bc313fb1fb9 Mon Sep 17 00:00:00 2001
>> From: Roel Janssen <roel@gnu.org>
>> Date: Tue, 5 Jul 2016 14:53:03 +0200
>> Subject: [PATCH] gnu: Add emacs-ess.
>>
>> * gnu/packages/emacs.scm (emacs-ess): New variable.
>> ---
>>  gnu/packages/emacs.scm | 45 +++++++++++++++++++++++++++++++++++++++++++++
>>  1 file changed, 45 insertions(+)
>>
>> diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
>> index db88df1..3cc5875 100644
>> --- a/gnu/packages/emacs.scm
>> +++ b/gnu/packages/emacs.scm
>> @@ -42,11 +42,13 @@
>>    #:use-module (guix build-system glib-or-gtk)
>>    #:use-module (guix build-system trivial)
>>    #:use-module (gnu packages)
>> +  #:use-module (gnu packages bash)
>>    #:use-module (gnu packages guile)
>>    #:use-module (gnu packages gtk)
>>    #:use-module (gnu packages gnome)
>>    #:use-module (gnu packages ncurses)
>>    #:use-module (gnu packages texinfo)
>> +  #:use-module (gnu packages tex)
>>    #:use-module (gnu packages tls)
>>    #:use-module (gnu packages pkg-config)
>>    #:use-module (gnu packages xorg)
>> @@ -67,6 +69,7 @@
>>    #:use-module (gnu packages perl)
>>    #:use-module (gnu packages pdf)
>>    #:use-module (gnu packages scheme)
>> +  #:use-module (gnu packages statistics)
>>    #:use-module (gnu packages xiph)
>>    #:use-module (gnu packages mp3)
>>    #:use-module (guix utils)
>> @@ -2475,3 +2478,45 @@ news items, openrc and runscripts.")
>>  in English as you type.  It primarily detects \"weasel words\" and abuse of
>>  passive voice.")
>>      (license license:gpl3+)))
>> +
>> +(define-public emacs-ess
>> +  (package
>> +    (name "emacs-ess")
>> +    (version "16.04")
>> +    (source (origin
>> +              (method url-fetch)
>> +              (uri (string-append "http://ess.r-project.org/downloads/ess/ess-"
>> +                                  version ".tgz"))
>> +              (file-name (string-append name "-" version ".tar.gz"))
>
> Here again I wonder if that’s really needed.

You're right, again.  So I removed it.

>> +              (sha256
>> +               (base32
>> +                "0w7mbbajn377gdmvnd21mpyr368b2ia46gq6cb99y4y5rspf9pcg"))))
>> +    (build-system gnu-build-system)
>
> I wonder: how much of ESS is written in elisp?  Does it make sense to
> add some of the phases provided by the “emacs-build-system”?

I tried building it with the emacs-build-system instead, but that fails
on not finding "/bin/sh".  Did it not patch that out?

Maybe I am missing the point, but it seems that the build system behaves
just fine with gnu-build-system.

>> +    (arguments
>> +     `(#:tests? #f ; There is no test suite.
>> +       #:phases
>> +       (modify-phases %standard-phases
>> +         (delete 'configure)
>> +         (add-before 'build 'more-shebang-patching
>> +           (lambda* (#:key inputs #:allow-other-keys)
>> +             (substitute* "Makeconf"
>> +               (("SHELL = /bin/sh")
>> +                (string-append "SHELL = " (assoc-ref inputs "bash")
>> +                               "/bin/sh")))))
>
> Guix has “/bin/sh”.  Do we really need to substitute it for bash?  If
> this is necessary, you could also use “(which "bash")” instead.

That's odd.  I was under the impression that "/bin/sh" is not available
during the build, because that's where the emacs-build-system fails at.

We don't need bash indeed, so I used '(which "sh")' instead.  This is
pretty cool!

>> +         (replace 'install
>> +           (lambda* (#:key outputs #:allow-other-keys)
>> +             (system* "make" "install"
>> +                      (string-append "PREFIX=" (assoc-ref outputs
>> "out"))))))))
>
> How about moving this to “#:make-flags”?

Indeed.  Moved it to #:make-flags.

>> +    (inputs
>> +     `(("emacs" ,emacs)
>
> Have you tried building with “emacs-minimal”?

Now I have, and that seems to work too.  I updated the patch accordingly.

>> +       ("r" ,r)
>> +       ("bash" ,bash)
>
> I’m not sure but I think “bash” is an implicit input.
>
>> +       ("texinfo" ,texinfo)
>> +       ("texlive" ,texlive)))
>
> As Ben wrote “texlive-minimal” might be sufficient.  Please also move
> these two to “native-inputs” if that’s possible.

Unfortunately, when building with texlive-minimal, we are missing a
font:
  !pdfTeX error: /gnu/store/gnh4kn47mn3m2rlgm9i9xl3wmq2kahia-texlive-minimal-2016
  /bin/pdftex (file cmr9): Font cmr9 at 600 not found
   ==> Fatal error occurred, no output PDF file produced!

Which makes the build fail.
So I think we need 'texlive' instead.

>> +    (home-page "http://ess.r-project.org/")
>> +    (synopsis "Emacs mode for statistical analysis programs")
>> +    (description "Emacs Speaks Statistics (ESS) is an add-on package for GNU
>> +Emacs.  It is designed to support editing of scripts and interaction with
>> +various statistical analysis programs such as R, S-Plus, SAS, Stata and
>> +OpenBUGS/JAGS.")
>
> I would write “such as R or OpenBUGS.”  The other options are
> proprietary software, so I don’t think we should mention them.

Oh right.  Sorry I didn't actually check out those projects, and I
didn't know they were proprietary..  I updated the patch.

>> +    (license license:gpl2+)))
>
> ~~ Ricardo

Other than these changes, I found out that the build process expects
perl to be available when building the documentation.  Therefore, I
included perl in the native-inputs.

So this brings us to the following patch:

>From d54a474938fc9653fe1fb5c5c953f9dc9566a7d9 Mon Sep 17 00:00:00 2001
From: Roel Janssen <roel@gnu.org>
Date: Wed, 6 Jul 2016 10:26:01 +0200
Subject: [PATCH] gnu: Add emacs-ess.

* gnu/packages/emacs.scm (emacs-ess): New variable.
---
 gnu/packages/emacs.scm | 39 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

Comments

Ricardo Wurmus July 6, 2016, 8:44 a.m. UTC | #1
Hi Roel,

>> As Ben wrote “texlive-minimal” might be sufficient.  Please also move
>> these two to “native-inputs” if that’s possible.
>
> Unfortunately, when building with texlive-minimal, we are missing a
> font:
>   !pdfTeX error: /gnu/store/gnh4kn47mn3m2rlgm9i9xl3wmq2kahia-texlive-minimal-2016
>   /bin/pdftex (file cmr9): Font cmr9 at 600 not found
>    ==> Fatal error occurred, no output PDF file produced!

Too bad!  We should take some time to figure out how to split up
texlive and make it find modules via some search path.  I’m afraid this
might take a long time.

> So this brings us to the following patch:
>
>>From d54a474938fc9653fe1fb5c5c953f9dc9566a7d9 Mon Sep 17 00:00:00 2001
> From: Roel Janssen <roel@gnu.org>
> Date: Wed, 6 Jul 2016 10:26:01 +0200
> Subject: [PATCH] gnu: Add emacs-ess.
>
> * gnu/packages/emacs.scm (emacs-ess): New variable.
> ---
>  gnu/packages/emacs.scm | 39 +++++++++++++++++++++++++++++++++++++++
>  1 file changed, 39 insertions(+)
>
> diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
> index db88df1..78557e4 100644
> --- a/gnu/packages/emacs.scm
> +++ b/gnu/packages/emacs.scm
> @@ -46,6 +46,7 @@
>    #:use-module (gnu packages gtk)
>    #:use-module (gnu packages gnome)
>    #:use-module (gnu packages ncurses)
> +  #:use-module (gnu packages tex)
>    #:use-module (gnu packages texinfo)
>    #:use-module (gnu packages tls)
>    #:use-module (gnu packages pkg-config)
> @@ -67,6 +68,7 @@
>    #:use-module (gnu packages perl)
>    #:use-module (gnu packages pdf)
>    #:use-module (gnu packages scheme)
> +  #:use-module (gnu packages statistics)
>    #:use-module (gnu packages xiph)
>    #:use-module (gnu packages mp3)
>    #:use-module (guix utils)
> @@ -2098,6 +2100,43 @@ that highlights non-conforming text.  The subset of the English language called
>  E-Prime forbids the use of the \"to be\" form to strengthen your writing.")
>        (license license:gpl3+))))
>  
> +(define-public emacs-ess
> +  (package
> +    (name "emacs-ess")
> +    (version "16.04")
> +    (source (origin
> +              (method url-fetch)
> +              (uri (string-append "http://ess.r-project.org/downloads/ess/ess-"
> +                                  version ".tgz"))
> +              (sha256
> +               (base32
> +                "0w7mbbajn377gdmvnd21mpyr368b2ia46gq6cb99y4y5rspf9pcg"))))
> +    (build-system gnu-build-system)
> +    (arguments
> +     `(#:tests? #f ; There is no test suite.
> +       #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
> +       #:phases
> +       (modify-phases %standard-phases
> +         (delete 'configure)
> +         (add-before 'build 'more-shebang-patching
> +           (lambda* (#:key inputs #:allow-other-keys)
> +             (substitute* "Makeconf"
> +               (("SHELL = /bin/sh")
> +                (string-append "SHELL = " (which "sh")))))))))
> +    (inputs
> +     `(("emacs" ,emacs-minimal)
> +       ("r" ,r)))
> +    (native-inputs
> +     `(("perl" ,perl)
> +       ("texinfo" ,texinfo)
> +       ("texlive" ,texlive)))
> +    (home-page "http://ess.r-project.org/")
> +    (synopsis "Emacs mode for statistical analysis programs")
> +    (description "Emacs Speaks Statistics (ESS) is an add-on package for GNU
> +Emacs.  It is designed to support editing of scripts and interaction with
> +various statistical analysis programs such as R and OpenBUGS.")
> +    (license license:gpl2+)))
> +
>  (define-public emacs-smex
>    (package
>      (name "emacs-smex")

This looks good to me now.  Thanks again for the patch!

~~ Ricardo
Roel Janssen July 6, 2016, 10:02 a.m. UTC | #2
Ricardo Wurmus writes:

> Hi Roel,
>
>>> As Ben wrote “texlive-minimal” might be sufficient.  Please also move
>>> these two to “native-inputs” if that’s possible.
>>
>> Unfortunately, when building with texlive-minimal, we are missing a
>> font:
>>   !pdfTeX error: /gnu/store/gnh4kn47mn3m2rlgm9i9xl3wmq2kahia-texlive-minimal-2016
>>   /bin/pdftex (file cmr9): Font cmr9 at 600 not found
>>    ==> Fatal error occurred, no output PDF file produced!
>
> Too bad!  We should take some time to figure out how to split up
> texlive and make it find modules via some search path.  I’m afraid this
> might take a long time.

Does that mean we should put emacs-ess on hold until we have fixed this?

Thanks,
Roel Janssen
Ricardo Wurmus July 6, 2016, 10:12 a.m. UTC | #3
Roel Janssen <roel@gnu.org> writes:

> Ricardo Wurmus writes:
>
>> Hi Roel,
>>
>>>> As Ben wrote “texlive-minimal” might be sufficient.  Please also move
>>>> these two to “native-inputs” if that’s possible.
>>>
>>> Unfortunately, when building with texlive-minimal, we are missing a
>>> font:
>>>   !pdfTeX error: /gnu/store/gnh4kn47mn3m2rlgm9i9xl3wmq2kahia-texlive-minimal-2016
>>>   /bin/pdftex (file cmr9): Font cmr9 at 600 not found
>>>    ==> Fatal error occurred, no output PDF file produced!
>>
>> Too bad!  We should take some time to figure out how to split up
>> texlive and make it find modules via some search path.  I’m afraid this
>> might take a long time.
>
> Does that mean we should put emacs-ess on hold until we have fixed this?

No, not at all.  Use “texlive” in this case.  I was just trying to
express that this is a recurring itch that needs scratching :)

~~ Ricardo
Roel Janssen July 6, 2016, 10:46 a.m. UTC | #4
Ricardo Wurmus writes:

> Roel Janssen <roel@gnu.org> writes:
>
>> Ricardo Wurmus writes:
>>
>>> Hi Roel,
>>>
>>>>> As Ben wrote “texlive-minimal” might be sufficient.  Please also move
>>>>> these two to “native-inputs” if that’s possible.
>>>>
>>>> Unfortunately, when building with texlive-minimal, we are missing a
>>>> font:
>>>>   !pdfTeX error: /gnu/store/gnh4kn47mn3m2rlgm9i9xl3wmq2kahia-texlive-minimal-2016
>>>>   /bin/pdftex (file cmr9): Font cmr9 at 600 not found
>>>>    ==> Fatal error occurred, no output PDF file produced!
>>>
>>> Too bad!  We should take some time to figure out how to split up
>>> texlive and make it find modules via some search path.  I’m afraid this
>>> might take a long time.
>>
>> Does that mean we should put emacs-ess on hold until we have fixed this?
>
> No, not at all.  Use “texlive” in this case.  I was just trying to
> express that this is a recurring itch that needs scratching :)

Right.  I agree.  So I can push emacs-ess?
Ricardo Wurmus July 6, 2016, 10:52 a.m. UTC | #5
Roel Janssen <roel@gnu.org> writes:

> Ricardo Wurmus writes:
>
>> Roel Janssen <roel@gnu.org> writes:
>>
>>> Ricardo Wurmus writes:
>>>
>>>> Hi Roel,
>>>>
>>>>>> As Ben wrote “texlive-minimal” might be sufficient.  Please also move
>>>>>> these two to “native-inputs” if that’s possible.
>>>>>
>>>>> Unfortunately, when building with texlive-minimal, we are missing a
>>>>> font:
>>>>>   !pdfTeX error: /gnu/store/gnh4kn47mn3m2rlgm9i9xl3wmq2kahia-texlive-minimal-2016
>>>>>   /bin/pdftex (file cmr9): Font cmr9 at 600 not found
>>>>>    ==> Fatal error occurred, no output PDF file produced!
>>>>
>>>> Too bad!  We should take some time to figure out how to split up
>>>> texlive and make it find modules via some search path.  I’m afraid this
>>>> might take a long time.
>>>
>>> Does that mean we should put emacs-ess on hold until we have fixed this?
>>
>> No, not at all.  Use “texlive” in this case.  I was just trying to
>> express that this is a recurring itch that needs scratching :)
>
> Right.  I agree.  So I can push emacs-ess?

I have no objections.  Since nobody else has raised any objections I’d
say: please push!

~~ Ricardo
Andreas Enge July 9, 2016, 7:31 p.m. UTC | #6
Hello!

On Wed, Jul 06, 2016 at 10:44:48AM +0200, Ricardo Wurmus wrote:
> > Unfortunately, when building with texlive-minimal, we are missing a
> > font:
> >   !pdfTeX error: /gnu/store/gnh4kn47mn3m2rlgm9i9xl3wmq2kahia-texlive-minimal-2016
> >   /bin/pdftex (file cmr9): Font cmr9 at 600 not found
> >    ==> Fatal error occurred, no output PDF file produced!
> Too bad!  We should take some time to figure out how to split up
> texlive and make it find modules via some search path.  I’m afraid this
> might take a long time.

Right now, I would also be happy to make texlive-minimal a little bit bigger.
The cmr fonts should definitely be included; and I thought I had done so.
If you know what is missing, we could delete a little bit less. To be honest,
the texlive-minimal package does not meet my expectations, since there are
more packages for which it is not sufficient to build the documentation.
But after an afternoon of building and rebuilding it with more or fewer files
deleted, I did not have the energy to continue after it worked on the pari-gp
package with which I made the tests...

Andreas
Roel Janssen July 10, 2016, 10:39 a.m. UTC | #7
Andreas Enge writes:

> Hello!
>
> On Wed, Jul 06, 2016 at 10:44:48AM +0200, Ricardo Wurmus wrote:
>> > Unfortunately, when building with texlive-minimal, we are missing a
>> > font:
>> >   !pdfTeX error: /gnu/store/gnh4kn47mn3m2rlgm9i9xl3wmq2kahia-texlive-minimal-2016
>> >   /bin/pdftex (file cmr9): Font cmr9 at 600 not found
>> >    ==> Fatal error occurred, no output PDF file produced!
>> Too bad!  We should take some time to figure out how to split up
>> texlive and make it find modules via some search path.  I’m afraid this
>> might take a long time.
>
> Right now, I would also be happy to make texlive-minimal a little bit bigger.
> The cmr fonts should definitely be included; and I thought I had done so.
> If you know what is missing, we could delete a little bit less. To be honest,
> the texlive-minimal package does not meet my expectations, since there are
> more packages for which it is not sufficient to build the documentation.
> But after an afternoon of building and rebuilding it with more or fewer files
> deleted, I did not have the energy to continue after it worked on the pari-gp
> package with which I made the tests...

I was thinking about packaging the fonts separately, but I haven't at
all looked at whether that is a sane thing to do.  Do you have a
particular list of packages where texlive-minimal fails to be sufficient
to build documentation, or can I generate that list by looking for the
texlive input?

Kind regards,
Roel Janssen
Andreas Enge July 10, 2016, 1:26 p.m. UTC | #8
On Sun, Jul 10, 2016 at 12:39:37PM +0200, Roel Janssen wrote:
> I was thinking about packaging the fonts separately, but I haven't at
> all looked at whether that is a sane thing to do.  Do you have a
> particular list of packages where texlive-minimal fails to be sufficient
> to build documentation, or can I generate that list by looking for the
> texlive input?

Well, instead of packaging fonts separately and adding them back to
texlive-minimal, it should be enough to not delete them in the first place
for the texlive-minimal package... I did not try to replace texlive for all
packages where it is used for building documentation, and do not remember
the list of packages I tried. I think I tried python-matplotlib and lilypond.

Andreas
Roel Janssen July 10, 2016, 3:17 p.m. UTC | #9
Andreas Enge writes:

> On Sun, Jul 10, 2016 at 12:39:37PM +0200, Roel Janssen wrote:
>> I was thinking about packaging the fonts separately, but I haven't at
>> all looked at whether that is a sane thing to do.  Do you have a
>> particular list of packages where texlive-minimal fails to be sufficient
>> to build documentation, or can I generate that list by looking for the
>> texlive input?
>
> Well, instead of packaging fonts separately and adding them back to
> texlive-minimal, it should be enough to not delete them in the first place
> for the texlive-minimal package... I did not try to replace texlive for all
> packages where it is used for building documentation, and do not remember
> the list of packages I tried. I think I tried python-matplotlib and lilypond.

Right.  I'll have a go at it in the next couple of days and report back
any progress.
diff mbox

Patch

diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index db88df1..78557e4 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -46,6 +46,7 @@ 
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages tex)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages pkg-config)
@@ -67,6 +68,7 @@ 
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pdf)
   #:use-module (gnu packages scheme)
+  #:use-module (gnu packages statistics)
   #:use-module (gnu packages xiph)
   #:use-module (gnu packages mp3)
   #:use-module (guix utils)
@@ -2098,6 +2100,43 @@  that highlights non-conforming text.  The subset of the English language called
 E-Prime forbids the use of the \"to be\" form to strengthen your writing.")
       (license license:gpl3+))))
 
+(define-public emacs-ess
+  (package
+    (name "emacs-ess")
+    (version "16.04")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://ess.r-project.org/downloads/ess/ess-"
+                                  version ".tgz"))
+              (sha256
+               (base32
+                "0w7mbbajn377gdmvnd21mpyr368b2ia46gq6cb99y4y5rspf9pcg"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; There is no test suite.
+       #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-before 'build 'more-shebang-patching
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "Makeconf"
+               (("SHELL = /bin/sh")
+                (string-append "SHELL = " (which "sh")))))))))
+    (inputs
+     `(("emacs" ,emacs-minimal)
+       ("r" ,r)))
+    (native-inputs
+     `(("perl" ,perl)
+       ("texinfo" ,texinfo)
+       ("texlive" ,texlive)))
+    (home-page "http://ess.r-project.org/")
+    (synopsis "Emacs mode for statistical analysis programs")
+    (description "Emacs Speaks Statistics (ESS) is an add-on package for GNU
+Emacs.  It is designed to support editing of scripts and interaction with
+various statistical analysis programs such as R and OpenBUGS.")
+    (license license:gpl2+)))
+
 (define-public emacs-smex
   (package
     (name "emacs-smex")