[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

A flaw in current emacsen package setup?



Hi,

	I have noticed a problem recently in in the way packages
 modify the load path.  I am attaching what the load-path var looks
 like in a freshly started emacs21. Please note that first in the path
 come local lisp directories, as they should. Then come directories
 added by add-on packages. Then come directories I have in /usr/local
 -- then come the standard directories in /usr/share --- including the
 directories of add-on packages, repeated!!

	The glaring problem with this is that the add-on packages
 (including my packages, gnus and vm) are violating emacs policy --
 the /usr/local paths are supposed to have precedence over the paths
 of standard emacs packages installed by Debian. However, the add-on
 packages need to have their paths ahead of the standard paths -- so
 the order ought to be
      paths added by me --- /usr/local/ --- add-on packages -- standard
 This way, if I wish, I can override even stand alone packages, if I
 wish, by placing it in /usr/local (as I do with cvs versions of gnus,
 bbdb, and tramp). 

======================================================================
9) Emacs lisp load path.

   At a minimum, each emacs has the following directories in the given
   order in their load path:

     /etc/<flavor>
     /etc/emacs
     /usr/local/share/emacs/<upstream>/site-lisp
     /usr/local/share/emacs/site-lisp
     /usr/share/emacs/<upstream>/site-lisp
     /usr/share/emacs/site-lisp
======================================================================

	The add-on packages ought to be using something like the
 function contributed by Sam Hartman <hartmans@mekinok.com>, which is
 also appended as an attachment below. This allows them to insert
 their path into the load-path *after* the local paths, but before the
 standard emacs paths. 

	Perhaps add-after-local (or a renamed version of the function)
 should be provided by default, and policy changed to recommend the
 use of that function.

	I am copying this message to all packages currently violating
 the emacsen policy on load-paths. Please consider this fair warning
 for serious bugs to be filed when we reach a solution of this issue.

	manoj

load-path's value is 
("/home/srivasta/lib/emacs/debian" "/home/srivasta/lib/emacs/x-support" "/home/srivasta/lib/emacs/modes" "/home/srivasta/lib/emacs/mail" "/home/srivasta/lib/emacs/lisp" "/home/srivasta/lib/emacs/bbdb" "/home/srivasta/lib/emacs/functions" "/home/srivasta/lib/emacs/config" "/home/srivasta/lib/emacs/emacs21" "/home/srivasta/lib/emacs" "/usr/share/emacs21/site-lisp/xae" "/usr/share/emacs21/site-lisp/tramp" "/usr/share/emacs21/site-lisp/speedbar" "/usr/share/emacs21/site-lisp/psgml" "/usr/share/emacs21/site-lisp/pcl-cvs/" "/usr/share/emacs21/site-lisp/maxima" "/usr/share/emacs21/site-lisp/gnuserv" "/usr/share/emacs21/site-lisp/erc" "/usr/share/emacs21/site-lisp/emacs-goodies-el" "/usr/share/emacs21/site-lisp/eieio" "/usr/share/emacs21/site-lisp/dpkg-dev-el" "/usr/share/emacs21/site-lisp/debbugs-el" "/usr/share/emacs/site-lisp/debbugs-el" "/usr/share/emacs21/site-lisp/cxref" "/usr/share/emacs21/site-lisp/calc" "/usr/share/emacs21/site-lisp/auctex/" "/usr/share/emacs21/site-lisp/elib/" "/usr/share/emacs21/site-lisp/gnus" "/etc/emacs21" "/etc/emacs" "/usr/local/share/emacs/21.1/site-lisp" "/usr/local/share/emacs/site-lisp" "/usr/local/share/emacs/site-lisp/bbdb-cvs" "/usr/local/share/emacs/site-lisp/dmacro" "/usr/local/share/emacs/site-lisp/functions" "/usr/local/share/emacs/site-lisp/gnus-cvs" "/usr/local/share/emacs/site-lisp/mailcrypt-cvs" "/usr/local/share/emacs/site-lisp/site-start.d" "/usr/local/share/emacs/site-lisp/tramp-cvs" "/usr/local/share/emacs/site-lisp/url-cvs" "/usr/local/share/emacs/site-lisp/w3-cvs" "/usr/local/share/emacs/site-lisp/bbdb-cvs/bits" "/usr/local/share/emacs/site-lisp/bbdb-cvs/html" "/usr/local/share/emacs/site-lisp/bbdb-cvs/lisp" "/usr/local/share/emacs/site-lisp/bbdb-cvs/misc" "/usr/local/share/emacs/site-lisp/bbdb-cvs/tex" "/usr/local/share/emacs/site-lisp/bbdb-cvs/texinfo" "/usr/local/share/emacs/site-lisp/bbdb-cvs/utils" "/usr/local/share/emacs/site-lisp/gnus-cvs/contrib" "/usr/local/share/emacs/site-lisp/gnus-cvs/debian" "/usr/local/share/emacs/site-lisp/gnus-cvs/etc" "/usr/local/share/emacs/site-lisp/gnus-cvs/lisp" "/usr/local/share/emacs/site-lisp/gnus-cvs/texi" "/usr/local/share/emacs/site-lisp/tramp-cvs/lisp" "/usr/local/share/emacs/site-lisp/tramp-cvs/test" "/usr/local/share/emacs/site-lisp/tramp-cvs/texi" "/usr/local/share/emacs/site-lisp/url-cvs/lisp" "/usr/local/share/emacs/site-lisp/url-cvs/texi" "/usr/local/share/emacs/site-lisp/w3-cvs/contrib" "/usr/local/share/emacs/site-lisp/w3-cvs/etc" "/usr/local/share/emacs/site-lisp/w3-cvs/lisp" "/usr/local/share/emacs/site-lisp/w3-cvs/tests" "/usr/local/share/emacs/site-lisp/w3-cvs/texi" "/usr/local/share/emacs/site-lisp/bbdb-cvs/bits/bbdb-filters" "/usr/local/share/emacs/site-lisp/bbdb-cvs/html/images" "/usr/local/share/emacs/site-lisp/bbdb-cvs/html/patches" "/usr/local/share/emacs/site-lisp/gnus-cvs/etc/gnus" "/usr/local/share/emacs/site-lisp/gnus-cvs/etc/smilies" "/usr/local/share/emacs/site-lisp/gnus-cvs/texi/etc" "/usr/local/share/emacs/site-lisp/gnus-cvs/texi/herds" "/usr/local/share/emacs/site-lisp/gnus-cvs/texi/misc" "/usr/local/share/emacs/site-lisp/gnus-cvs/texi/picons" "/usr/local/share/emacs/site-lisp/gnus-cvs/texi/ps" "/usr/local/share/emacs/site-lisp/gnus-cvs/texi/screen" "/usr/local/share/emacs/site-lisp/gnus-cvs/texi/smilies" "/usr/local/share/emacs/site-lisp/gnus-cvs/texi/xface" "/usr/local/share/emacs/site-lisp/tramp-cvs/texi/tramp" "/usr/local/share/emacs/site-lisp/w3-cvs/etc/w3" "/usr/local/share/emacs/site-lisp/bbdb-cvs/bits/bbdb-filters/doc" "/usr/local/share/emacs/site-lisp/w3-cvs/etc/w3/pixmaps" "/usr/local/share/emacs/site-lisp/bbdb-cvs/bits/bbdb-filters/doc/formatted" "/usr/share/emacs/21.1/site-lisp" "/usr/share/emacs/site-lisp" "/usr/share/emacs/21.1/leim" "/usr/share/emacs/21.1/lisp" "/usr/share/emacs/21.1/lisp/toolbar" "/usr/share/emacs/21.1/lisp/textmodes" "/usr/share/emacs/21.1/lisp/progmodes" "/usr/share/emacs/21.1/lisp/play" "/usr/share/emacs/21.1/lisp/obsolete" "/usr/share/emacs/21.1/lisp/net" "/usr/share/emacs/21.1/lisp/mail" "/usr/share/emacs/21.1/lisp/language" "/usr/share/emacs/21.1/lisp/international" "/usr/share/emacs/21.1/lisp/gnus" "/usr/share/emacs/21.1/lisp/eshell" "/usr/share/emacs/21.1/lisp/emulation" "/usr/share/emacs/21.1/lisp/emacs-lisp" "/usr/share/emacs/21.1/lisp/calendar" "/usr/share/emacs21/site-lisp/url" "/usr/share/emacs21/site-lisp/vm" "/usr/share/emacs21/site-lisp/w3-el")


Documentation:
*List of directories to search for files to load.
Each element is a string (directory name) or nil (try default directory).
Initialized based on EMACSLOADPATH environment variable, if any,
otherwise to default specified by file `epaths.h' when Emacs was built.

Attachment: add-after-local.el
Description: add a path component after the /usr/local components


-- 
 "You stay here, Audrey -- this is between me and the vegetable!"
 Seymour, from _Little Shop Of Horrors_
Manoj Srivastava   <srivasta@debian.org>  <http://www.debian.org/%7Esrivasta/>
1024R/C7261095 print CB D9 F4 12 68 07 E4 05  CC 2D 27 12 1D F5 E8 6E
1024D/BF24424C print 4966 F272 D093 B493 410B  924B 21BA DABB BF24 424C

Reply to: