El Capitan用にEmacs 24.5をビルドする

はじめに

これまで10.9 Mavericksを使い続けてきたが、評判がよろしいので手持ちのマシンの1台に10.11 El Capitanをインストールした。 クリーンインストールしたので特に大きな問題は発生していないのだが、前のマシンからコピーしたEmacsでカーソル移動とともに表示が消える現象が発生したので、この度新しくビルドすることにした。

ビルド方法を説明するブログ等はたくさんあるのだが、 /usr/local の下に一部のファイルが入るなど他のマシンにコピーするには都合の悪い部分がある。 このため、 Emacs.app/Applications にコピーさえすればとりあえず動く状態になるものをビルドすることにした。

なお、他のマシンにはまだコピーしていないのできちんと動くのか不明。 ちなみに、10.9のマシンにコピーしても動かなかった。。。

参考

ほぼ手順通りだが、 Emacs.app の中に各種ファイルが無理矢理入るようにした。

手順

まずはソースを取得して展開する。

% mkdir ~/build
% cd !$
% curl -LO http://ftp.gnu.org/pub/gnu/emacs/emacs-24.5.tar.xz
% curl -LO ftp://ftp.math.s.chiba-u.ac.jp/emacs/emacs-24.5-mac-5.11.tar.gz
% tar Jxvf emacs-24.5.tar.xz
% tar zxvf emacs-24.5-mac-5.11.tar.gz
% cd emacs-24.5

パッチを当てて必要ファイルをコピーする。

% patch -p1 < ../emacs-24.5-mac-5.11/patch-mac
% cp -R ../emacs-24.5-mac-5.11/mac mac
% cp ../emacs-24.5-mac-5.11/src/* src
% cp ../emacs-24.5-mac-5.11/lisp/term/mac-win.el lisp/term
% cp nextstep/Cocoa/Emacs.base/Contents/Resources/Emacs.icns mac/Emacs.app/Contents/Resources/Emacs.icns

confiugreする。 このとき、 --prefix を指定し、使用時にEmacs.appがインストールされるであろう場所に各種ファイルがインストールされるようにする。

% ./configure --with-mac --without-x --prefix=/Applications/Emacs.app/Contents/MacOS

このディレクトリは多分作成しておかなければならない。 古いバージョンのEmacsを使っている場合は移動しておくこと。

% mv /Applications/Emacs.app /Applications/Emacs_24.4.app
% mkdir -p /Applications/Emacs.app/Contents/MacOS

ビルドしてインストールする。

% make
% make install

make installmac/Emacs.app が作られるのだが、一部のファイル /Applications/Emacs.app/Contents/MacOS に入る。 なのでこれをコピーする。 MacOS の後の / をつけないと残念なことになるので注意。

% cd mac/Emacs.app/Contents/MacOS
% rsync -avrz -e cp /Applications/Emacs.app/Contents/MacOS/ ./

Emacs.app の偽物を消して本物をコピーする。

% cd ../../..
% rm -rf /Applications/Emacs.app
% cp -r Emacs.app /Applications/

ついでにYaTeXを入れる

仕事柄 YaTeX をよく使うので Emacs.app に同梱しておく。 この記事を執筆時点の最新版は1.78.4。

% cd ~/build
% curl -LO https://www.yatex.org/yatex1.78.4.tar.gz
% tar zxvf yatex1.78.4.tar.gz
% cd yatex1.78.4

Makefile を直接編集する。

...
EMACS   = /Applications/Emacs.app/Contents/MacOS/Emacs
PREFIX  = /Applications/Emacs.app/Contents/MacOS
EMACSDIR = ${PREFIX}/share/emacs
...

make install すればOK。

% make install
% make insta-yahtml

おわりに

このメモは後から作成しているため、間違いがあるかもしれない・・・。