Hi, Michael,
Sorry to bring this up again, I know this topic has been hashed out
multiple times, but I'm in a small fix and I could use some help. I
hope I've just missed something with respect to package configuration.
As you may know, I've recently created a Windows-native setup kit for
21.4. This setup kit can run on the user's machine and the resulting
software can be installed in a directory of the user's choosing. The
kit includes both core 21.4 (binaries and lisp) and also a default set
of packages. If I understand correctly, in order for those packages
to be found at run-time, the builder of the 21.4 kit must either: 1)
know an absolute path where the packages will be installed or 2) the
packages must be installed under the root of the XEmacs 21.4 tree.
To be more concrete, if I use the following settings in the nt/config.inc file:
INSTALL_DIR=c:\Program Files\XEmacs\XEmacs-$(XEMACS_VERSION_STRING)
PACKAGE_PREFIX=C:\Program Files\XEmacs
and build and install XEmacs 21.4, then I can run from
c:\Program Files\XEmacs\XEmacs-21.4.18\i586-pc-win32\xemacs.exe
and Bob's my uncle and all works great. But if once I make a setup
kit from that build, I (or any other user) can install to a different
hierarchy, say "c:\Program Files\XEmacs1" and the packages will not be
found when running the XEmacs binary.
As far as I understand, assuming I want the users to be able to
install to arbitrary locations, I can fix this in either of 2 ways:
1) I can install the packages underneath the 21.4.18 hierarchy or
2) I can set EMACSPACKAGEPATH (either through the registry or an
environment variable) to point to the package hierarchy.
Both of those solutions are slightly problematic from my point of
view: #1 is kind of aesthetically yucky (the packages and the core are
distinct and I don't want to install my packages underneath my core)
and besides, I'd like to be able to install multiple cores (21.4.18,
21.4.19 and 21.5.b23, for instance) in parallel directories and not
force each one to have its own package tree. #2 currently does not
seem to work identically for 21.4 and 21.5 - "xemacs-packages" gets
appended to EMACSPACKAGEPATH for 21.4 but not for 21.5. Other than
that, I suppose solution #2 works, but it would be nice not to have to
have to set the envariable; it's one more thing that can go wrong in
the user's installation.
Michael - do you have any suggestions or insights? At configuration
time, Is it possible to specify a package path _relative_ to the
installation directory? (I just tried specifying
--with-package-prefix=.. (on my Linux box) to a 21.5 configure, and
when running XEmacs, that got interpreted as relative to the current
directory at run time.) Alternatively, is there a small amount of
lisp I could generate at install time and add it to site-start.el? My
thinking is that this code could propose an alternate package root at
startup time. Or does site-start.el run too late in the init process?
Thank you for your help,
Vin