elc deletion option for install-elisp-module
qa3507 @ email.mot.com
qa3507 @ email.mot.com
2002年 10月 4日 (金) 00:54:30 JST
はじめまして、森島と申します
最近から apel の ML に参加させていただいております。
APEL を利用している cmail の方で今回リリース担当をしておりまして、イン
ストール関連の更新作業を行っているのですが、パッケージの依存関係で .el
をバイトコンパイルできずに .el のみをインストールしたい場合がでてきま
した。.el だけでもインストールされていれば後で依存パッケージがインストー
ルされた時にとりあえず動作させることが可能となります。
しかし、もし以前に既にコンパイル/インストールされている .elc がインス
トール先のディレクトリに残っている場合、古い .elc が混乱の原因になりか
ねません。
そこでインストールに際して elc がインストール先にある場合にこれを消去
するようにしたいのですが、このようなオプションを install-elisp-module
と install-elisp-modules につけて頂くことは可能でしょうか。
手元では添付のようなパッチ(10.3ベース)をあててみてるのですが、こんな感
じを想定しています。cmail で what-where をやるとこんな感じで消去予定の
モジュールが表示されます。
cmail-bbdb.el -> c:/Meadow/site-lisp/cmail/options
cmail-bbdb.elc -> c:/Meadow/site-lisp/cmail/options
cmail-bbdb-pre2_34.el -> c:/Meadow/site-lisp/cmail/options
c:/Meadow/site-lisp/cmail/options/cmail-bbdb-pre2_34.elc -> to be deleted
cmail-bbdb-curver.el -> c:/Meadow/site-lisp/cmail/options
cmail-bbdb-curver.elc -> c:/Meadow/site-lisp/cmail/options
.el のみをインストールすることについては賛否両論あるかと思いますが、こ
れを含めてのコメントで構いませんのでフィードバックがあれば嬉しいです。
よろしくお願いいたします。
ちなみにインストール先をクリーンアップする uninstall の関数とかはない
んですよね。
Index: install.el
===================================================================
RCS file: /cvsroot/cmail/src/apel/install.el,v
retrieving revision 1.2
diff -u -r1.2 install.el
--- install.el 20 Jul 2002 23:09:57 -0000 1.2
+++ install.el 3 Oct 2002 12:21:38 -0000
@@ -88,7 +88,7 @@
;;; @@ install Emacs Lisp files
;;;
-(defun install-elisp-module (module src dest &optional just-print)
+(defun install-elisp-module (module src dest &optional just-print del-elc)
(let (el-file elc-file)
(let ((name (symbol-name module)))
(setq el-file (concat name ".el"))
@@ -106,7 +106,12 @@
(princ (format "%s -> %s\n" el-file dest)))))
(setq src-file (expand-file-name elc-file src))
(if (not (file-exists-p src-file))
- nil
+ (let ((full-path (expand-file-name elc-file dest)))
+ (if (and del-elc (file-exists-p full-path))
+ (if just-print
+ (princ (format "%s -> to be deleted\n" full-path))
+ (delete-file full-path)
+ (princ (format "%s -> deleted\n" full-path)))))
(if just-print
(princ (format "%s -> %s\n" elc-file dest))
(let ((full-path (expand-file-name elc-file dest)))
@@ -123,14 +128,14 @@
(error (princ (format "%s\n" (nth 1 err)))))))
(princ (format "%s -> %s\n" elc-file dest))))))))
-(defun install-elisp-modules (modules src dest &optional just-print)
+(defun install-elisp-modules (modules src dest &optional just-print del-elc)
(or just-print
(file-exists-p dest)
(make-directory dest t))
(mapcar
(function
(lambda (module)
- (install-elisp-module module src dest just-print)))
+ (install-elisp-module module src dest just-print del-elc)))
modules))
More information about the APEL-ja
mailing list