* bug#10208: site-lisp directories in load-path after --no-site-lisp
@ 2011-12-03 23:29 Juanma Barranquero
2011-12-07 2:18 ` Glenn Morris
2011-12-07 23:16 ` Juanma Barranquero
0 siblings, 2 replies; 10+ messages in thread
From: Juanma Barranquero @ 2011-12-03 23:29 UTC (permalink / raw)
To: 10208
Package: emacs
On non-w32 systems:
- init_lread() removes directories matching "site-lisp" from
load-path, and then re-adds them unless --no-site-lisp was passed.
- However, the site-lisp directories under the installation
(lread.c:4189) and source (lread.c:4229) directories are added
unconditionally.
On w32 systems, load-path gets its default from EMACSLOADPATH (defined
in w32.c:1592), which includes %emacs_dir%/site-lisp and
%emacs_dir%/../site-lisp unconditionally.
As an example, I build Emacs in
C:\emacs\trunk
and have my site-lisp data in C:\emacs\site-lisp. After "emacs -Q",
load-path contains:
c:/emacs/trunk/site-lisp
C:/emacs/trunk/../site-lisp
c:/emacs/site-lisp/bm
c:/emacs/site-lisp/lua
c:/emacs/site-lisp/slime
c:/emacs/site-lisp/slime/contrib
c:/emacs/site-lisp/slime/doc
C:/emacs/trunk/lisp
c:/emacs/trunk/lisp/calc
[...]
c:/emacs/trunk/lisp/cedet
C:/emacs/trunk/leim
Juanma
^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#10208: site-lisp directories in load-path after --no-site-lisp
2011-12-03 23:29 bug#10208: site-lisp directories in load-path after --no-site-lisp Juanma Barranquero
@ 2011-12-07 2:18 ` Glenn Morris
2012-01-04 19:42 ` Achim Gratz
2011-12-07 23:16 ` Juanma Barranquero
1 sibling, 1 reply; 10+ messages in thread
From: Glenn Morris @ 2011-12-07 2:18 UTC (permalink / raw)
To: Juanma Barranquero; +Cc: 10208
Juanma Barranquero wrote:
> - init_lread() removes directories matching "site-lisp" from
> load-path, and then re-adds them unless --no-site-lisp was passed.
> - However, the site-lisp directories under the installation
> (lread.c:4189) and source (lread.c:4229) directories are added
> unconditionally.
Fixed.
^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#10208: site-lisp directories in load-path after --no-site-lisp
2011-12-03 23:29 bug#10208: site-lisp directories in load-path after --no-site-lisp Juanma Barranquero
2011-12-07 2:18 ` Glenn Morris
@ 2011-12-07 23:16 ` Juanma Barranquero
1 sibling, 0 replies; 10+ messages in thread
From: Juanma Barranquero @ 2011-12-07 23:16 UTC (permalink / raw)
To: 10208-done
On Sun, Dec 4, 2011 at 00:29, Juanma Barranquero <lekktu@gmail.com> wrote:
> On w32 systems, load-path gets its default from EMACSLOADPATH (defined
> in w32.c:1592), which includes %emacs_dir%/site-lisp and
> %emacs_dir%/../site-lisp unconditionally.
Fixed in revno:106634.
Juanma
^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#10208: site-lisp directories in load-path after --no-site-lisp
2011-12-07 2:18 ` Glenn Morris
@ 2012-01-04 19:42 ` Achim Gratz
2012-01-06 21:57 ` Achim Gratz
0 siblings, 1 reply; 10+ messages in thread
From: Achim Gratz @ 2012-01-04 19:42 UTC (permalink / raw)
To: 10208
Glenn Morris <rgm@gnu.org> writes:
>> - init_lread() removes directories matching "site-lisp" from
>> load-path, and then re-adds them unless --no-site-lisp was passed.
>> - However, the site-lisp directories under the installation
>> (lread.c:4189) and source (lread.c:4229) directories are added
>> unconditionally.
>
> Fixed.
I still get this with a fresh build from the git repo:
emacs/build> emacs -batch -Q --eval "(mapcar 'message load-path )"
/usr/local/share/emacs/24.0.92/site-lisp
/usr/local/share/emacs/site-lisp
/usr/local/share/emacs/site-lisp/org
/usr/local/share/emacs/24.0.92/lisp
/usr/local/share/emacs/24.0.92/lisp/…
/usr/local/share/emacs/24.0.92/leim
The two site-lisp directories are configured as $(locallisppath). If I
remove this, I don't get any site-lisp directories when starting Emacs
normally.
Achim.
--
+<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+
DIY Stuff:
http://Synth.Stromeko.net/DIY.html
^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#10208: site-lisp directories in load-path after --no-site-lisp
2012-01-04 19:42 ` Achim Gratz
@ 2012-01-06 21:57 ` Achim Gratz
2012-01-07 17:18 ` Achim Gratz
0 siblings, 1 reply; 10+ messages in thread
From: Achim Gratz @ 2012-01-06 21:57 UTC (permalink / raw)
To: 10208
[-- Attachment #1: Type: text/plain, Size: 653 bytes --]
Achim Gratz <Stromeko@nexgo.de> writes:
> I still get this with a fresh build from the git repo:
>
> emacs/build> emacs -batch -Q --eval "(mapcar 'message load-path )"
> /usr/local/share/emacs/24.0.92/site-lisp
> /usr/local/share/emacs/site-lisp
> /usr/local/share/emacs/site-lisp/org
> /usr/local/share/emacs/24.0.92/lisp
> /usr/local/share/emacs/24.0.92/lisp/…
> /usr/local/share/emacs/24.0.92/leim
>
> The two site-lisp directories are configured as $(locallisppath). If I
> remove this, I don't get any site-lisp directories when starting Emacs
> normally.
If I put the equivalent (I think) of what lread.c should be doing into
no-site-lisp.el
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: no-site-lisp.el --]
[-- Type: text/x-emacs-lisp, Size: 238 bytes --]
(setq x-site-lisp nil)
(while (progn
(setq tem (car load-path))
(setq tem1 (string-match "site-lisp" tem))
(if tem1
(progn
(setq load-path (cdr load-path))
(setq x-site-lisp (cons tem x-site-lisp)))
nil)))
[-- Attachment #3: Type: text/plain, Size: 515 bytes --]
and load it like this, I get the expected result:
emacs/build> emacs --batch -Q -l no-site-lisp.el --eval "(mapcar 'message load-path )"
/usr/local/share/emacs/24.0.92/lisp
/usr/local/share/emacs/24.0.92/lisp/…
/usr/local/share/emacs/24.0.92/leim
I must be missing something or the option never propagates to lread.c?
Regards,
Achim.
--
+<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+
SD adaptation for Waldorf rackAttack V1.04R1:
http://Synth.Stromeko.net/Downloads.html#WaldorfSDada
^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#10208: site-lisp directories in load-path after --no-site-lisp
2012-01-06 21:57 ` Achim Gratz
@ 2012-01-07 17:18 ` Achim Gratz
2012-01-11 1:08 ` Glenn Morris
0 siblings, 1 reply; 10+ messages in thread
From: Achim Gratz @ 2012-01-07 17:18 UTC (permalink / raw)
To: 10208
Achim Gratz <Stromeko@nexgo.de> writes:
> I must be missing something or the option never propagates to lread.c?
The whole incantation that removes the site-lisp from load-path is
safeguarded with "if (!NILP (Vinstallation_directory))", so for the
installed Emacs the --no-site-lisp option is never actually acted upon,
since installation-directory is nil.
The places to safeguard are actually further down, so the following
patch (I have not touched indentation to minimize the number of changed
lines) would allow --no-site-lisp to take effect as described in the man
page (the way I've read it, anyway).
--8<---------------cut here---------------start------------->8---
diff --git a/src/lread.c b/src/lread.c
index 8e6b6f6..6367370 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -4128,10 +4128,9 @@ init_lread (void)
{
if (! NILP (Fequal (dump_path, Vload_path)))
{
+ int nilp_inst_dir = NILP (Vinstallation_directory);
+ Lisp_Object tem, tem1, sitelisp;
Vload_path = decode_env_path (0, normal);
- if (!NILP (Vinstallation_directory))
- {
- Lisp_Object tem, tem1, sitelisp;
/* Remove site-lisp dirs from path temporarily and store
them in sitelisp, then conc them on at the end so
@@ -4169,6 +4168,7 @@ init_lread (void)
Lisp dirs instead. */
Vload_path = nconc2 (Vload_path, dump_path);
+ if (!nilp_inst_dir) {
/* Add leim under the installation dir, if it exists. */
tem = Fexpand_file_name (build_string ("leim"),
Vinstallation_directory);
@@ -4191,7 +4191,7 @@ init_lread (void)
Vload_path = Fcons (tem, Vload_path);
}
}
-
+ }
/* If Emacs was not built in the source directory,
and it is run from where it was built, add to load-path
the lisp, leim and site-lisp dirs under that directory. */
@@ -4237,7 +4237,7 @@ init_lread (void)
}
if (!NILP (sitelisp) && !no_site_lisp)
Vload_path = nconc2 (Fnreverse (sitelisp), Vload_path);
- }
+
}
}
else
--8<---------------cut here---------------end--------------->8---
HTH,
Achim.
--
+<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+
SD adaptation for Waldorf rackAttack V1.04R1:
http://Synth.Stromeko.net/Downloads.html#WaldorfSDada
^ permalink raw reply related [flat|nested] 10+ messages in thread
* bug#10208: site-lisp directories in load-path after --no-site-lisp
2012-01-07 17:18 ` Achim Gratz
@ 2012-01-11 1:08 ` Glenn Morris
2012-01-12 10:38 ` ASSI
2012-01-17 21:42 ` Achim Gratz
0 siblings, 2 replies; 10+ messages in thread
From: Glenn Morris @ 2012-01-11 1:08 UTC (permalink / raw)
To: Achim Gratz; +Cc: 10208
Achim Gratz wrote:
> The whole incantation that removes the site-lisp from load-path is
> safeguarded with "if (!NILP (Vinstallation_directory))", so for the
> installed Emacs the --no-site-lisp option is never actually acted upon,
> since installation-directory is nil.
Thanks for tracking this down, I installed something similar.
I had not appreciated half of what init_lread does, nor that
installation-directory is actually nil in installed Emacs (and would be
better named "build-directory" IMO).
AFAICS, there are still the following issues:
i) EMACSLOADPATH overrides --no-site-lisp; it probably should not.
ii) This presumably means --no-site-lisp does not work in --with-ns
builds, since they set load-path via EMACSLOADPATH (IMO, it's a bug that
one part of Emacs uses an env-var just to communicate with another, see eg
http://debbugs.gnu.org/cgi/bugreport.cgi?bug=6401#48 )
These could both be solved by simply removing any Vload_path element
matching "site-lisp" near the end of init_lread. (I guess this would
remove the need for the MS Windows build to implement this feature
separately as well.)
This would still leave:
iii) Any --enable-locallisppath element that does not happen to have
"site-lisp" in its name will not get removed (but such elements already
mess things up because they will break the sorting of load-path that
init_lread tries to do).
Perhaps it would be better to split PATH_LOADSEARCH in epaths.h into a
default and site-lisp component, and simply not add the latter with
--no-site-lisp.
Finally, I noticed that you have some changes installed (for Org) that
are not marked as "tiny changes", yet you don't seem to have a copyright
assignment. IF you have not completed one, are you willing to do so?
The process is straightforward.
^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#10208: site-lisp directories in load-path after --no-site-lisp
2012-01-11 1:08 ` Glenn Morris
@ 2012-01-12 10:38 ` ASSI
2012-01-12 20:36 ` Glenn Morris
2012-01-17 21:42 ` Achim Gratz
1 sibling, 1 reply; 10+ messages in thread
From: ASSI @ 2012-01-12 10:38 UTC (permalink / raw)
To: Glenn Morris, 10208
Am 11.01.2012 02:08, schrieb Glenn Morris:
> Thanks for tracking this down, I installed something similar.
Appreciated, however I can't check right now.
> I had not appreciated half of what init_lread does, nor that
> installation-directory is actually nil in installed Emacs (and would be
> better named "build-directory" IMO).
Yes, this whole business of naming and using these variables might
require something of an overhaul.
> AFAICS, there are still the following issues:
>
> i) EMACSLOADPATH overrides --no-site-lisp; it probably should not.
I haven't given this one much thought so far; but again, the general
scheme might be in need of re-evaluation.
> ii) This presumably means --no-site-lisp does not work in --with-ns
> builds, since they set load-path via EMACSLOADPATH (IMO, it's a bug that
> one part of Emacs uses an env-var just to communicate with another, see eg
> http://debbugs.gnu.org/cgi/bugreport.cgi?bug=6401#48 )
>
> These could both be solved by simply removing any Vload_path element
> matching "site-lisp" near the end of init_lread. (I guess this would
> remove the need for the MS Windows build to implement this feature
> separately as well.)
I don't have a build environment set up on Windows, so I can't comment here.
> This would still leave:
>
> iii) Any --enable-locallisppath element that does not happen to have
> "site-lisp" in its name will not get removed (but such elements already
> mess things up because they will break the sorting of load-path that
> init_lread tries to do).
>
>
> Perhaps it would be better to split PATH_LOADSEARCH in epaths.h into a
> default and site-lisp component, and simply not add the latter with
> --no-site-lisp.
I'd be in favor of having separate path variables. The two searchpath
components are already seperately available in make during the build, so
it may not be even that difficult. However, such a change might need to
be postponed to the next release of Emacs.
> Finally, I noticed that you have some changes installed (for Org) that
> are not marked as "tiny changes", yet you don't seem to have a copyright
> assignment. IF you have not completed one, are you willing to do so?
> The process is straightforward.
I had sent you a mail last year regarding this, I'll send it again.
Please let me know if you don't get it.
--
Achim.
(on the road :-)
^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#10208: site-lisp directories in load-path after --no-site-lisp
2012-01-12 10:38 ` ASSI
@ 2012-01-12 20:36 ` Glenn Morris
0 siblings, 0 replies; 10+ messages in thread
From: Glenn Morris @ 2012-01-12 20:36 UTC (permalink / raw)
To: ASSI; +Cc: 10208
ASSI wrote:
> I'd be in favor of having separate path variables. The two searchpath
> components are already seperately available in make during the build,
> so it may not be even that difficult. However, such a change might
> need to be postponed to the next release of Emacs.
Yup.
>> Finally, I noticed that you have some changes installed (for Org) that
>> are not marked as "tiny changes", yet you don't seem to have a copyright
>> assignment. IF you have not completed one, are you willing to do so?
>> The process is straightforward.
>
> I had sent you a mail last year regarding this, I'll send it again.
> Please let me know if you don't get it.
Sorry, I had forgotten that we had discussed this before. Yes, I got
your mail; thanks.
^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#10208: site-lisp directories in load-path after --no-site-lisp
2012-01-11 1:08 ` Glenn Morris
2012-01-12 10:38 ` ASSI
@ 2012-01-17 21:42 ` Achim Gratz
1 sibling, 0 replies; 10+ messages in thread
From: Achim Gratz @ 2012-01-17 21:42 UTC (permalink / raw)
To: 10208
Glenn Morris <rgm@gnu.org> writes:
> Thanks for tracking this down, I installed something similar.
I confirm that "--no-site-lisp" now works correctly for my test case.
Achim.
--
+<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+
SD adaptations for KORG EX-800 and Poly-800MkII V0.9:
http://Synth.Stromeko.net/Downloads.html#KorgSDada
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2012-01-17 21:42 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-12-03 23:29 bug#10208: site-lisp directories in load-path after --no-site-lisp Juanma Barranquero
2011-12-07 2:18 ` Glenn Morris
2012-01-04 19:42 ` Achim Gratz
2012-01-06 21:57 ` Achim Gratz
2012-01-07 17:18 ` Achim Gratz
2012-01-11 1:08 ` Glenn Morris
2012-01-12 10:38 ` ASSI
2012-01-12 20:36 ` Glenn Morris
2012-01-17 21:42 ` Achim Gratz
2011-12-07 23:16 ` Juanma Barranquero
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).