aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGlenn Morris2012-06-30 14:10:50 -0700
committerGlenn Morris2012-06-30 14:10:50 -0700
commitca26824cb07d494481a14fea1642d38ad6c2a9e4 (patch)
treec0a3d299f228fd444741729ea0549c1927f96582 /src
parent9ff8f76bbca43e021f842b24493885f1c034f6a4 (diff)
downloademacs-ca26824cb07d494481a14fea1642d38ad6c2a9e4.tar.gz
emacs-ca26824cb07d494481a14fea1642d38ad6c2a9e4.zip
Make --no-site-lisp work for --enable-locallisppath elements
without "site-lisp" in the name. Ref http://debbugs.gnu.org/10208#25, point iii). * configure.in (standardlisppath): New output variable. (lisppath): Use standardlisppath. * Makefile.in (standardlisppath): New, set by configure. (epaths-force): Use standardlisppath and locallisppath rather than lisppath. * src/epaths.in (PATH_SITELOADSEARCH): New. * src/lread.c (init_lread): Use PATH_SITELOADSEARCH. * nt/paths.h (PATH_SITELOADSEARCH): New. Fixes: debbugs:11658
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog7
-rw-r--r--src/epaths.in20
-rw-r--r--src/lread.c237
3 files changed, 136 insertions, 128 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index b79319a70ff..2391a9b7022 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,10 @@
12012-06-30 Glenn Morris <rgm@gnu.org>
2
3 * epaths.in (PATH_SITELOADSEARCH): New.
4 * lread.c (init_lread): Use PATH_SITELOADSEARCH.
5 This is rather than relying on --enable-locallisppath elements
6 having "site-lisp" in their names. (Bug#10208#25, 11658)
7
12012-06-30 Eli Zaretskii <eliz@gnu.org> 82012-06-30 Eli Zaretskii <eliz@gnu.org>
2 9
3 * w32proc.c (sys_select): Accept and ignore one more argument. 10 * w32proc.c (sys_select): Accept and ignore one more argument.
diff --git a/src/epaths.in b/src/epaths.in
index 17cb65a3234..705fe3aab1b 100644
--- a/src/epaths.in
+++ b/src/epaths.in
@@ -19,16 +19,26 @@ You should have received a copy of the GNU General Public License
19along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ 19along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
20 20
21 21
22/* The default value of load-path, which is the search path for 22/* Together with PATH_SITELOADSEARCH, this gives the default value of
23 the Lisp function "load". Configure (using "make epaths-force") 23 load-path, which is the search path for the Lisp function "load".
24 sets this to $lisppath, which typically has a value like: 24 Configure (using "make epaths-force") sets this to
25 <datadir>/emacs/VERSION/site-lisp:<datadir>/emacs/site-lisp: 25 ${standardlisppath}, which typically has a value like:
26 <datadir>/emacs/VERSION/lisp:<datadir>/emacs/VERSION/leim 26 <datadir>/emacs/VERSION/lisp:<datadir>/emacs/VERSION/leim
27 where datadir is eg /usr/local/share. 27 where datadir is eg /usr/local/share.
28*/
29#define PATH_LOADSEARCH "/usr/local/share/emacs/lisp"
30
31
32/* Like PATH_LOADSEARCH, but contains the non-standard pieces.
33 These are the site-lisp directories, typically something like
34 <datadir>/emacs/VERSION/site-lisp:<datadir>/emacs/site-lisp
28 Configure prepends any $locallisppath, as set by the 35 Configure prepends any $locallisppath, as set by the
29 --enable-locallisppath argument. 36 --enable-locallisppath argument.
37 This is combined with PATH_LOADSEARCH to make the default load-path.
38 If the --no-site-lisp option is used, this piece is excluded.
30*/ 39*/
31#define PATH_LOADSEARCH "/usr/local/share/emacs/lisp" 40#define PATH_SITELOADSEARCH "/usr/local/share/emacs/site-lisp"
41
32 42
33/* Like PATH_LOADSEARCH, but used only during the build process 43/* Like PATH_LOADSEARCH, but used only during the build process
34 when Emacs is dumping. Configure (using "make epaths-force") sets 44 when Emacs is dumping. Configure (using "make epaths-force") sets
diff --git a/src/lread.c b/src/lread.c
index 2cd203da5b9..7a0b20880e9 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -4072,15 +4072,15 @@ init_lread (void)
4072 int turn_off_warning = 0; 4072 int turn_off_warning = 0;
4073 4073
4074 /* Compute the default Vload-path, with the following logic: 4074 /* Compute the default Vload-path, with the following logic:
4075 If CANNOT_DUMP just use PATH_LOADSEARCH. 4075 If CANNOT_DUMP, just use PATH_LOADSEARCH, prepending PATH_SITELOADSEARCH
4076 unless --no-site-lisp.
4076 Else if purify-flag (ie dumping) start from PATH_DUMPLOADSEARCH; 4077 Else if purify-flag (ie dumping) start from PATH_DUMPLOADSEARCH;
4077 otherwise start from PATH_LOADSEARCH. 4078 otherwise start from PATH_LOADSEARCH.
4078 If !initialized, then just set both Vload_path and dump_path. 4079 If !initialized, then just set both Vload_path and dump_path.
4079 If initialized, then if Vload_path != dump_path, do nothing. 4080 If initialized, then if Vload_path != dump_path, do nothing.
4080 (Presumably the load-path has already been changed by something.) 4081 (Presumably the load-path has already been changed by something.
4081 Also do nothing if Vinstallation_directory is nil. 4082 This can only (?) be from a site-load file during dumping.)
4082 Otherwise: 4083 If Vinstallation_directory is not nil (ie, running uninstalled):
4083 Remove site-lisp directories from the front of load-path.
4084 Add installation-dir/lisp (if exists and not already a member), 4084 Add installation-dir/lisp (if exists and not already a member),
4085 at the front, and turn off warnings about missing directories 4085 at the front, and turn off warnings about missing directories
4086 (because we are presumably running uninstalled). 4086 (because we are presumably running uninstalled).
@@ -4094,8 +4094,7 @@ init_lread (void)
4094 install-dir/src/Makefile.in does NOT exist (this is a sanity 4094 install-dir/src/Makefile.in does NOT exist (this is a sanity
4095 check), then repeat the above steps for source-dir/lisp, 4095 check), then repeat the above steps for source-dir/lisp,
4096 leim and site-lisp. 4096 leim and site-lisp.
4097 Finally, add the previously removed site-lisp directories back 4097 Finally, add the site-lisp directories at the front (if !no_site_lisp).
4098 at the front (if !no_site_lisp).
4099 4098
4100 We then warn about any of the load-path elements that do not 4099 We then warn about any of the load-path elements that do not
4101 exist. The only ones that might not exist are those from 4100 exist. The only ones that might not exist are those from
@@ -4111,9 +4110,16 @@ init_lread (void)
4111 uninstalled, the eventual installation directories should not yet 4110 uninstalled, the eventual installation directories should not yet
4112 be included in load-path. 4111 be included in load-path.
4113 */ 4112 */
4113
4114#ifdef CANNOT_DUMP 4114#ifdef CANNOT_DUMP
4115 normal = PATH_LOADSEARCH; 4115 normal = PATH_LOADSEARCH;
4116 Vload_path = decode_env_path (0, normal); 4116 Vload_path = decode_env_path (0, normal);
4117 if (!no_site_lisp)
4118 {
4119 Lisp_Object sitelisp;
4120 sitelisp = decode_env_path (0, PATH_SITELOADSEARCH);
4121 if (! NILP (sitelisp)) Vload_path = nconc2 (sitelisp, Vload_path);
4122 }
4117#else 4123#else
4118 if (NILP (Vpurify_flag)) 4124 if (NILP (Vpurify_flag))
4119 normal = PATH_LOADSEARCH; 4125 normal = PATH_LOADSEARCH;
@@ -4131,123 +4137,108 @@ init_lread (void)
4131 if (! NILP (Fequal (dump_path, Vload_path))) 4137 if (! NILP (Fequal (dump_path, Vload_path)))
4132 { 4138 {
4133 Vload_path = decode_env_path (0, normal); 4139 Vload_path = decode_env_path (0, normal);
4134 if (no_site_lisp || !NILP (Vinstallation_directory)) 4140 if (!NILP (Vinstallation_directory))
4135 { 4141 {
4136 Lisp_Object tem, tem1, sitelisp; 4142 Lisp_Object tem, tem1;
4137 4143
4138 /* Remove "site-lisp" dirs from front of path temporarily 4144 /* Add to the path the lisp subdir of the
4139 and store them in sitelisp, then conc them on at the 4145 installation dir, if it exists. */
4140 end so they're always first in path. 4146 tem = Fexpand_file_name (build_string ("lisp"),
4141 Note that this won't work if you used a 4147 Vinstallation_directory);
4142 --enable-locallisppath element that does not happen 4148 tem1 = Ffile_exists_p (tem);
4143 to contain "site-lisp" in its name. 4149 if (!NILP (tem1))
4144 */ 4150 {
4145 sitelisp = Qnil; 4151 if (NILP (Fmember (tem, Vload_path)))
4146 while (1) 4152 {
4147 { 4153 turn_off_warning = 1;
4148 tem = Fcar (Vload_path); 4154 Vload_path = Fcons (tem, Vload_path);
4149 tem1 = Fstring_match (build_string ("site-lisp"), 4155 }
4150 tem, Qnil); 4156 }
4151 if (!NILP (tem1)) 4157 else
4152 { 4158 /* That dir doesn't exist, so add the build-time
4153 Vload_path = Fcdr (Vload_path); 4159 Lisp dirs instead. */
4154 sitelisp = Fcons (tem, sitelisp); 4160 Vload_path = nconc2 (Vload_path, dump_path);
4155 } 4161
4156 else 4162 /* Add leim under the installation dir, if it exists. */
4157 break; 4163 tem = Fexpand_file_name (build_string ("leim"),
4158 } 4164 Vinstallation_directory);
4159 4165 tem1 = Ffile_exists_p (tem);
4160 if (!NILP (Vinstallation_directory)) 4166 if (!NILP (tem1))
4161 { 4167 {
4162 /* Add to the path the lisp subdir of the 4168 if (NILP (Fmember (tem, Vload_path)))
4163 installation dir, if it exists. */ 4169 Vload_path = Fcons (tem, Vload_path);
4164 tem = Fexpand_file_name (build_string ("lisp"), 4170 }
4165 Vinstallation_directory); 4171
4166 tem1 = Ffile_exists_p (tem); 4172 /* Add site-lisp under the installation dir, if it exists. */
4167 if (!NILP (tem1)) 4173 if (!no_site_lisp)
4168 { 4174 {
4169 if (NILP (Fmember (tem, Vload_path))) 4175 tem = Fexpand_file_name (build_string ("site-lisp"),
4170 { 4176 Vinstallation_directory);
4171 turn_off_warning = 1; 4177 tem1 = Ffile_exists_p (tem);
4172 Vload_path = Fcons (tem, Vload_path); 4178 if (!NILP (tem1))
4173 } 4179 {
4174 } 4180 if (NILP (Fmember (tem, Vload_path)))
4175 else 4181 Vload_path = Fcons (tem, Vload_path);
4176 /* That dir doesn't exist, so add the build-time 4182 }
4177 Lisp dirs instead. */ 4183 }
4178 Vload_path = nconc2 (Vload_path, dump_path); 4184
4179 4185 /* If Emacs was not built in the source directory,
4180 /* Add leim under the installation dir, if it exists. */ 4186 and it is run from where it was built, add to load-path
4181 tem = Fexpand_file_name (build_string ("leim"), 4187 the lisp, leim and site-lisp dirs under that directory. */
4182 Vinstallation_directory); 4188
4183 tem1 = Ffile_exists_p (tem); 4189 if (NILP (Fequal (Vinstallation_directory, Vsource_directory)))
4184 if (!NILP (tem1)) 4190 {
4185 { 4191 Lisp_Object tem2;
4186 if (NILP (Fmember (tem, Vload_path))) 4192
4187 Vload_path = Fcons (tem, Vload_path); 4193 tem = Fexpand_file_name (build_string ("src/Makefile"),
4188 } 4194 Vinstallation_directory);
4189 4195 tem1 = Ffile_exists_p (tem);
4190 /* Add site-lisp under the installation dir, if it exists. */ 4196
4191 if (!no_site_lisp) 4197 /* Don't be fooled if they moved the entire source tree
4192 { 4198 AFTER dumping Emacs. If the build directory is indeed
4193 tem = Fexpand_file_name (build_string ("site-lisp"), 4199 different from the source dir, src/Makefile.in and
4194 Vinstallation_directory); 4200 src/Makefile will not be found together. */
4195 tem1 = Ffile_exists_p (tem); 4201 tem = Fexpand_file_name (build_string ("src/Makefile.in"),
4196 if (!NILP (tem1)) 4202 Vinstallation_directory);
4197 { 4203 tem2 = Ffile_exists_p (tem);
4198 if (NILP (Fmember (tem, Vload_path))) 4204 if (!NILP (tem1) && NILP (tem2))
4199 Vload_path = Fcons (tem, Vload_path); 4205 {
4200 } 4206 tem = Fexpand_file_name (build_string ("lisp"),
4201 } 4207 Vsource_directory);
4202 4208
4203 /* If Emacs was not built in the source directory, 4209 if (NILP (Fmember (tem, Vload_path)))
4204 and it is run from where it was built, add to load-path 4210 Vload_path = Fcons (tem, Vload_path);
4205 the lisp, leim and site-lisp dirs under that directory. */ 4211
4206 4212 tem = Fexpand_file_name (build_string ("leim"),
4207 if (NILP (Fequal (Vinstallation_directory, Vsource_directory))) 4213 Vsource_directory);
4208 { 4214
4209 Lisp_Object tem2; 4215 if (NILP (Fmember (tem, Vload_path)))
4210 4216 Vload_path = Fcons (tem, Vload_path);
4211 tem = Fexpand_file_name (build_string ("src/Makefile"), 4217
4212 Vinstallation_directory); 4218 if (!no_site_lisp)
4213 tem1 = Ffile_exists_p (tem); 4219 {
4214 4220 tem = Fexpand_file_name (build_string ("site-lisp"),
4215 /* Don't be fooled if they moved the entire source tree 4221 Vsource_directory);
4216 AFTER dumping Emacs. If the build directory is indeed 4222
4217 different from the source dir, src/Makefile.in and 4223 if (NILP (Fmember (tem, Vload_path)))
4218 src/Makefile will not be found together. */ 4224 Vload_path = Fcons (tem, Vload_path);
4219 tem = Fexpand_file_name (build_string ("src/Makefile.in"), 4225 }
4220 Vinstallation_directory); 4226 }
4221 tem2 = Ffile_exists_p (tem); 4227 } /* Vinstallation_directory != Vsource_directory */
4222 if (!NILP (tem1) && NILP (tem2)) 4228
4223 { 4229 } /* if Vinstallation_directory */
4224 tem = Fexpand_file_name (build_string ("lisp"), 4230
4225 Vsource_directory); 4231 /* Add the site-lisp directories at the front. */
4226 4232 /* Note: If the site changed the load-path during dumping,
4227 if (NILP (Fmember (tem, Vload_path))) 4233 --no-site-lisp is ignored. I don't know what to do about this.
4228 Vload_path = Fcons (tem, Vload_path); 4234 */
4229 4235 if (!no_site_lisp)
4230 tem = Fexpand_file_name (build_string ("leim"), 4236 {
4231 Vsource_directory); 4237 Lisp_Object sitelisp;
4232 4238 sitelisp = decode_env_path (0, PATH_SITELOADSEARCH);
4233 if (NILP (Fmember (tem, Vload_path))) 4239 if (! NILP (sitelisp)) Vload_path = nconc2 (sitelisp, Vload_path);
4234 Vload_path = Fcons (tem, Vload_path); 4240 }
4235 4241 } /* if dump_path == Vload_path */
4236 if (!no_site_lisp)
4237 {
4238 tem = Fexpand_file_name (build_string ("site-lisp"),
4239 Vsource_directory);
4240
4241 if (NILP (Fmember (tem, Vload_path)))
4242 Vload_path = Fcons (tem, Vload_path);
4243 }
4244 }
4245 } /* Vinstallation_directory != Vsource_directory */
4246 } /* if Vinstallation_directory */
4247 if (!NILP (sitelisp) && !no_site_lisp)
4248 Vload_path = nconc2 (Fnreverse (sitelisp), Vload_path);
4249 } /* if Vinstallation_directory || no_site_lisp */
4250 } /* if dump_path == Vload_path */
4251 } 4242 }
4252 else /* !initialized */ 4243 else /* !initialized */
4253 { 4244 {