Mercurial > hg > xemacs-beta
diff lisp/packages.el @ 3179:15139dbf89f4
[xemacs-hg @ 2005-12-27 18:50:47 by michaels]
This:
2005-11-25 Mike Sperber <mike@xemacs.org>
* CHANGES-beta:
* configure.ac: Zap --with-package-prefix; instead, add
--with-user-packages/--with-early-packages,
--with-system-packages/--with-late-packages, and
--with-legacy-packages/--with-last-packages.
... and the changes that result from it throughout the code.
author | michaels |
---|---|
date | Tue, 27 Dec 2005 18:51:30 +0000 |
parents | 8dc793d1d990 |
children | 072ccc89ac3c |
line wrap: on
line diff
--- a/lisp/packages.el Mon Dec 26 22:50:50 2005 +0000 +++ b/lisp/packages.el Tue Dec 27 18:51:30 2005 +0000 @@ -345,7 +345,9 @@ Returns list of hierarchies." (paths-directories-which-exist (mapcar #'(lambda (package-directory) - (file-name-as-directory (concat package-directory base))) + (file-name-as-directory + (concat (file-name-as-directory package-directory) + base))) package-directories))) (defun packages-split-path (path) @@ -387,44 +389,67 @@ (paths-uniq-append (paths-find-version-directories roots "" nil nil t) (paths-find-site-directories roots ""))) -(defun packages-find-package-hierarchies (package-directories &optional default) +(defun packages-find-package-hierarchies (package-directories &optional envvar default) "Find package hierarchies in a list of package directories. PACKAGE-DIRECTORIES is a list of package directories. -DEFAULT is a default list of package hierarchies." - (or default - (let ((package-hierarchies '()) - (hierarchy-directories (packages-package-hierarchy-directory-names))) - (while hierarchy-directories - (setq package-hierarchies - (nconc package-hierarchies - (packages-find-package-hierarchies-named - package-directories - (car hierarchy-directories)))) - (setq hierarchy-directories (cdr hierarchy-directories))) - package-hierarchies))) +DEFAULT is a default list of package hierarchies. +ENVVAR is the name of an environment variable that may override +the default." + (let* ((envvar-value (and envvar (getenv envvar))) + (package-directories + (if envvar-value + (split-path envvar-value) + package-directories))) + + (or (and (not envvar-value) default) + (let ((package-hierarchies '()) + (hierarchy-directories (packages-package-hierarchy-directory-names))) + (while hierarchy-directories + (setq package-hierarchies + (nconc package-hierarchies + (packages-find-package-hierarchies-named + package-directories + (car hierarchy-directories)))) + (setq hierarchy-directories (cdr hierarchy-directories))) + package-hierarchies)))) (defun packages-find-all-package-hierarchies (roots) - "Find the package hierarchies. + "Find the package hierarchies. ROOTS is a list of installation roots. Returns a list of three directory lists, the first being the list of early hierarchies, the second that of the late hierarchies, and the third the list of the last hierarchies." + ;; EMACSPACKAGEPATH is a historical kludge (let ((envvar-value (getenv "EMACSPACKAGEPATH"))) - (if envvar-value - (packages-split-package-path (paths-decode-directory-path envvar-value)) + (cond + (envvar-value + (packages-split-package-path (paths-decode-directory-path envvar-value))) + (configure-package-path (packages-deconstruct (packages-split-package-path configure-package-path) - #'(lambda (configure-early-package-hierarchies - configure-late-package-hierarchies - configure-last-package-hierarchies) + #'(lambda (early late last) (list (packages-find-package-hierarchies (list user-init-directory) - configure-early-package-hierarchies) + "EMACSEARLYPACKAGES" + early) (packages-find-package-hierarchies (packages-find-installation-package-directories roots) - configure-late-package-hierarchies) + "EMACSLATEPACKAGES" + + late) (packages-find-package-hierarchies '() - configure-last-package-hierarchies))))))) - + "EMACSLASTPACKAGES" + last))))) + (t + (list + (packages-find-package-hierarchies (or configure-early-package-directories + (list user-init-directory)) + "EMACSEARLYPACKAGES") + (packages-find-package-hierarchies (or configure-late-package-directories + (packages-find-installation-package-directories roots)) + "EMACSLATEPACKAGES") + (packages-find-package-hierarchies configure-last-package-directories + "EMACSLASTPACKAGES")))))) + (defun packages-find-package-library-path (package-hierarchies suffixes) "Construct a path into a component of the packages hierarchy. PACKAGE-HIERARCHIES is a list of package hierarchies.