X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=install.el;h=1b9b927d21de5bd62ef53bb80f65eb2a29968c96;hb=dd959fee54edf9e7dbb451c326bee79d501f2139;hp=e5572677928d53060fb84ec17f0b4f5c142ebea5;hpb=68b802f4f6cc82a8b46e62c283f96a51774aa5de;p=elisp%2Fapel.git diff --git a/install.el b/install.el index e557267..1b9b927 100644 --- a/install.el +++ b/install.el @@ -3,11 +3,11 @@ ;; Copyright (C) 1996 Free Software Foundation, Inc. ;; Author: MORIOKA Tomohiko -;; Created: 1996/8/18 -;; Version: $Id: install.el,v 1.6 1996/08/30 15:12:25 morioka Exp $ -;; Keywords: install +;; Created: 1996/08/18 +;; Version: $Id: install.el,v 4.2 1997/11/06 15:52:08 morioka Exp $ +;; Keywords: install, byte-compile, directory detection -;; This file is part of tl (Tiny Library). +;; This file is part of APEL (A Portable Emacs Library). ;; This program is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as @@ -20,12 +20,19 @@ ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License -;; along with this program; see the file COPYING. If not, write to +;; along with GNU Emacs; see the file COPYING. If not, write to ;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Code: +(require 'emu) +(require 'path-util) + + +;;; @ compile Emacs Lisp files +;;; + (defun compile-elisp-module (module &optional path every-time) (setq module (expand-file-name (symbol-name module) path)) (let ((el-file (concat module ".el")) @@ -45,6 +52,9 @@ modules)) +;;; @ install files +;;; + (defvar install-overwritten-file-modes (+ (* 64 6)(* 8 4) 4)) (defun install-file (file src dest &optional move overwrite) @@ -52,7 +62,7 @@ (if (file-exists-p src-file) (let ((full-path (expand-file-name file dest))) (if (and (file-exists-p full-path) overwrite) - (set-file-modes full-path install-overwritten-file-modes) + (delete-file full-path) ) (copy-file src-file full-path t t) (if move @@ -79,6 +89,10 @@ )) files)) + +;;; @@ install Emacs Lisp files +;;; + (defun install-elisp-module (module src dest) (let (el-file elc-file) (let ((name (symbol-name module))) @@ -89,7 +103,7 @@ (if (file-exists-p src-file) (let ((full-path (expand-file-name el-file dest))) (if (file-exists-p full-path) - (set-file-modes full-path install-overwritten-file-modes) + (delete-file full-path) ) (copy-file src-file full-path t t) (princ (format "%s -> %s\n" el-file dest)) @@ -97,6 +111,9 @@ (setq src-file (expand-file-name elc-file src)) (if (file-exists-p src-file) (let ((full-path (expand-file-name elc-file dest))) + (if (file-exists-p full-path) + (delete-file full-path) + ) (copy-file src-file full-path t t) (catch 'tag (while (file-exists-p src-file) @@ -121,6 +138,65 @@ modules)) +;;; @ detect install path +;;; + +(defvar install-prefix + (if (or running-emacs-18 running-xemacs) + (expand-file-name "../../.." exec-directory) + (expand-file-name "../../../.." data-directory) + )) ; install to shared directory (maybe "/usr/local") + +(defvar install-elisp-prefix + (if (>= emacs-major-version 19) + "site-lisp" + "local.lisp")) + +(defun install-detect-elisp-directory (&optional prefix elisp-prefix + allow-version-specific) + (or prefix + (setq prefix install-prefix) + ) + (or elisp-prefix + (setq elisp-prefix install-elisp-prefix) + ) + (or + (catch 'tag + (let ((rest default-load-path) + dir) + (while (setq dir (car rest)) + (if (string-match + `,(concat "^" + (expand-file-name (concat ".*/" elisp-prefix) prefix) + "/?$") + dir) + (if (or allow-version-specific + (not (string-match (format "%d\\.%d" + emacs-major-version + emacs-minor-version) dir)) + ) + (throw 'tag dir) + )) + (setq rest (cdr rest)) + ))) + (expand-file-name (concat + (if running-emacs-19_29-or-later + "share/" + "lib/") + (cond ((boundp 'NEMACS) "nemacs/") + ((boundp 'MULE) "mule/") + (running-xemacs + (if (featurep 'mule) + "xmule/" + "xemacs/")) + (t "emacs/")) + elisp-prefix) prefix) + )) + +(defvar install-default-elisp-directory + (install-detect-elisp-directory)) + + ;;; @ end ;;;