Subject: Re: [bug#36776] WIP: upgrade emacs-ess to 18.10.2

From: Nicolò Balzarotti <[email-masked]>
Date: Tue, 10 Dec 2019 17:11:47 +0100

Nicolò Balzarotti <[email-masked]> writes:

Hello again!

After changes to EMACSLOADPATH, emacs is failing to find ess (.el files
are placed under ~/.guix-profile/share/emacs/site-lisp/guix.d)

Looking at the mail archive I found this patch I sent 3 months ago >.<.
It's outdated now (for the LOAD PATH thing).  But we might take the time
to fix this.

Any thought?

Thanks!

Nicolò

> Hello guix!
> I'm sorry for this work in progress. I got emacs-ess 18 working, but I
> really don't like how I did it (I don't think the way I'm helping emacs
> finding julia-mode during the build is right), so I'm asking help here!
>
> On irc, @rekado expressed interest in helping.
>
> Thanks everybody,
> Nicolò
> From 39420bfed259d22bf0368fa0da0a6093a42e0f78 Mon Sep 17 00:00:00 2001
> From: nixo <[email-masked]>
> Date: Wed, 24 Jul 2019 00:04:37 +0200
> Subject: [PATCH] wip: gnu packages: Upgrade emacs-ess to 18.10.2
>
> ---
>  gnu/packages/statistics.scm | 62 ++++++++++++++++++-------------------
>  1 file changed, 30 insertions(+), 32 deletions(-)
>
> diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
> index eb5e5b4b76..35af00c58e 100644
> --- a/gnu/packages/statistics.scm
> +++ b/gnu/packages/statistics.scm
> @@ -5877,35 +5877,15 @@ Java package that provides routines for various statistical distributions.")
>  (define-public emacs-ess
>    (package
>      (name "emacs-ess")
> -    (version "17.11")
> +    (version "18.10.2")
>      (source (origin
>                (method url-fetch)
>                (uri (string-append "https://github.com/emacs-ess/ESS/archive/v"
>                                    version ".tar.gz"))
>                (sha256
>                 (base32
> -                "0cbilbsiwvcyf6d5y24mymp57m3ana5dkzab3knfs83w4a3a4c5c"))
> -              (file-name (string-append name "-" version ".tar.gz"))
> -              (modules '((guix build utils)))
> -              (snippet
> -               '(begin
> -                  ;; Stop ESS from trying to bundle an external julia-mode.el.
> -                  (substitute* "lisp/Makefile"
> -                    (("^\tjulia-mode.elc\\\\\n") "")
> -                    (("^dist: all julia-mode.el")
> -                     "dist: all"))
> -                  ;; No need to build docs in so many formats.  Also, skipping
> -                  ;; pdf lets us not pull in texlive.
> -                  (substitute* "doc/Makefile"
> -                    (("all  : info text html pdf")
> -                     "all  : info")
> -                    (("install: install-info install-other-docs")
> -                     "install: install-info"))
> -                  ;; Test fails upstream
> -                  (substitute* "test/ess-r-tests.el"
> -                    (("ert-deftest ess-r-namespaced-eval-no-srcref-in-errors ()")
> -                     "ert-deftest ess-r-namespaced-eval-no-srcref-in-errors () :expected-result :failed"))
> -                  #t))))
> +                "0akz3wf6b4dvwm55875ap45rdb52m4fwxfs6nlfpccmm1q55nvbb"))
> +              (modules '((guix build utils)))))
>      (build-system gnu-build-system)
>      (arguments
>       (let ((base-directory "/share/emacs/site-lisp/guix.d/ess"))
> @@ -5917,20 +5897,38 @@ Java package that provides routines for various statistical distributions.")
>           #:phases
>           (modify-phases %standard-phases
>             (delete 'configure)
> +	   (delete 'check) 		;; emacs: standard input is not a tty
>             (add-before 'build 'more-shebang-patching
> -             (lambda* (#:key inputs #:allow-other-keys)
> -               (substitute* "Makeconf"
> -                 (("SHELL = /bin/sh")
> -                  (string-append "SHELL = " (which "sh"))))
> -               #t))
> -           (replace 'check
> -             (lambda _
> -               (invoke "make" "test")))))))
> +	     (lambda* (#:key inputs propagated-inputs #:allow-other-keys)
> +	       (substitute* "Makeconf"
> +		 (("SHELL = /bin/sh")
> +		  (string-append "SHELL = " (which "sh"))))
> +	       ;; No need to build docs in so many formats.  Also, skipping
> +	       ;; pdf lets us not pull in texlive.
> +	       (substitute* "doc/Makefile"
> +		 (("install: install-info install-other-docs")
> +		  "install: install-info"))
> +	       ;; This seems too much like a hack
> +	       (substitute* "Makeconf"
> +		 (("-no-site-file")
> +		  (string-append "-no-site-file -L "
> +				 (string-append
> +				  (assoc-ref inputs "emacs-julia-mode")
> +				  "/share/emacs/site-lisp/guix.d/*/"
> +				  ))))
> +	       (substitute* "lisp/Makefile"
> +                 (("^\tjulia-mode.elc\\\\\n") "")
> +                 (("^all: julia-mode.el")
> +                  "all: ")
> +	      	 (("^ess-julia.elc: julia-mode.elc")
> +                  ""))
> +	       #t)
> +	     )))))
>      (inputs
>       `(("emacs" ,emacs-minimal)
>         ("r-minimal" ,r-minimal)))
>      (native-inputs
> -     `(("perl" ,perl)
> +     `(("which" ,which)
>         ("texinfo" ,texinfo)))
>      (propagated-inputs
>       `(("emacs-julia-mode" ,emacs-julia-mode)))
> -- 
> 2.22.0