diff man/xemacs/startup.texi @ 428:3ecd8885ac67 r21-2-22

Import from CVS: tag r21-2-22
author cvs
date Mon, 13 Aug 2007 11:28:15 +0200
parents
children 3a7e78e1142d
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/man/xemacs/startup.texi	Mon Aug 13 11:28:15 2007 +0200
@@ -0,0 +1,204 @@
+@node Startup Paths, Basic, Command Switches, Top
+@comment  node-name,  next,  previous,  up
+@section How XEmacs finds Directories and Files
+
+@cindex startup paths
+@cindex directories
+
+XEmacs deals with a multitude of files during operation.  These files
+are spread over many directories, and XEmacs determines the location of
+most of these directories at startup and organizes them into various
+paths.  (A @dfn{path},
+@cindex path
+for the purposes of this section, is simply a list of directories which
+XEmacs searches successively in order to locate a file.)
+
+@subsection XEmacs Directory Hierarchies
+@cindex hierarchies
+@cindex directory hierarchies
+
+Many of the files XEmacs looks for are located within the XEmacs
+installation itself.  However, there are several views of what actually
+constitutes the "XEmacs installation": XEmacs may be run from the
+compilation directory, it may be installed into arbitrary directories,
+spread over several directories unrelated to each other.  Moreover, it
+may subsequently be moved to a different place.  (This last case is not
+as uncommon as it sounds.  Binary kits work this way.)  Consequently,
+XEmacs has quite complex procedures in place to find directories, no
+matter where they may be hidden.
+
+XEmacs will always respect directory options passed to @code{configure}.
+However, if it cannot locate a directory at the configured place, it
+will initiate a search for the directory in any of a number of
+@dfn{hierarchies} rooted under a directory which XEmacs assumes contain
+parts of the XEmacs installation; it may locate several such hierarchies
+and search across them.  (Typically, there are just one or two
+hierarchies: the hierarchy where XEmacs was or will be installed, and
+the one where it is being built.)  Such a directory containing a
+hierarchy is called a @dfn{root}.
+@cindex root of a hierarchy
+Whenever this section refers to a directory using the shorthand
+@code{<root>}, it means that XEmacs searches for it under all
+hierarchies under all hierarchies XEmacs was able to scrounge up.  In a
+running XEmacs, the hierarchy roots are stored in the variable
+@code{emacs-roots}.
+@vindex emacs-roots
+
+@subsection Package Hierarchies
+@cindex package hierarchies
+
+Many relevant directories and files XEmacs uses are actually not part of
+the core installation.  They are part of any of the many packages
+usually installed on top of an XEmacs installation.  (@xref{Packages}.)
+Hence, they play a prominent role in the various paths XEmacs sets up.
+
+XEmacs locates packages in any of a number of package hierarchies.
+Package hierarchies fall into three groups: @dfn{early}, @dfn{late},
+and @dfn{last},
+@cindex early package hierarchies
+@cindex late package hierarchies
+@cindex last package hierarchies
+according to the relative location at which they show
+up in the various XEmacs paths.  Early package hierarchies are at the
+very front, late ones somewhere in the middle, and last hierarchies are
+(you guessed it) last.
+
+By default, XEmacs expects an early package hierarchy in the a
+subdirectory @file{.xemacs} of the user's home directory.
+
+Moreover, XEmacs expects late hierarchies in the subdirectories
+@file{site-packages}, @file{mule-packages}, and @file{xemacs-packages}
+(in that order) of the @file{<root>/lib/xemacs} subdirectory of one of
+the installation hierarchies.  (If you run in-place, these are direct
+subdirectories of the build directory.)  Furthermore, XEmacs will also
+search these subdirectories in the @file{<root>/lib/xemacs-<VERSION>}
+subdirectory and prefer directories found there.
+
+By default, XEmacs does not have a pre-configured last package
+hierarchy.  Last hierarchies are primarily for using package hierarchies
+of outdated versions of XEmacs as a fallback option.  For example, it is
+possible to run XEmacs 21.0 with the 20.4 package hierarchy as a last
+hierarchy.
+
+It is possible to specify at configure-time the location of the various
+package hierarchies with the @code{--package-path} option to configure.
+@cindex package path
+The early, late, and last components of the package path are separated
+by double instead of single colons.  If three components are present,
+they are locate the early, late, and last package hierarchies
+respectively.  If two components are present, they locate the early and
+late hierarchies.  If only one component is present, it locates the late
+hierarchy.  At run time, the package path may also be specified via the
+@code{PACKAGEPATH} environment variable.
+
+An XEmacs package is laid out just like a normal installed XEmacs lisp
+directory.  It may have @file{lisp}, @file{etc}, @file{info}, and
+@file{lib-src} subdirectories.  XEmacs adds these at appropriate places
+within the various system-wide paths.
+
+There may be any number of package hierarchy directories.
+
+@subsection Directories and Paths
+@cindex paths
+
+Here is a list of the various directories and paths XEmacs tries to
+locate during startup.  XEmacs distinguishes between directories and
+paths specific to @dfn{version}, @dfn{site}, and @dfn{architecture}
+when looking for them.
+
+@table @code
+@item version-specific
+@cindex version-specific directories
+directories are specific to the version of XEmacs they belong to and
+typically reside under @file{<root>/lib/xemacs-<VERSION>}.
+@item site-specific
+@cindex site-specific directories
+directories are independent of the version of XEmacs they belong to and
+typically reside under @file{<root>/lib/xemacs}
+@item architecture-specific
+@cindex architecture-specific directories
+directories are specific both to the version of XEmacs and the
+architecture it runs on and typically reside under
+@file{<root>/lib/xemacs-<VERSION>/<ARCHITECTURE>}.
+@end table
+
+During installation, all of these directories may also reside directly
+under @file{<root>}, because that is where they are in the XEmacs tarball.
+
+If XEmacs runs with the @code{-debug-paths} option (@pxref{Command
+Switches}), it will print the values of these variables, hopefully
+aiding in debugging any problems which come up.
+
+@table @code
+
+@item lisp-directory
+@vindex lisp-directory
+Contains the version-specific location of the Lisp files that come with
+the core distribution of XEmacs.  XEmacs will search it recursively to a
+depth of 1 when setting up @code{load-path}.
+
+@item load-path
+@vindex load-path
+Is where XEmacs searches for XEmacs Lisp files with commands like
+@code{load-library}.
+@findex load-library
+It contains the package lisp directories (see further down) and the
+version-specific core Lisp directories.  If the environment variable
+@code{EMACSLOADPATH} is set at startup, its directories are prepended to
+@code{load-path}.
+@vindex EMACSLOADPATH
+
+@item Info-directory-list
+@vindex Info-directory-list
+Contains the location of info files.  (See @ref{(info)}.)  It contains
+the package info directories and the version-specific core
+documentation.  Moreover, XEmacs will add @file{/usr/info},
+@file{/usr/local/info} as well as the directories of the environment
+variable @code{INFOPATH}
+@vindex INFOPATH
+to @code{Info-directory-list}.
+
+@item lock-directory
+@itemx superlock-file
+@vindex lock-directory
+@vindex superlock-file
+Are the site-specific locations of the lock directory and the superlock
+file, respectively.  The @code{lock-directory} variable may also be
+initialized from the @code{EMACSLOCKDIR}
+@vindex EMACSLOCKDIR
+environment variable.
+
+@item exec-directory
+@vindex exec-directory
+Is the directory of architecture-dependent files that come with XEmacs,
+especially executable programs intended for XEmacs to invoke.
+
+@item exec-path
+@vindex exec-path
+Is the path for executables which XEmacs may want to start.  It contains
+the package executable paths as well as @code{exec-directory}, and the
+directories of the environment variables @code{PATH}
+@vindex PATH
+and @code{EMACSPATH}.
+@vindex EMACSPATH
+
+@item doc-directory
+@vindex doc-directory
+Is the directory containing the architecture-specific @file{DOC} file
+that contains documentation for XEmacs' commands.
+
+@item data-directory
+@vindex data-directory
+Is the version-specific directory that contains core data files XEmacs uses.
+It may be initialized from the @code{EMACSDATA}
+@vindex EMACSDATA
+environment variable.
+
+@item data-directory-list
+@vindex data-directory-list
+Is the path where XEmacs looks for data files.  It contains package data
+directories as well as @code{data-directory}.
+
+@end table
+
+