Subject: Re: bug#26559: [PATCH] build: emacs: Install only a subset of files.

From: Arun Isaac <[email-masked]>
Date: Thu, 20 Apr 2017 18:22:34 +0530

>>> +                      (include ''(".*.el$" ".*.el.in$" "^dir$"
>>> +                                 ".*.info$" ".*.texi$" ".*.texinfo$"
>>> +                                 "doc/dir" "doc/*.info$" "doc/*.texi$" "doc/*.texinfo$"))
>>> +                      (exclude ''("^.dir-locals.el$" "^test.el$" "^tests.el$" ".*-test.el$" ".*-tests.el$"))
>>
>> I've copied all this from MELPA's default :files property described at
>> https://github.com/melpa/melpa . I have no idea what the rationale for
>> some of these regexes are.
>
> What regexps are not clear for you?

I don't understand what ".*.el.in$", "^dir$" and "doc/dir" are for.

>> Currently, include and exclude are a list of regexes that file names are
>> matched against. Should this be combined into one big regex?
>
> I think it is not needed, it is more clean to separate regexps.

Ok. Also, please suggest better names if #:include and #:exclude are not
clear. Perhaps #:include-files and #:exclude-files, or #:install-files
and #:no-install-files ? Any other style changes to the code are also
welcome.

> Regarding documentation: note that it is already installed into the
> proper place.  I mean if the package has ".info" files, they are
> installed into "share/info" (look at 'move-doc' procedure in (guix build
> emacs-build-system) module).  For example, 'emacs-debbugs' has the info
> manual and it is installed appropriately.  So I think #:documentation is
> not needed.

Yeah, move-doc is good. I forgot about it.

> Also I would like to note that this patch (when it will be ready)
> shouldn't be committed alone: there are some emacs packages that should
> be adjusted to include additional files.  One that comes to mind is
> 'emacs-slime' - it *must* contain *.lisp files (and other files as
> listed at <https://github.com/melpa/melpa/blob/master/recipes/slime>).
> Otherwise, it wouldn't work at all.

For specific packages, we can always override the #:include and
#:exclude keyword arguments. Or, even replace the 'install phase if it
comes to that.

> So I think this patch should be committed with the according fixes for
> such "complex" packages (not sure if there are other ones along with
> 'emacs-slime').

Is there some standard workflow for testing packages when there is a
build system change? There are currently 154 packages in
gnu/packages/emacs.scm. Should I test them all?