371
|
1 @node Startup Paths, Basic, Command Switches, Top
|
296
|
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
|
371
|
11 paths. (A @emph{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
|
371
|
33 @emph{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
|
371
|
38 hierarchy is called a @emph{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
|
371
|
42 hierarchies under all hierarchies XEmacs was able to scrounge up. In a
|
296
|
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.
|
371
|
56 Package hierarchies fall into three groups: @emph{early}, @emph{late},
|
|
57 and @emph{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
|
371
|
72 the installation hierarchies. (If you run in-place, these are directr
|
296
|
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
|
371
|
78 hierarchy. Last hierarchies are primarily for using package
|
|
79 hierarchies of outdated versions of XEmacs as a fallback option. For
|
|
80 example, it is possible to run XEmacs with the 20.4 package hierarchy
|
|
81 as a last 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
|
371
|
87 by double instead of single colons. If three components are present,
|
|
88 they are locate the early, late, and last package hierarchies
|
296
|
89 respectively. If two components are present, they locate the early and
|
371
|
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.
|
296
|
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
|
371
|
106 paths specific to @emph{version}, @emph{site}, and @emph{architecture}
|
296
|
107 when looking for them.
|
|
108
|
|
109 @table @code
|
|
110 @item version-specific
|
|
111 directories are specific to the version of XEmacs they belong to and
|
|
112 typically reside under @file{<root>/lib/xemacs-<VERSION>}.
|
|
113 @item site-specific
|
|
114 directories are independent of the version of XEmacs they belong to and
|
|
115 typically reside under @file{<root>/lib/xemacs}
|
|
116 @item architecture-specific
|
|
117 directories are specific both to the version of XEmacs and the
|
|
118 architecture it runs on and typically reside under
|
|
119 @file{<root>/lib/xemacs-<VERSION>/<ARCHITECTURE>}.
|
|
120 @end table
|
|
121
|
|
122 During installation, all of these directories may also reside directly
|
|
123 under @file{<root>}, because that is where they are in the XEmacs tarball.
|
|
124
|
371
|
125 If XEmacs runs with the @code{-debug-paths} option (@xref{Command
|
296
|
126 Switches}), it will print the values of these variables, hopefully
|
|
127 aiding in debugging any problems which come up.
|
|
128
|
|
129 @table @code
|
|
130
|
|
131 @item lisp-directory
|
|
132 @vindex lisp-directory
|
|
133 Contains the version-specific location of the Lisp files that come with
|
|
134 the core distribution of XEmacs. XEmacs will search it recursively to a
|
|
135 depth of 1 when setting up @code{load-path}.
|
|
136
|
|
137 @item load-path
|
|
138 @vindex load-path
|
|
139 Is where XEmacs searches for XEmacs Lisp files with commands like
|
|
140 @code{load-library}.
|
|
141 @findex load-library
|
|
142 It contains the package lisp directories (see further down) and the
|
|
143 version-specific core Lisp directories. If the environment variable
|
|
144 @code{EMACSLOADPATH} is set at startup, its directories are prepended to
|
|
145 @code{load-path}.
|
|
146 @vindex EMACSLOADPATH
|
|
147
|
|
148 @item Info-directory-list
|
|
149 @vindex Info-directory-list
|
|
150 Contains the location of info files. (See @ref{(info)}.) It contains
|
|
151 the package info directories and the version-specific core
|
|
152 documentation. Moreover, XEmacs will add @file{/usr/info},
|
|
153 @file{/usr/local/info} as well as the directories of the environment
|
|
154 variable @code{INFOPATH}
|
|
155 @vindex INFOPATH
|
|
156 to @code{Info-directory-list}.
|
|
157
|
|
158 @item lock-directory
|
|
159 @itemx superlock-file
|
|
160 @vindex lock-directory
|
|
161 @vindex superlock-file
|
|
162 Are the site-specific locations of the lock directory and the superlock
|
|
163 file, respectively. The @code{lock-directory} variable may also be
|
|
164 initialized from the @code{EMACSLOCKDIR}
|
|
165 @vindex EMACSLOCKDIR
|
|
166 environment variable.
|
|
167
|
|
168 @item exec-directory
|
|
169 @vindex exec-directory
|
|
170 Is the directory of architecture-dependent files that come with XEmacs,
|
|
171 especially executable programs intended for XEmacs to invoke.
|
|
172
|
|
173 @item exec-path
|
|
174 @vindex exec-path
|
|
175 Is the path for executables which XEmacs may want to start. It contains
|
|
176 the package executable paths as well as @code{exec-directory}, and the
|
|
177 directories of the environment variables @code{PATH}
|
|
178 @vindex PATH
|
|
179 and @code{EMACSPATH}.
|
371
|
180 @vindex EMCSPATH
|
296
|
181
|
|
182 @item doc-directory
|
|
183 @vindex doc-directory
|
|
184 Is the directory containing the architecture-specific @file{DOC} file
|
|
185 that contains documentation for XEmacs' commands.
|
|
186
|
|
187 @item data-directory
|
|
188 @vindex data-directory
|
|
189 Is the version-specific directory that contains core data files XEmacs uses.
|
|
190 It may be initialized from the @code{EMACSDATA}
|
|
191 @vindex EMACSDATA
|
|
192 environment variable.
|
|
193
|
|
194 @item data-directory-list
|
|
195 @vindex data-directory-list
|
|
196 Is the path where XEmacs looks for data files. It contains package data
|
|
197 directories as well as @code{data-directory}.
|
|
198
|
|
199 @end table
|
|
200
|
|
201
|