From ce316182baa016f42348a69da69cab3f319ad2fa Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Tue, 10 Jan 2012 19:56:25 -0500 Subject: [PATCH] init_lread fix for bug#10208. * src/lread.c (init_lread): If no-site-lisp, remove site-lisp dirs from load-path also when installation-directory is nil. --- src/ChangeLog | 5 ++ src/lread.c | 137 ++++++++++++++++++++++++++------------------------ 2 files changed, 75 insertions(+), 67 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index e359924e8f7..4c74a76e2aa 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2012-01-11 Glenn Morris + + * lread.c (init_lread): If no-site-lisp, remove site-lisp dirs + from load-path also when installation-directory is nil. (Bug#10208) + 2012-01-10 Glenn Morris * emacs.c (syms_of_emacs) : Doc fix. diff --git a/src/lread.c b/src/lread.c index 218efd90b36..23cda8eed6d 100644 --- a/src/lread.c +++ b/src/lread.c @@ -4169,17 +4169,17 @@ init_lread (void) if (! NILP (Fequal (dump_path, Vload_path))) { Vload_path = decode_env_path (0, normal); - if (!NILP (Vinstallation_directory)) + if (no_site_lisp || !NILP (Vinstallation_directory)) { Lisp_Object tem, tem1, sitelisp; /* Remove "site-lisp" dirs from front of path temporarily and store them in sitelisp, then conc them on at the end so they're always first in path. - Note that this won't work if you used a - --enable-locallisppath element that does not happen + Note that this won't work if you used a + --enable-locallisppath element that does not happen to contain "site-lisp" in its name. - */ + */ sitelisp = Qnil; while (1) { @@ -4195,93 +4195,96 @@ init_lread (void) break; } - /* Add to the path the lisp subdir of the - installation dir, if it exists. */ - tem = Fexpand_file_name (build_string ("lisp"), - Vinstallation_directory); - tem1 = Ffile_exists_p (tem); - if (!NILP (tem1)) + if (!NILP (Vinstallation_directory)) { - if (NILP (Fmember (tem, Vload_path))) - { - turn_off_warning = 1; - Vload_path = Fcons (tem, Vload_path); - } - } - else - /* That dir doesn't exist, so add the build-time - Lisp dirs instead. */ - Vload_path = nconc2 (Vload_path, dump_path); - - /* Add leim under the installation dir, if it exists. */ - tem = Fexpand_file_name (build_string ("leim"), - Vinstallation_directory); - tem1 = Ffile_exists_p (tem); - if (!NILP (tem1)) - { - if (NILP (Fmember (tem, Vload_path))) - Vload_path = Fcons (tem, Vload_path); - } - - /* Add site-lisp under the installation dir, if it exists. */ - if (!no_site_lisp) - { - tem = Fexpand_file_name (build_string ("site-lisp"), + /* Add to the path the lisp subdir of the + installation dir, if it exists. */ + tem = Fexpand_file_name (build_string ("lisp"), Vinstallation_directory); tem1 = Ffile_exists_p (tem); if (!NILP (tem1)) { if (NILP (Fmember (tem, Vload_path))) - Vload_path = Fcons (tem, Vload_path); + { + turn_off_warning = 1; + 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. */ - - if (NILP (Fequal (Vinstallation_directory, Vsource_directory))) - { - Lisp_Object tem2; + else + /* That dir doesn't exist, so add the build-time + Lisp dirs instead. */ + Vload_path = nconc2 (Vload_path, dump_path); - tem = Fexpand_file_name (build_string ("src/Makefile"), + /* Add leim under the installation dir, if it exists. */ + tem = Fexpand_file_name (build_string ("leim"), Vinstallation_directory); tem1 = Ffile_exists_p (tem); - - /* Don't be fooled if they moved the entire source tree - AFTER dumping Emacs. If the build directory is indeed - different from the source dir, src/Makefile.in and - src/Makefile will not be found together. */ - tem = Fexpand_file_name (build_string ("src/Makefile.in"), - Vinstallation_directory); - tem2 = Ffile_exists_p (tem); - if (!NILP (tem1) && NILP (tem2)) + if (!NILP (tem1)) { - tem = Fexpand_file_name (build_string ("lisp"), - Vsource_directory); - if (NILP (Fmember (tem, Vload_path))) Vload_path = Fcons (tem, Vload_path); + } - tem = Fexpand_file_name (build_string ("leim"), - Vsource_directory); + /* Add site-lisp under the installation dir, if it exists. */ + if (!no_site_lisp) + { + tem = Fexpand_file_name (build_string ("site-lisp"), + Vinstallation_directory); + tem1 = Ffile_exists_p (tem); + if (!NILP (tem1)) + { + if (NILP (Fmember (tem, Vload_path))) + Vload_path = Fcons (tem, Vload_path); + } + } - if (NILP (Fmember (tem, Vload_path))) - 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. */ - if (!no_site_lisp) + if (NILP (Fequal (Vinstallation_directory, Vsource_directory))) + { + Lisp_Object tem2; + + tem = Fexpand_file_name (build_string ("src/Makefile"), + Vinstallation_directory); + tem1 = Ffile_exists_p (tem); + + /* Don't be fooled if they moved the entire source tree + AFTER dumping Emacs. If the build directory is indeed + different from the source dir, src/Makefile.in and + src/Makefile will not be found together. */ + tem = Fexpand_file_name (build_string ("src/Makefile.in"), + Vinstallation_directory); + tem2 = Ffile_exists_p (tem); + if (!NILP (tem1) && NILP (tem2)) { - tem = Fexpand_file_name (build_string ("site-lisp"), + tem = Fexpand_file_name (build_string ("lisp"), Vsource_directory); if (NILP (Fmember (tem, Vload_path))) Vload_path = Fcons (tem, Vload_path); + + tem = Fexpand_file_name (build_string ("leim"), + Vsource_directory); + + if (NILP (Fmember (tem, Vload_path))) + Vload_path = Fcons (tem, Vload_path); + + if (!no_site_lisp) + { + tem = Fexpand_file_name (build_string ("site-lisp"), + Vsource_directory); + + if (NILP (Fmember (tem, Vload_path))) + Vload_path = Fcons (tem, Vload_path); + } } - } - } + } /* Vinstallation_directory != Vsource_directory */ + } /* if Vinstallation_directory */ if (!NILP (sitelisp) && !no_site_lisp) Vload_path = nconc2 (Fnreverse (sitelisp), Vload_path); - } /* if Vinstallation_directory */ + } /* if Vinstallation_directory || no_site_lisp */ } /* if dump_path == Vload_path */ } else /* !initialized */ -- 2.39.2