[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

[MD:4671] ignore makefile:DONTCOMPILE - eshell error



M-x eshell RET でエラーになります。(< 2ch)

: Debugger entered--Lisp error: (invalid-function (macro . #[(form &optional show-args string &rest args) ("c:/Meadow2/2.00b2/lisp/emacs-lisp/cl-macs.elc" . 86915) nil 9 ("c:/Meadow2/2.00b2/lisp/emacs-lisp/cl-macs.elc" . 86517)]))
:   assert("*eshell*")
:   eshell(nil)
: * call-interactively(eshell)
:   execute-extended-command(nil)
: * call-interactively(execute-extended-command)

原因は 2.00b2/lisp/eshell/esh-maint.el がバイトコンパイルさ
れることにあります。

make bootstrap した時に lisp/makefile 中の以下の定義の 
DONTCOMPILE のファイル群がすべてバイトコンパイルされます。
Netinstaller で配布しているバイナリパッケージもこれらのファ
イルは全て *.elc も同封されちゃっています。
(eshell 以外で問題があるのかは把握していません)

: DONTCOMPILE = \
: 	$(lisp)/cus-load.el \
: 	$(lisp)/cus-start.el \
: 	$(lisp)/emacs-lisp/cl-specs.el \
: 	$(lisp)/eshell/esh-maint.el \
       :

対処方法ですが、以下のふたつがあるでしょう。

1. Emacs CVS に sync する。

「Local Variables の no-byte-compile が non-nil だったらバイト
コンパイルしない」という機能が追加されているため、make で全
ての .el をバイトコンパイルするようになっていても .elc は作
られません。
この部分だけを抜き出して現在の Meadow に適用するには変更点
(ファイル)が多すぎるので、sync という形でやりたいです。

2. makefile でがんばる。

GNU make しか使わないのなら以下の変更でいけます。
もしもっと良い書き方ができるのなら教えてください。
出なかったら、2,3日中にこの変更を commit しちゃいます。


--- makefile.meadow.w32-in	(revision 3167)
+++ makefile.meadow.w32-in	(working copy)
@@ -223,27 +223,8 @@
 # current directory and its subdirectories, to make sure require's and
 # load's in the files being compiled find the right files.
 
-# Need separate version for sh and native cmd.exe
-compile-files: subdirs.el compile-files-$(SHELLTYPE) doit
+compile-files: subdirs.el $(addsuffix c,$(COMPILE_FIRST)) $(addsuffix c,$(addprefix $(lisp)/, $(wildcard *.el) $(wildcard */*.el))) doit
 
-compile-files-CMD:
-#	-for %f in ($(lisp) $(WINS)) do for %g in (%f\*.elc) do @attrib -r %g
-	for %f in ($(COMPILE_FIRST)) do $(emacs) -f batch-byte-compile %f
-	for %f in (. $(WINS)) do for %g in (%f/*.el) do $(emacs) -f batch-byte-compile %f/%g
-
-compile-files-SH:
-#	for elc in $(lisp)/*.elc $(lisp)/*/*.elc; do attrib -r $$elc; done
-	for el in $(COMPILE_FIRST); do \
-	  echo Compiling $$el; \
-	  $(emacs) -f batch-byte-compile $$el; \
-	done
-	for dir in $(lisp) $(WINS); do \
-	  for el in $$dir/*.el; do \
-	    echo Compiling $$el; \
-	    $(emacs) -f batch-byte-compile $$el; \
-	  done; \
-	done
-
 # Backup compiled Lisp files in elc.tar.gz.  If that file already
 # exists, make a backup of it.


;; やっぱり Emacs-21.3 には sync しようよ。
-- 
こせき // サポートページ
http://www.NetLaputa.ne.jp/~kose/MeadowBook/