Subject: bug#19850: 25.0.50; [PATCH] configure.ac: Fix site-lisp paths with NS self-contained apps.

From: David Caldwell <[email-masked]>
Date: Fri, 13 Feb 2015 11:41:28 -0800

On 2/13/15 5:41 AM, Jan D. wrote:
> David Caldwell skrev den 2015-02-13 08:28:
>> On 2/12/15 10:57 PM, Jan D. wrote:

>> #define PATH_SITELOADSEARCH
>> "/Library/emacs/25.0.50/site-lisp:/Library/emacs/site-lisp"

>> Yes, the site lisp path is in /Library which is root:wheel, but that is
>> the correct place to put site wide things on the Mac.
> 
> No its not, its /Library/Application Support/Emacs.

If that is your main objection, I wouldn't mind that at all. I chose
plain /Library/emacs as it is similar to /Library/Perl and because it
was the minimal patch. /Library/Emacs would be better but the lowercase
"emacs" was chosen earlier and I didn't want to duplicate the

locallisppath='${datadir}/emacs/${version}/site-lisp:'\
'${datadir}/emacs/site-lisp'

lines.

Though in retrospect I think what I did is too oblique. It would be a
better patch to just do that explicitly:

locallisppath='/Library/Application Support/Emacs/${version}/site-lisp:'\
'/Library/Application Support/Emacs/site-lisp'

>> If you want non-site wide lisps, you can always edit your .emacs
>> with no root privileges. Thinking about it, I'm not sure why
>> non-root is a good idea for site wide stuff in the first place: On
>> a multi-user system, it seems like a security problem for one user
>> to affect all the other user's site-lisp. That *should* require
>> root (like it does on linux).
> 
> That's not the point.  The point is that the Emacs I compile for myself
> should by default ignore site wide stuff in global places.

Then wouldn't it act differently than the Linux version? Don't you get
"/usr/local/emacs/site-lisp" by default there? "/Library" is the
equivalent of "/usr/local" on OS X ("/System/Library" would be "/usr").

> It should require a choice to use it.  On Linux-distributions site
> lisp always looks like a garbage heap full of bad ideas dumped there
> by who-nows. And that's when installing a fresh distribution.

Added by default packages, no doubt. The default OS X Emacs in
/usr/bin/emacs (good old gpl2 version 22.1) uses

    /usr/share/emacs/22.1/lisp/emacs-lisp

On a clean install there's no /Library/Emacs or /Library/Application
Support/Emacs. Emacs installed from homebrew uses

    $(brew --prefix)/share/emacs/${version}/site-lisp

So I believe your fears of default site-lisp garbage are unfounded.

And one could always --disable-locallisppath if they don't want it. I
just think the default should be something reasonable that matches the
other unixes.

> I have fixed in trunk so that directories pointing to the build dir is not in loadpath.

Thanks.

> You should be able to get what you want at configure time by adding
> 
> --enable-locallisppath='/Library/emacs/site-lisp'

Oh, nice, I didn't know that option. It even works with the make
expansion variables:

--enable-locallisppath='/Library/Application
Support/Emacs/${version}/site-lisp:/Library/Application
Support/Emacs/site-lisp'

I suppose I will have to do that unless you change your mind about the
default. :-)

-David