Source

apel / install.el

Diff from to

File install.el

 
 ;;; Code:
 
-;; for historical reason, we do (require 'emu) in this file.
-;; but you should do (require 'emu) explicitly if you use functions and/or
-;; variables defined in emu module.
-(require 'emu)
+(require 'poe)				; make-directory for v18
 (require 'path-util)			; default-load-path
 
-;; verbatim copy of `defun-maybe' from poe.el, and
-;; `make-directory-internal' and `make-directory' from poe-18.el
-(defmacro defun-maybe (name &rest everything-else)
-  "Define NAME as a function if NAME is not defined.
-See also the function `defun'."
-  (or (and (fboundp name)
-	   (not (get name 'defun-maybe)))
-      (` (or (fboundp (quote (, name)))
-	     (prog1
-		 (defun (, name) (,@ everything-else))
-	       (put (quote (, name)) 'defun-maybe t))))))
-
-(defun-maybe make-directory-internal (dirname)
-  "Create a directory. One argument, a file name string."
-  (let ((dir (expand-file-name dirname)))
-    (if (file-exists-p dir)
-	(error "Creating directory: %s is already exist" dir)
-      (call-process "mkdir" nil nil nil dir))))
-
-(defun-maybe make-directory (dir &optional parents)
-  "Create the directory DIR and any nonexistent parent dirs.
-The second (optional) argument PARENTS says whether
-to create parent directories if they don't exist."
-  (let ((len (length dir))
-	(p 0) p1 path)
-    (catch 'tag
-      (while (and (< p len) (string-match "[^/]*/?" dir p))
-	(setq p1 (match-end 0))
-	(if (= p1 len)
-	    (throw 'tag nil))
-	(setq path (substring dir 0 p1))
-	(if (not (file-directory-p path))
-	    (cond ((file-exists-p path)
-		   (error "Creating directory: %s is not directory" path))
-		  ((null parents)
-		   (error "Creating directory: %s is not exist" path))
-		  (t
-		   (make-directory-internal path))))
-	(setq p p1)))
-    (make-directory-internal dir)))
-
 
 ;;; @ compile Emacs Lisp files
 ;;;
 	(byte-compile-file el-file))))
 
 (defun compile-elisp-modules (modules &optional path every-time)
-  (mapcar (function
-	   (lambda (module)
-	     (compile-elisp-module module path every-time)))
-	  modules))
+  (mapcar
+   (function
+    (lambda (module)
+      (compile-elisp-module module path every-time)))
+   modules))
 
 
 ;;; @ install files
 ;;;
 
-(defvar install-overwritten-file-modes (+ (* 64 6)(* 8 4) 4))
+(defvar install-overwritten-file-modes (+ (* 64 6)(* 8 4) 4)) ; 0644
 
 (defun install-file (file src dest &optional move overwrite just-print)
   (if just-print
 (defun install-files (files src dest &optional move overwrite just-print)
   (or (file-exists-p dest)
       (make-directory dest t))
-  (mapcar (function
-	   (lambda (file)
-	     (install-file file src dest move overwrite just-print)))
-	  files))
+  (mapcar
+   (function
+    (lambda (file)
+      (install-file file src dest move overwrite just-print)))
+   files))
 
 
 ;;; @@ install Emacs Lisp files
 (defun install-elisp-modules (modules src dest &optional just-print)
   (or (file-exists-p dest)
       (make-directory dest t))
-  (mapcar (function
-	   (lambda (module)
-	     (install-elisp-module module src dest just-print)))
-	  modules))
+  (mapcar
+   (function
+    (lambda (module)
+      (install-elisp-module module src dest just-print)))
+   modules))
 
 
 ;;; @ detect install path
 
 ;; install to shared directory (maybe "/usr/local")
 (defvar install-prefix
-  (if (or (<= emacs-major-version 18)	; running-emacs-18
-	  (featurep 'xemacs)		; running-xemacs
+  (if (or (<= emacs-major-version 18)
+	  (featurep 'xemacs)
 	  (and (boundp 'system-configuration-options) ; 19.29 or later
 	       (string= system-configuration-options "NT"))) ; for Meadow
       (expand-file-name "../../.." exec-directory)
 (defvar install-elisp-prefix
   (if (>= emacs-major-version 19)
       "site-lisp"
+    ;; v18 does not have standard site directory.
     "local.lisp"))
 
 (defun install-detect-elisp-directory (&optional prefix elisp-prefix
       (setq prefix install-prefix))
   (or elisp-prefix
       (setq elisp-prefix install-elisp-prefix))
-  (or
-   (catch 'tag
-     (let ((rest default-load-path)
-	   (pat (concat "^"
-			(expand-file-name (concat ".*/" elisp-prefix) prefix)
-			"/?$")))
-       (while rest
-	 (if (string-match pat (car rest))
-	     (if (or allow-version-specific
-		     (not (string-match (format "/%d\\.%d"
-						emacs-major-version
-						emacs-minor-version)
-					(car rest))))
-		 (throw 'tag (car rest))))
-	 (setq rest (cdr rest)))))
-   (expand-file-name (concat
-		      (if (and		; running-emacs-19_29-or-later
-			   (not (featurep 'xemacs))
-			   (or (>= emacs-major-version 20)
-			       (and (= emacs-major-version 19)
-				    (>= emacs-minor-version 29))))
-			  "share/"
-			"lib/")
-		      (cond ((boundp 'NEMACS) "nemacs/")
-			    ((boundp 'MULE)   "mule/")
-			    ((featurep 'xemacs)	; running-xemacs
-			     (if (featurep 'mule)
-				 "xmule/"
-			       "xemacs/"))
-			    (t "emacs/"))
-		      elisp-prefix)
-		     prefix)))
+  (or (catch 'tag
+	(let ((rest default-load-path)
+	      (regexp (concat "^"
+			      (expand-file-name (concat ".*/" elisp-prefix)
+						prefix)
+			      "/?$")))
+	  (while rest
+	    (if (string-match regexp (car rest))
+		(if (or allow-version-specific
+			(not (string-match (format "/%d\\.%d"
+						   emacs-major-version
+						   emacs-minor-version)
+					   (car rest))))
+		    (throw 'tag (car rest))))
+	    (setq rest (cdr rest)))))
+      (expand-file-name (concat (if (and (not (featurep 'xemacs))
+					 (or (>= emacs-major-version 20)
+					     (and (= emacs-major-version 19)
+						  (> emacs-minor-version 28))))
+				    "share/"
+				  "lib/")
+				(cond
+				 ((featurep 'xemacs)
+				  (if (featurep 'mule)
+				      "xmule/"
+				    "xemacs/"))
+				 ;; unfortunately, unofficial mule based on
+				 ;; 19.29 and later use "emacs/" by default.
+				 ((boundp 'MULE) "mule/")
+				 ((boundp 'NEMACS) "nemacs/")
+				 (t "emacs/"))
+				elisp-prefix)
+			prefix)))
 
 (defvar install-default-elisp-directory
   (install-detect-elisp-directory))
 ;;; @ end
 ;;;
 
-(provide 'install)
+(require 'product)
+(product-provide (provide 'install) (require 'apel-ver))
 
 ;;; install.el ends here