72e126085ef279175e0c8719506f7d4e46ca27a4
[chise/xemacs-chise.git.1] / man / xemacs / startup.texi
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
11 paths.  (A @emph{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 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
33 @emph{hierachies} 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 @emph{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
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.
56 Package hierarchies fall into three groups: @emph{early}, @emph{late},
57 and @emph{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
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
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.
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
106 paths specific to @emph{version}, @emph{site}, and @emph{architecture}
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
125 If XEmacs runs with the @code{-debug-paths} option (@xref{Command
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}.
180 @vindex EMCSPATH
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