Ludovic Courtès (2016-05-19 15:56 +0300) wrote:

>> From ca571f7631bf77ddc8ad6257fe165b4ff0ef5e6b Mon Sep 17 00:00:00 2001
>> From: Alex Kost <[email protected]>
>> Date: Thu, 19 May 2016 11:01:40 +0300
>> Subject: [PATCH] gnu: emacs: Remove *.elc from the release tarball.
>>
>> * gnu/packages/emacs.scm (emacs)[arguments]: Add 'remove-compiled-elisp'
>>   phase.
>> ---
>>  gnu/packages/emacs.scm | 9 +++++++++
>>  1 file changed, 9 insertions(+)
>>
>> diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
>> index 32ed722..0c15f63 100644
>> --- a/gnu/packages/emacs.scm
>> +++ b/gnu/packages/emacs.scm
>> @@ -91,6 +91,15 @@
>>               (substitute* (find-files "." "^Makefile\\.in$")
>>                 (("/bin/pwd")
>>                  "pwd"))))
>> +         (add-after 'configure 'remove-compiled-elisp
>> +           (lambda _
>> +             ;; Emacs comes with compiled elisp (*.elc) and generated
>> +             ;; autoloads (*loaddefs.el) files.  This does not allow us to 
>> use
>> +             ;; "emacs-source-date-epoch.patch" effectively, so remove these
>> +             ;; files (using 'make bootstrap-clean'), as 'make' will 
>> recreate
>> +             ;; them.
>> +             (with-directory-excursion "lisp"
>> +               (zero? (system* "make" "bootstrap-clean")))))
>
> I would rather do it in a ‘snippet’ so that ‘guix build -S emacs’
> returns the cleaned-up source.

Hm, I didn't think about it; yeah, I agree it would be better, thanks!

> However, the snippet would have to duplicate the logic of this makefile
> rule, which might not be desirable (depends on how complex this rule
> is).  If you think it’s best to keep this way, please push!

The rule is rather simple, it just removes all compiled and generated
files, so attached is the version with snippet.

>From 13c2e7123d3b8f7dda5814c2ac00acfe806cec3b Mon Sep 17 00:00:00 2001
From: Alex Kost <[email protected]>
Date: Thu, 19 May 2016 11:01:40 +0300
Subject: [PATCH] gnu: emacs: Remove *.elc and autoloads from the tarball.

* gnu/packages/emacs.scm (emacs)[source]: Add 'snippet' to remove
  compiled and generated elisp files.
---
 gnu/packages/emacs.scm | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 18898e9..ae02a07 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -80,7 +80,18 @@
               (base32
                "0kn3rzm91qiswi0cql89kbv6mqn27rwsyjfb8xmwy9m5s8fxfiyx"))
              (patches (search-patches "emacs-exec-path.patch"
-                                      "emacs-source-date-epoch.patch"))))
+                                      "emacs-source-date-epoch.patch"))
+             (modules '((guix build utils)))
+             (snippet
+              ;; Delete the bundled byte-compiled elisp files and
+              ;; generated autoloads.
+              '(with-directory-excursion "lisp"
+                 (for-each delete-file
+                           (append (find-files "." "\\.elc$")
+                                   (find-files "." "loaddefs\\.el$")
+                                   ;; This is the only "autoloads" file that
+                                   ;; does not have "*loaddefs.el" name.
+                                   '("eshell/esh-groups.el")))))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:phases
-- 
2.8.2

Reply via email to