2016年11月11日金曜日

NTEmacs25.1をビルドした


前回からどうにか回避を考えたのですが、結局思いつかなかったので自分でビルドすることにしました。


今まで

  • NTEmacs25.1(簡易IME対応版)を利用させてもらっている(配布元)
  • インラインでの日本語入力時に、変換確定前後で文字の大きさが異なり、上下するのが気になる  
  • 更に24.5(gnupack)で使っていたinit.elの一部がエラーになる(w32-ime-initializeなど)
  • M-x describe-functionから見てみると、w32-ime.elやw32fns.cが無いことがわかる
  • 調べると、それらを生成しそうなパッチを発見、環境を作って当ててみることに
     

目標

  •  NTEmacs25.1 64bit 日本語インライン入力対応版を作成する

参考にしたもの


MSYS2のインストール 

まずは環境としてMSYS2のインストールを行います。はじめはMinGW-w64をインストールしてからMSYSをインストールしていたのですが、pacmanが使いたかったので初めからやり直しました。minGWをインストールしただけではlsが使えないというのが分かったのはよかったのですが。
使用バージョンは2.6.0だと思います。


 MSYS2の設定に関しては、環境変数HOMEが別のソフトに取られてしまっていたのと、CygwinのHOMEと合わせたかったので、msys2_shell.cmdとmingw64.iniでHOMEの設定。また、HOMEを共有しつつ.bashrcを別々に使いたかったので識別用の変数も設定しました。あとはminGWにパスを通すくらいです。

Cygwinで使っているPATHと分けたかったのと、環境変数PATHが長く変なところで誤動作を起こしたら嫌なので、そうならないようにいじったつもりです。minGW32は使う気がなかったので触りませんでした。


sys2_shell.cmd(追加行)
   set HOME=C:\(ホーム)
   set TERM=msys
   set CHECKTERM=MSYS


mingw64.ini(追加行)
   HOME=C:\(ホーム)
   CHECKTERM=MSYS

.bashrc
   if [[ $CHECKTERM = MSYS ] ] ; then
      echo "Loading .bashrc_sys..."
      source ~/.bashrc_msys
   else
      echo "Loading .bashrc_min..."
      source ~/.bashrc_min
   fi

  .bashrc_msys(一部)
   export TERM=msys
   export LS_COLORS="no=00:fi=00:di=01;36:ln=01;34"
   alias ls='ls -F --color=auto'

   export PATH=$PATH:/c/mingw-w64/usr/bin
   #これがないと動かない

   # -------------------------------------------------------------
   local_ver=`uname '-s' '-r' '-m' '-o'`
   echo "uname -srmo ->  $local_ver"
   cd ~


パッケージのインストールはこちらを参考にmsys2_shell.cmdから
   pacman -S base-devel \
   mingw-w64-x86_64-toolchain \
   mingw-w64-x86_64-xpm-nox \
   mingw-w64-x86_64-libtiff \
   mingw-w64-x86_64-giflib \
   mingw-w64-x86_64-libpng \
   mingw-w64-x86_64-libjpeg-turbo \
   mingw-w64-x86_64-librsvg \
   mingw-w64-x86_64-libxml2 \
   mingw-w64-x86_64-gnutls

Archで見た流れだ…とか思いながら眺めてました。特に失敗もなくラッキー。


Emacsソース入手


Emacsのソースはftp://ftp.ring.gr.jp/pub/GNU/emacs/からemacs-25.1.tar.gzを入手、解凍しました。また、使いたいパッチをここからタウンロードして、HOME/emacs-25.1に。
設定したHOMEに突っ込んだ上で、ここからminGW64.exeを起動。

この後は、
cd HOME/emacs-25.1
./autogen.sh
PKG_CONFIG_PATH=/mingw64/lib/pkgconfig  ./configure --prefix=/c/<checkout-dir> --without-imagemagick
 patch -b -p0 < emacs-25.1-w32-ime.diff
2016/11/10時点で、patchはエラーなく終了。

(一度patchの中を微妙に改行してしまったりしたようで、エラー祭りになりました。わけわからなくなったらtarまで戻るという…)


このあたりがすんだら
make
make install prefix=/c/インストールしたい先

なおインストール先ですが/c/gnupack-xxxx/app/emacsなど、emacsディレクトリを作って指定しないといきなりbinやshareが突っ込まれて大変になります。


問題がなければ、prefixで指定した先にemacsのファイルが作られていると思うので、emacs.exeが入っているディレクトリに必要なdllを突っ込みます。
横着して簡易IME版に入っていたdll全部持ってきたら怒られました。


差分はこんな感じです。



ビルドしたもの




 ビルドしていないもの





もともと文字の大きさや行間変更すれば対応できるじゃないか言えばそうなのですが、自力でパッチ当ててビルドの体験ができたので良かったと思います。
あとパッチ当てたついてに日本語変換で時々落ちる現象が止まればいいとか考えてます。


あと全く関係ない問題点

  •  MSYS2で十字キーとbackspaceとdeleteの挙動がおかしい
  • 十字キーは表示がおかしい、backspaceは見た目消えていないけど処理的には消えている?


0 件のコメント:

コメントを投稿