なんとかビルド出来ました。こりゃEmacs人口が減るわけだ。。
Emacs-24.3の頃からクラッシュする問題に悩まされていたんです。
Emacs-24.4-universal.dmgでインストールしても使ってて落ちた。(add-to-list 'helm-for-files-preferred-list 'helm-source-ghq)の設定で落ちる。やはり外部プロセス使うタイミングでひじょーによく落ちる。
— マスタカ (@masutaka) October 23, 2014
そんな中見つけたのがMew-jaのこの情報 。
素の Emacs は、Mac では不安定です。山本さんのパッチを当てて使うと、ほ
とんど落ちなくなります。ftp://ftp.math.s.chiba-u.ac.jp/emacs/
–かず
そこで今回からこのパッチ(experimental/hackers-onlyパッチ)を使うことにしました。
インラインパッチ(IMEパッチ)は当たらなくなるので、ac-mozc.el +
mozc_emacs_helperを使うことにしました。というかインラインパッチの
最新はどこに。。(2015-01-04追記: もういらないみたいです。→ [2015-01-04-1]
)
mozc-emacs-helperをインストールするhomebrewを書いた|Act as Professional
最終的なビルド手順はこちら。前述の紹介マニアのやり方ほぼそのままです。
デフォルトでは/usr/local以下に一部インストールされてしまうので、
configureに–prefixオプションを指定し、~/opt以下に変更しています。
この辺はご自由に。パッチなしのビルドではなぜ必要ないかは調べていません。
$ curl -LO http://ftp.gnu.org/pub/gnu/emacs/emacs-24.4.tar.xz
$ curl -LO ftp://ftp.math.s.chiba-u.ac.jp/emacs/emacs-24.4-mac-5.2.tar.gz
$ tar xfJ emacs-24.4.tar.xz
$ tar xfz emacs-24.4-mac-5.2.tar.gz
$ cd emacs-24.4
$ patch -p 0 < ../emacs-24.4-mac-5.2/patch-mac
$ cp -r ../emacs-24.4-mac-5.2/mac mac
$ cp ../emacs-24.4-mac-5.2/src/* src
$ cp ../emacs-24.4-mac-5.2/lisp/term/mac-win.el lisp/term
$ cp nextstep/Cocoa/Emacs.base/Contents/Resources/Emacs.icns mac/Emacs.app/Contents/Resources/Emacs.icns
$ ./configure --prefix=$HOME/opt/emacs-24.4 --with-mac --without-x
$ make
$ make GZIP_PROG='' install # *.elを圧縮したくないので
$ cp -r mac/Emacs.app ~/Applications
※ この手順だとemacsclientやetagsは~/opt/emacs-24.4/bin以下にイン
ストールされます。適宜ご利用ください。
⌘キーとOptionキーが入れ替わってしまったので、下記設定を追加しました。
(setq mac-command-modifier 'super)
(setq mac-option-modifier 'meta)
あと、libxml2絡みで無駄にハマったので、以下に残しておきます。
libxml2がらみでコンパイルエラーが発生
Homebrewでpkg-configを入れていると、configureがlibxml2のCFLAGSの判
別に失敗し、コンパイルエラーが発生する。
gcc -c -Demacs -I. -I. -I../lib -I./../lib -fconstant-cfstrings -DMAGICKCORE_HDRI_ENABLE=0 -DMAGICKCORE_QUANTUM_DEPTH=16 -DMAGICKCORE_HDRI_ENABLE=0 -DMAGICKCORE_QUANTUM_DEPTH=16 -I/usr/local/Cellar/imagemagick/6.8.9-8/include/ImageMagick-6 -I/usr/include/libxml2 -MMD -MF deps/xml.d -MP -Wno-switch -Wno-tautological-constant-out-of-range-compare -Wno-pointer-sign -g3 -O2 xml.c
xml.c:23:10: fatal error: 'libxml/tree.h' file not found
#include <libxml/tree.h>
^
1 error generated.
make[1]: *** [xml.o] Error 1
make: *** [src] Error 2
configureの14922行目のこの行が原因。
LIBXML2_CFLAGS=`"$PKG_CONFIG" --cflags "libxml-2.0 > 2.6.17" 2>&5` &&
おまえか!
$ pkg-config --cflags "libxml-2.0 > 2.6.17"
-I/usr/include/libxml2
# => 存在しないディレクトリ
configure前に適切なCFLAGSをセットするか、configureに–without-xml2
オプションを付ければ良い。
今回は前者を採用した。libxml2は使いたかったので。
export CFLAGS=`xml2-config --cflags`
# => -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/libxml2がセットされる
ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include /usr/include
していたが、Yosemiteで/usr/includeが存在してよいかは分からない。
ここまで書いてこんな記事を見つけた。
Mavericksにしたら/usr/includeが消失していた件 - とあるぼっちの生存報告
あれ、Mavericksもそうだったん?
xcode-select --install
って今も必要なのかな?やってみるか。
/usr/includeが出来ました!/(^o^)\
結論: xcode-select --install
していればハマらなかった。
追記(2014-11-03):
configureに–prefixオプションを指定しないと、一部/usr/local以下に
インストールされてしまうので修正しました。
追記(2014-12-30):
experimental/hackers-onlyパッチが5.2に更新されていたので、手順をアッ
プデートしました。
あと、experimental/hackers-onlyパッチを当てると、emacsclientがなく
なるのは間違いでした。今回の手順だと~/opt/emacs-24.4/bin以下にイン
ストールされるので、こちらも修正しました。