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
|
3179
|
85 package directories with the @code{--with-user-packages} (an alias for
|
|
86 @samp{--with-early-packages}), @code{--with-system-packages} (an alias
|
|
87 for @samp{--with-late-packages}), and @code{--with-legacy-packages} (an
|
|
88 alias for @samp{--with-last-packages}) options to configure.
|
428
|
89 @cindex package path
|
3179
|
90 At run time, the package directories may also be specified via the
|
|
91 @code{EMACSEARLYPACKAGES}, @code{EMACSLATEPACKAGES}, and
|
|
92 @code{EMACSLASTPACKAGES} environment variables.
|
428
|
93
|
1183
|
94 An XEmacs package hierarchy is laid out just like a normal installed
|
1258
|
95 XEmacs directory. It may have @file{lisp}, @file{etc}, @file{info}, and
|
|
96 @file{lib-src} subdirectories. (The @file{lib-src} subdirectory
|
|
97 contains architecture-independent general-purpose scripts interpreted by
|
|
98 the shell or Perl. Java is also being widely used, but Java programs
|
|
99 are generally found under @file{etc}, because they are specific to
|
|
100 particular packages such as @file{JDE} and @file{xslt}.) XEmacs adds
|
|
101 these at appropriate places within the various system-wide paths.
|
428
|
102
|
|
103 There may be any number of package hierarchy directories.
|
|
104
|
|
105 @subsection Directories and Paths
|
|
106 @cindex paths
|
|
107
|
|
108 Here is a list of the various directories and paths XEmacs tries to
|
|
109 locate during startup. XEmacs distinguishes between directories and
|
|
110 paths specific to @dfn{version}, @dfn{site}, and @dfn{architecture}
|
|
111 when looking for them.
|
|
112
|
|
113 @table @code
|
|
114 @item version-specific
|
|
115 @cindex version-specific directories
|
|
116 directories are specific to the version of XEmacs they belong to and
|
|
117 typically reside under @file{<root>/lib/xemacs-<VERSION>}.
|
|
118 @item site-specific
|
|
119 @cindex site-specific directories
|
|
120 directories are independent of the version of XEmacs they belong to and
|
|
121 typically reside under @file{<root>/lib/xemacs}
|
|
122 @item architecture-specific
|
|
123 @cindex architecture-specific directories
|
|
124 directories are specific both to the version of XEmacs and the
|
|
125 architecture it runs on and typically reside under
|
|
126 @file{<root>/lib/xemacs-<VERSION>/<ARCHITECTURE>}.
|
|
127 @end table
|
|
128
|
|
129 During installation, all of these directories may also reside directly
|
|
130 under @file{<root>}, because that is where they are in the XEmacs tarball.
|
|
131
|
|
132 If XEmacs runs with the @code{-debug-paths} option (@pxref{Command
|
|
133 Switches}), it will print the values of these variables, hopefully
|
|
134 aiding in debugging any problems which come up.
|
|
135
|
|
136 @table @code
|
|
137
|
|
138 @item lisp-directory
|
|
139 @vindex lisp-directory
|
|
140 Contains the version-specific location of the Lisp files that come with
|
|
141 the core distribution of XEmacs. XEmacs will search it recursively to a
|
|
142 depth of 1 when setting up @code{load-path}.
|
|
143
|
|
144 @item load-path
|
|
145 @vindex load-path
|
|
146 Is where XEmacs searches for XEmacs Lisp files with commands like
|
|
147 @code{load-library}.
|
|
148 @findex load-library
|
|
149 It contains the package lisp directories (see further down) and the
|
|
150 version-specific core Lisp directories. If the environment variable
|
|
151 @code{EMACSLOADPATH} is set at startup, its directories are prepended to
|
|
152 @code{load-path}.
|
|
153 @vindex EMACSLOADPATH
|
|
154
|
|
155 @item Info-directory-list
|
|
156 @vindex Info-directory-list
|
|
157 Contains the location of info files. (See @ref{(info)}.) It contains
|
|
158 the package info directories and the version-specific core
|
|
159 documentation. Moreover, XEmacs will add @file{/usr/info},
|
|
160 @file{/usr/local/info} as well as the directories of the environment
|
|
161 variable @code{INFOPATH}
|
|
162 @vindex INFOPATH
|
|
163 to @code{Info-directory-list}.
|
|
164
|
|
165 @item exec-directory
|
|
166 @vindex exec-directory
|
|
167 Is the directory of architecture-dependent files that come with XEmacs,
|
|
168 especially executable programs intended for XEmacs to invoke.
|
|
169
|
|
170 @item exec-path
|
|
171 @vindex exec-path
|
|
172 Is the path for executables which XEmacs may want to start. It contains
|
|
173 the package executable paths as well as @code{exec-directory}, and the
|
|
174 directories of the environment variables @code{PATH}
|
|
175 @vindex PATH
|
|
176 and @code{EMACSPATH}.
|
|
177 @vindex EMACSPATH
|
|
178
|
|
179 @item doc-directory
|
|
180 @vindex doc-directory
|
|
181 Is the directory containing the architecture-specific @file{DOC} file
|
|
182 that contains documentation for XEmacs' commands.
|
|
183
|
|
184 @item data-directory
|
|
185 @vindex data-directory
|
|
186 Is the version-specific directory that contains core data files XEmacs uses.
|
|
187 It may be initialized from the @code{EMACSDATA}
|
|
188 @vindex EMACSDATA
|
|
189 environment variable.
|
|
190
|
|
191 @item data-directory-list
|
|
192 @vindex data-directory-list
|
|
193 Is the path where XEmacs looks for data files. It contains package data
|
|
194 directories as well as @code{data-directory}.
|
|
195
|
|
196 @end table
|
|
197
|
|
198
|