Subject: [bug#28365] [PATCH] gnu: emacs-ess: Include the etc directory in the build

From: Kyle Meyer <[email-masked]>
Date: Wed, 06 Sep 2017 20:32:38 -0400

Roel Janssen <[email-masked]> writes:

> When loading ESS "the standard way":
>   (require 'ess-site)
>
> it fails to load because it cannot find the "etc" directory that should
> ship with this package.

Thanks, I hit this too.  Here's a fix that I have locally but hadn't
sent yet.

-- >8 --
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 9c0f9bc89..a47e90a40 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -3206,7 +3206,14 @@ E-Prime forbids the use of the \"to be\" form to strengthen your writing.")
                                   version ".tgz"))
               (sha256
                (base32
-                "0w7mbbajn377gdmvnd21mpyr368b2ia46gq6cb99y4y5rspf9pcg"))))
+                "0w7mbbajn377gdmvnd21mpyr368b2ia46gq6cb99y4y5rspf9pcg"))
+              (modules '((guix build utils)))
+              (snippet
+               ;; Add an entry to ess-etc-directory-list that is relative to
+               ;; guix.d/.
+               '(substitute* "lisp/ess-site.el"
+                  (("^  '\\(\"\\.\\./etc/ess/\"" line)
+                   (string-append line " \"../../../etc/ess/\""))))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ; There is no test suite.
-- >8 --

That teaches ess-etc-directory-list about $PROFILE/share/emacs/etc/.  I
prefer your solution because I think it's less fragile.

I just have a minor comment on the patch description.

> Subject: [PATCH] gnu: emacs-ess: Include the etc directory in the build
>  output.
>
> * gnu/packages/emacs.scm (emacs-ess):  Also copy the etc directory.

That doesn't seem quite right because the etc directory is already
included in the build; it's under $PROFILE/share/emacs/etc/.  Perhaps
this should instead say something like "Relocate the etc directory so
that ESS can find it."

-- 
Kyle