296
|
1 @node Startup Paths, Basic, Command Switches, Top
|
|
2 @comment node-name, next, previous, up
|
|
3 @section How XEmacs finds Directories and Files
|
|
4
|
|
5 @cindex startup paths
|
|
6 @cindex directories
|
|
7
|
|
8 XEmacs deals with a multitude of files during operation. These files
|
|
9 are spread over many directories, and XEmacs determines the location of
|
|
10 most of these directories at startup and organizes them into various
|
306
|
11 paths. (A @dfn{path},
|
296
|
12 @cindex path
|
|
13 for the purposes of this section, is simply a list of directories which
|
|
14 XEmacs searches successively in order to locate a file.)
|
|
15
|
|
16 @subsection XEmacs Directory Hierarchies
|
|
17 @cindex hierarchies
|
|
18 @cindex directory hierarchies
|
|
19
|
|
20 Many of the files XEmacs looks for are located within the XEmacs
|
|
21 installation itself. However, there are several views of what actually
|
|
22 constitutes the "XEmacs installation": XEmacs may be run from the
|
|
23 compilation directory, it may be installed into arbitrary directories,
|
|
24 spread over several directories unrelated to each other. Moreover, it
|
|
25 may subsequently moved to a different place. (This last case is not as
|
|
26 uncommon as it sounds. Binary kits work this way.) Consequently,
|
|
27 XEmacs has quite complex procedures in place to find directories, no
|
|
28 matter where they may be hidden.
|
|
29
|
|
30 XEmacs will always respect directory options passed to @code{configure}.
|
|
31 However, if it cannot locate a directory at the configured place, it
|
|
32 will initiate a search for the directory in any of a number of
|
306
|
33 @dfn{hierachies} rooted under a directory which XEmacs assumes contain
|
296
|
34 parts of the XEmacs installation; it may locate several such hierarchies
|
|
35 and search across them. (Typically, there are just one or two
|
|
36 hierarchies: the hierarchy where XEmacs was or will be installed, and
|
|
37 the one where it is being built.) Such a directory containing a
|
306
|
38 hierarchy is called a @dfn{root}.
|
296
|
39 @cindex root of a hierarchy
|
|
40 Whenever this section refers to a directory using the shorthand
|
|
41 @code{<root>}, it means that XEmacs searches for it under all
|
|
42 hierarchies under all hierarchies XEmacs was able to scrounge up. In a
|
|
43 running XEmacs, the hierarchy roots are stored in the variable
|
|
44 @code{emacs-roots}.
|
|
45 @vindex emacs-roots
|
|
46
|
|
47 @subsection Package Hierarchies
|
|
48 @cindex package hierarchies
|
|
49
|
|
50 Many relevant directories and files XEmacs uses are actually not part of
|
|
51 the core installation. They are part of any of the many packages
|
|
52 usually installed on top of an XEmacs installation. (@xref{Packages}.)
|
|
53 Hence, they play a prominent role in the various paths XEmacs sets up.
|
|
54
|
|
55 XEmacs locates packages in any of a number of package hierarchies.
|
306
|
56 Package hierarchies fall into three groups: @dfn{early}, @dfn{late},
|
|
57 and @dfn{last},
|
296
|
58 @cindex early package hierarchies
|
|
59 @cindex late package hierarchies
|
|
60 @cindex last package hierarchies
|
|
61 according to the relative location at which they show
|
|
62 up in the various XEmacs paths. Early package hierarchies are at the
|
|
63 very front, late ones somewhere in the middle, and last hierarchies are
|
|
64 (you guessed it) last.
|
|
65
|
|
66 By default, XEmacs expects an early package hierarchy in the a
|
|
67 subdirectory @file{.xemacs} of the user's home directory.
|
|
68
|
|
69 Moreover, XEmacs expects late hierarchies in the subdirectories
|
|
70 @file{site-packages}, @file{mule-packages}, and @file{xemacs-packages}
|
|
71 (in that order) of the @file{<root>/lib/xemacs} subdirectory of one of
|
|
72 the installation hierarchies. (If you run in-place, these are directr
|
|
73 subdirectories of the build directory.) Furthermore, XEmacs will also
|
|
74 search these subdirectories in the @file{<root>/lib/xemacs-<VERSION>}
|
|
75 subdirectory and prefer directories found there.
|
|
76
|
|
77 By default, XEmacs does not have a pre-configured last package
|
306
|
78 hierarchy. Last hierarchies are primarily for using package hierarchies
|
|
79 of outdated versions of XEmacs as a fallback option. For example, it is
|
|
80 possible to run XEmacs 21.0 with the 20.4 package hierarchy as a last
|
|
81 hierarchy.
|
296
|
82
|
|
83 It is possible to specify at configure-time the location of the various
|
|
84 package hierarchies with the @code{--package-path} option to configure.
|
|
85 @cindex package path
|
|
86 The early, late, and last components of the package path are separated
|
|
87 by double instead of single colons. If three components are present,
|
|
88 they are locate the early, late, and last package hierarchies
|
|
89 respectively. If two components are present, they locate the early and
|
|
90 late hierarchies. If only one component is present, it locates the late
|
|
91 hierarchy. At run time, the package path may also be specified via the
|
|
92 @code{PACKAGEPATH} environment variable.
|
|
93
|
|
94 An XEmacs package is laid out just like a normal installed XEmacs lisp
|
|
95 directory. It may have @file{lisp}, @file{etc}, @file{info}, and
|
|
96 @file{lib-src} subdirectories. XEmacs adds these at appropriate places
|
|
97 within the various system-wide paths.
|
|
98
|
|
99 There may be any number of package hierarchy directories.
|
|
100
|
|
101 @subsection Directories and Paths
|
|
102 @cindex paths
|
|
103
|
|
104 Here is a list of the various directories and paths XEmacs tries to
|
|
105 locate during startup. XEmacs distinguishes between directories and
|
306
|
106 paths specific to @dfn{version}, @dfn{site}, and @dfn{architecture}
|
296
|
107 when looking for them.
|
|
108
|
|
109 @table @code
|
|
110 @item version-specific
|
306
|
111 @cindex version-specific directories
|
296
|
112 directories are specific to the version of XEmacs they belong to and
|
|
113 typically reside under @file{<root>/lib/xemacs-<VERSION>}.
|
|
114 @item site-specific
|
306
|
115 @cindex site-specific directories
|
296
|
116 directories are independent of the version of XEmacs they belong to and
|
|
117 typically reside under @file{<root>/lib/xemacs}
|
|
118 @item architecture-specific
|
306
|
119 @cindex architecture-specific directories
|
296
|
120 directories are specific both to the version of XEmacs and the
|
|
121 architecture it runs on and typically reside under
|
|
122 @file{<root>/lib/xemacs-<VERSION>/<ARCHITECTURE>}.
|
|
123 @end table
|
|
124
|
|
125 During installation, all of these directories may also reside directly
|
|
126 under @file{<root>}, because that is where they are in the XEmacs tarball.
|
|
127
|
|
128 If XEmacs runs with the @code{-debug-paths} option (@xref{Command
|
|
129 Switches}), it will print the values of these variables, hopefully
|
|
130 aiding in debugging any problems which come up.
|
|
131
|
|
132 @table @code
|
|
133
|
|
134 @item lisp-directory
|
|
135 @vindex lisp-directory
|
|
136 Contains the version-specific location of the Lisp files that come with
|
|
137 the core distribution of XEmacs. XEmacs will search it recursively to a
|
|
138 depth of 1 when setting up @code{load-path}.
|
|
139
|
|
140 @item load-path
|
|
141 @vindex load-path
|
|
142 Is where XEmacs searches for XEmacs Lisp files with commands like
|
|
143 @code{load-library}.
|
|
144 @findex load-library
|
|
145 It contains the package lisp directories (see further down) and the
|
|
146 version-specific core Lisp directories. If the environment variable
|
|
147 @code{EMACSLOADPATH} is set at startup, its directories are prepended to
|
|
148 @code{load-path}.
|
|
149 @vindex EMACSLOADPATH
|
|
150
|
|
151 @item Info-directory-list
|
|
152 @vindex Info-directory-list
|
|
153 Contains the location of info files. (See @ref{(info)}.) It contains
|
|
154 the package info directories and the version-specific core
|
|
155 documentation. Moreover, XEmacs will add @file{/usr/info},
|
|
156 @file{/usr/local/info} as well as the directories of the environment
|
|
157 variable @code{INFOPATH}
|
|
158 @vindex INFOPATH
|
|
159 to @code{Info-directory-list}.
|
|
160
|
|
161 @item lock-directory
|
|
162 @itemx superlock-file
|
|
163 @vindex lock-directory
|
|
164 @vindex superlock-file
|
|
165 Are the site-specific locations of the lock directory and the superlock
|
|
166 file, respectively. The @code{lock-directory} variable may also be
|
|
167 initialized from the @code{EMACSLOCKDIR}
|
|
168 @vindex EMACSLOCKDIR
|
|
169 environment variable.
|
|
170
|
|
171 @item exec-directory
|
|
172 @vindex exec-directory
|
|
173 Is the directory of architecture-dependent files that come with XEmacs,
|
|
174 especially executable programs intended for XEmacs to invoke.
|
|
175
|
|
176 @item exec-path
|
|
177 @vindex exec-path
|
|
178 Is the path for executables which XEmacs may want to start. It contains
|
|
179 the package executable paths as well as @code{exec-directory}, and the
|
|
180 directories of the environment variables @code{PATH}
|
|
181 @vindex PATH
|
|
182 and @code{EMACSPATH}.
|
|
183 @vindex EMCSPATH
|
|
184
|
|
185 @item doc-directory
|
|
186 @vindex doc-directory
|
|
187 Is the directory containing the architecture-specific @file{DOC} file
|
|
188 that contains documentation for XEmacs' commands.
|
|
189
|
|
190 @item data-directory
|
|
191 @vindex data-directory
|
|
192 Is the version-specific directory that contains core data files XEmacs uses.
|
|
193 It may be initialized from the @code{EMACSDATA}
|
|
194 @vindex EMACSDATA
|
|
195 environment variable.
|
|
196
|
|
197 @item data-directory-list
|
|
198 @vindex data-directory-list
|
|
199 Is the path where XEmacs looks for data files. It contains package data
|
|
200 directories as well as @code{data-directory}.
|
|
201
|
|
202 @end table
|
|
203
|
|
204
|