444
|
1 @node Startup Paths, Packages, Command Switches, Top
|
428
|
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
|
|
11 paths. (A @dfn{path},
|
|
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 be moved to a different place. (This last case is not
|
|
26 as 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
|
|
33 @dfn{hierarchies} rooted under a directory which XEmacs assumes contain
|
|
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
|
|
38 hierarchy is called a @dfn{root}.
|
|
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
|
442
|
42 hierarchies XEmacs was able to scrounge up. In a
|
428
|
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.
|
|
56 Package hierarchies fall into three groups: @dfn{early}, @dfn{late},
|
|
57 and @dfn{last},
|
|
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
|
442
|
66 By default, XEmacs expects an early package hierarchy in the
|
|
67 subdirectory @file{.xemacs/xemacs-packages} of the user's home
|
|
68 directory.
|
428
|
69
|
|
70 Moreover, XEmacs expects late hierarchies in the subdirectories
|
|
71 @file{site-packages}, @file{mule-packages}, and @file{xemacs-packages}
|
|
72 (in that order) of the @file{<root>/lib/xemacs} subdirectory of one of
|
|
73 the installation hierarchies. (If you run in-place, these are direct
|
|
74 subdirectories of the build directory.) Furthermore, XEmacs will also
|
|
75 search these subdirectories in the @file{<root>/lib/xemacs-<VERSION>}
|
|
76 subdirectory and prefer directories found there.
|
|
77
|
|
78 By default, XEmacs does not have a pre-configured last package
|
|
79 hierarchy. Last hierarchies are primarily for using package hierarchies
|
|
80 of outdated versions of XEmacs as a fallback option. For example, it is
|
442
|
81 possible to run XEmacs 21 with the 20.4 package hierarchy as a last
|
428
|
82 hierarchy.
|
|
83
|
|
84 It is possible to specify at configure-time the location of the various
|
|
85 package hierarchies with the @code{--package-path} option to configure.
|
|
86 @cindex package path
|
|
87 The early, late, and last components of the package path are separated
|
442
|
88 by double instead of single colons. If all three components are
|
|
89 present, they locate the early, late, and last package hierarchies
|
428
|
90 respectively. If two components are present, they locate the early and
|
442
|
91 late hierarchies. If only one component is present, it locates the
|
|
92 late hierarchy. At run time, the package path may also be specified via
|
|
93 the @code{EMACSPACKAGEPATH} environment variable.
|
428
|
94
|
1183
|
95 An XEmacs package hierarchy is laid out just like a normal installed
|
1258
|
96 XEmacs directory. It may have @file{lisp}, @file{etc}, @file{info}, and
|
|
97 @file{lib-src} subdirectories. (The @file{lib-src} subdirectory
|
|
98 contains architecture-independent general-purpose scripts interpreted by
|
|
99 the shell or Perl. Java is also being widely used, but Java programs
|
|
100 are generally found under @file{etc}, because they are specific to
|
|
101 particular packages such as @file{JDE} and @file{xslt}.) XEmacs adds
|
|
102 these at appropriate places within the various system-wide paths.
|
428
|
103
|
|
104 There may be any number of package hierarchy directories.
|
|
105
|
|
106 @subsection Directories and Paths
|
|
107 @cindex paths
|
|
108
|
|
109 Here is a list of the various directories and paths XEmacs tries to
|
|
110 locate during startup. XEmacs distinguishes between directories and
|
|
111 paths specific to @dfn{version}, @dfn{site}, and @dfn{architecture}
|
|
112 when looking for them.
|
|
113
|
|
114 @table @code
|
|
115 @item version-specific
|
|
116 @cindex version-specific directories
|
|
117 directories are specific to the version of XEmacs they belong to and
|
|
118 typically reside under @file{<root>/lib/xemacs-<VERSION>}.
|
|
119 @item site-specific
|
|
120 @cindex site-specific directories
|
|
121 directories are independent of the version of XEmacs they belong to and
|
|
122 typically reside under @file{<root>/lib/xemacs}
|
|
123 @item architecture-specific
|
|
124 @cindex architecture-specific directories
|
|
125 directories are specific both to the version of XEmacs and the
|
|
126 architecture it runs on and typically reside under
|
|
127 @file{<root>/lib/xemacs-<VERSION>/<ARCHITECTURE>}.
|
|
128 @end table
|
|
129
|
|
130 During installation, all of these directories may also reside directly
|
|
131 under @file{<root>}, because that is where they are in the XEmacs tarball.
|
|
132
|
|
133 If XEmacs runs with the @code{-debug-paths} option (@pxref{Command
|
|
134 Switches}), it will print the values of these variables, hopefully
|
|
135 aiding in debugging any problems which come up.
|
|
136
|
|
137 @table @code
|
|
138
|
|
139 @item lisp-directory
|
|
140 @vindex lisp-directory
|
|
141 Contains the version-specific location of the Lisp files that come with
|
|
142 the core distribution of XEmacs. XEmacs will search it recursively to a
|
|
143 depth of 1 when setting up @code{load-path}.
|
|
144
|
|
145 @item load-path
|
|
146 @vindex load-path
|
|
147 Is where XEmacs searches for XEmacs Lisp files with commands like
|
|
148 @code{load-library}.
|
|
149 @findex load-library
|
|
150 It contains the package lisp directories (see further down) and the
|
|
151 version-specific core Lisp directories. If the environment variable
|
|
152 @code{EMACSLOADPATH} is set at startup, its directories are prepended to
|
|
153 @code{load-path}.
|
|
154 @vindex EMACSLOADPATH
|
|
155
|
|
156 @item Info-directory-list
|
|
157 @vindex Info-directory-list
|
|
158 Contains the location of info files. (See @ref{(info)}.) It contains
|
|
159 the package info directories and the version-specific core
|
|
160 documentation. Moreover, XEmacs will add @file{/usr/info},
|
|
161 @file{/usr/local/info} as well as the directories of the environment
|
|
162 variable @code{INFOPATH}
|
|
163 @vindex INFOPATH
|
|
164 to @code{Info-directory-list}.
|
|
165
|
|
166 @item exec-directory
|
|
167 @vindex exec-directory
|
|
168 Is the directory of architecture-dependent files that come with XEmacs,
|
|
169 especially executable programs intended for XEmacs to invoke.
|
|
170
|
|
171 @item exec-path
|
|
172 @vindex exec-path
|
|
173 Is the path for executables which XEmacs may want to start. It contains
|
|
174 the package executable paths as well as @code{exec-directory}, and the
|
|
175 directories of the environment variables @code{PATH}
|
|
176 @vindex PATH
|
|
177 and @code{EMACSPATH}.
|
|
178 @vindex EMACSPATH
|
|
179
|
|
180 @item doc-directory
|
|
181 @vindex doc-directory
|
|
182 Is the directory containing the architecture-specific @file{DOC} file
|
|
183 that contains documentation for XEmacs' commands.
|
|
184
|
|
185 @item data-directory
|
|
186 @vindex data-directory
|
|
187 Is the version-specific directory that contains core data files XEmacs uses.
|
|
188 It may be initialized from the @code{EMACSDATA}
|
|
189 @vindex EMACSDATA
|
|
190 environment variable.
|
|
191
|
|
192 @item data-directory-list
|
|
193 @vindex data-directory-list
|
|
194 Is the path where XEmacs looks for data files. It contains package data
|
|
195 directories as well as @code{data-directory}.
|
|
196
|
|
197 @end table
|
|
198
|
|
199
|