Monthly Archives: 4月 2016

2016-04-21

Windows(MSYS2 MinGW64)でEmacs25+IMEパッチをビルド

(2019-12-08追記: 新しいものを書きました Windows用のEmacs26.3をMSYS2でビルドする方法(IMEパッチ、ImageMagick-6))

新しいPCにしてからEmacsの適当なWindows用バイナリを試してみたのですが、gnutlsが使えなかったりIMEまわりが不安定だったりどれが最新だか分からなかったり色々したので諦めて自分でビルドすることにしました。SSDになったことですし!

ビルドの方法については nt/INSTALLnt/INSTALL.W64 が一次情報となり、詳しいと思います。私はW64の方を参考にしました。

日本語では次のページが参考になりました。

特にIMEパッチを提供されている rzl24ozi’s gists のREADME.txtが最も参考になりました。

以下、私がビルドした時の手順です。

ソースコードは emacs.git - Emacs source repository (GitHubならemacs/nt at master - emacs-mirror/emacs)、リリース版なら http://ftp.gnu.org/gnu/emacs/ からダウンロード可能です。 (Gitで落とすときは改行コードを変換しないように注意(autocrlf=false))

Gitでは全て落とすとリポジトリがかなりの容量になるそうなので、 --depth 1 を指定してみました。それでも時間はちょっとかかりますね。

git clone --depth 1 git://git.savannah.gnu.org/emacs.git --config core.autocrlf=false

emacs-25ブランチなら次のようにします(masterは少し不具合があるのでこちらの方が良いかも)。

git clone --depth=1 -b emacs-25 git://git.savannah.gnu.org/emacs.git --config core.autocrlf=false

ビルドの前にMSYS2のインストールとパッケージの設定が必要です。 MSYS2 に書かれていることに加えて nt/INSTALL.W64 に書かれているパッケージをインストールしました。

  1. MSYS2ダウンロード: http://sourceforge.net/projects/msys2/files/latest/download?source=files
  2. MSYS2インストール: msys2-x86_64-20160205.exeを実行
  3. MSYS2のbashから pacman -Sy
  4. パッケージのインストール

       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   
    

    (1回でうまく入らないことあり)

私の場合、ここでautocrlf=trueにしていたことに気がついたので、その解消をしました。 cloneしたディレクトリで git config core.autocrlf false して、.git以外全て消して、 git reset --hard しました。

そしてビルド。

  1. (重要) mingw64_shell.bat (スタートメニューからMinGW-w64 Win64 Shell)を実行してMinGW64環境へ切り替える(これをしないとmake段階でエラーになります)
  2. 後はだいたい以下のような感じ

    ./autogen.sh
    ./autogen.sh git #こうしろと言われたので
    ./autogen.sh  #こうしろと言われたので
    
    PKG_CONFIG_PATH=/mingw64/lib/pkgconfig ./configure --prefix=/c/<checkout-dir> --without-imagemagick
    
    make -j4 #4コアで
    
    make install prefix=/c/<install-dir>
    
    <install-dir>/bin/runemacs #起動
    

    最適化するなら chuntaro/NTEmacs64: Windows 版 Emacs (通称 NTEmacs) の 64bit 版 にあるようにCFLAGSを指定して以下のようにすれば良い。

       PKG_CONFIG_PATH=/mingw64/lib/pkgconfig CFLAGS='-Ofast -march=x86-64 -mtune=corei7' ./configure --prefix=/c/<checkout-dir>/ --without-imagemagick
    
  3. (おっと、パッチを当ててなかった)rzl24ozi’s gists から emacs-25.0.92-x64.diff をダウンロード
  4. ソースコードのあるディレクトリトップで patch -b -p0 < emacs-25.0.92-x64.diff (patchはCygwinでテキストマウントを使っていると色々ハマるので注意)
  5. いくつかのHunkが失敗したり曖昧だったりするので一つ一つ確認して修正

    現時点でリジェクトされたのは次の2箇所のみでした。前後の内容が変わってしまって失敗しただけなので、手作業で修正すれば難しくありません。 (ちなみにemacs-25ブランチなら特にリジェクト無くパッチが当たる模様。masterは不具合もあるのでそっちの方が良いかも)

    --- ./src/Makefile.in.orig      2016-03-02 19:21:43.000000000 +0900
    +++ ./src/Makefile.in   2016-03-26 11:17:17.908757300 +0900
    @@ -396,7 +396,7 @@
            region-cache.o sound.o atimer.o \
            doprnt.o intervals.o textprop.o composite.o xml.o $(NOTIFY_OBJ) \
            $(XWIDGETS_OBJ) \
    -       profiler.o decompress.o \
    +       profiler.o decompress.o cmigemo.o \
            $(MSDOS_OBJ) $(MSDOS_X_OBJ) $(NS_OBJ) $(CYGWIN_OBJ) $(FONT_OBJ) \
            $(W32_OBJ) $(WINDOW_SYSTEM_OBJ) $(XGSELOBJ)
     obj = $(base_obj) $(NS_OBJC_OBJ)
    
    --- ./src/w32fns.c.orig 2016-03-02 19:21:43.000000000 +0900
    +++ ./src/w32fns.c      2016-03-26 11:17:17.988761000 +0900
    @@ -52,6 +52,11 @@
     #include "w32.h"
     #endif
     
    +#ifdef USE_W32_IME
    +#include "fontset.h"
    +#include "w32font.h"
    +#endif
    +
     #include <commctrl.h>
     #include <commdlg.h>
     #include <shellapi.h>
    
  6. 再度makeしてmake installでok

    作成するexeのサイズを小さくするなら make install-strip とする。

       make install-strip prefix=/c/<install-dir>/
    

うん、ちゃんとIME使える!

2016-04-18

冬もすっかり終わって日中部屋にいると暑さを感じるくらいになりましたね。ついこの間年が明けたと思ったのに。

今年はもっと色々出来るかと思ったのですが、ちょっと色々あって思うように捗りません。

着実に一つ一つやっていくしか無いと思われ。

2016-04-18

2016春の新番組

さて、今期はどうでしょう。作品数も多いですし、良さそうなのも多いです。

04/01(金) 22:30~ □ TOKYO MX うしおととら 第3クール  
04/01(金) 23:00~ □ TOKYO MX 影鰐(KAGEWANI)-承- ※ウルトラスーパーアニメタイム
04/01(金) 23:00~ □ TOKYO MX 宇宙パトロールルル子 ※ウルトラスーパーアニメタイム
04/01(金) 24:30~ □ TOKYO MX ジョジョの奇妙な冒険 第4部 -ダイヤモンドは砕けない-  
04/01(金) 25:05~ □ TOKYO MX テラフォーマーズリベンジ  
04/01(金) ~ ニコニコCh 猫も、オンダケ  
04/02(土) 04:52~ □ フジテレビ ぼのぼの 新作  
04/02(土) 08:00~ □ テレビ東京 フューチャーカード バディファイトDDD (第3期)  
04/02(土) 09:30~ □ テレビ東京 レゴ ニンジャゴー 新シリーズ  
04/02(土) 12:00~ □ TBS アグレッシブ烈子 ※「王様のブランチ」内
04/02(土) 17:30~ □ 日本テレビ 逆転裁判  
04/02(土) 24:30~ □ TOKYO MX 学戦都市アスタリスク 2nd Season  
04/02(土) 24:56~ □ TOKYO MX ラグナストライクエンジェルズ ※CM枠の30秒アニメ
04/02(土) 25:00~ □ TOKYO MX ニンジャスレイヤー フロムアニメイシヨン TV版 スペシャルエディション  
× 04/02(土) 26:30~ □ 日本テレビ エンドライド~X fragments  
04/02(土) 深夜~ □ MBS 「かっちけねぇ!」「風の又三郎」(あにめたまご2016)  
04/03(日) 07:00~ □ テレビ朝日 機動戦士ガンダムUC RE:0096  
04/03(日) 08:30~ □ テレビ東京 デュエル・マスターズ VSRF  
× 04/03(日) 17:00~ □ TBS 僕のヒーローアカデミア  
△- 04/03(日) 22:30~ □ TOKYO MX マクロスΔ(デルタ)  
04/03(日) 23:00~ □ TOKYO MX コンクリート・レボルティオ~超人幻想~ THE LAST SONG (第2期)  
04/03(日) 24:30~ □ TOKYO MX くまみこ  
04/03(日) 25:35~ □ テレビ東京 Re:ゼロから始める異世界生活  
04/04(月) 06:45頃~ □ 日本テレビ 朝だよ!貝社員 ※「ZIP!」内
04/04(月) 17:55~ □ テレビ東京 ベイブレードバースト  
04/04(月) 18:00~ □ NHK Eテレ わしも-wasimo- 第4期?  
04/04(月) 18:10~ □ NHK Eテレ 忍たま乱太郎 第24シリーズ  
04/04(月) 19:00~ □ TOKYO MX 怪盗ジョーカー シーズン3  
04/04(月) 19:30~ □ TOKYO MX 12歳。~ちっちゃなムネのトキメキ~  
04/04(月) 23:00~ □ TOKYO MX 美少女戦士セーラームーンCrystal デス・バスターズ編 (第3期)  
04/04(月) 24:00~ □ TOKYO MX ばくおん!!  
04/04(月) 25:00~ □ TOKYO MX パンでPeace!  
△- 04/04(月) 25:35~ □ テレビ東京 聖戦ケルベロス 竜刻のファタリテ  
△- 04/04(月) 26:05~ □ テレビ東京 ハンドレッド  
04/05(火) 17:55~ □ テレビ東京 プリパラ 3rdシーズン  
× 04/05(火) 18:25~ □ テレビ東京 アルティメット・スパイダーマン VS シニスター・シックス  
04/05(火) 18:30~ □ BSプレミアム ぼくらベアベアーズ  
04/05(火) 18:45~ □ NHK Eテレ 少年アシベ GO!GO!ゴマちゃん  
△+ 04/05(火) 21:55~ □ TOKYO MX 薄桜鬼 ~御伽草子~  
04/05(火) 24:30~ □ TOKYO MX ジョーカーゲーム  
04/06(水) 17:55~ □ テレビ東京 バトルスピリッツ ダブルドライブ Official  
04/06(水) 18:00~ □ NHK Eテレ おじゃる丸 第19シリーズ  
04/06(水) 18:25~ □ テレビ東京 双星の陰陽師  
04/06(水) 18:45~ □ NHK Eテレ ねこねこ日本史  
04/06(水) 22:00~ □ TOKYO MX 美少女遊戯ユニットクレーンゲール  
× 04/06(水) 25:00~ □ TOKYO MX 鬼斬  
△- 04/06(水) 25:05~ □ TOKYO MX 文豪ストレイドッグス  
△+ 04/06(水) 25:35~ □ TOKYO MX SUPER LOVERS -スーパーラヴァーズ-  
04/07(木) 18:25~ □ テレビ東京 アイカツ スターズ!  
04/07(木) 21:00~ LINE LIVE 秘密結社 鷹の爪 GT  
04/07(木) 22:00~ □ TOKYO MX クロムクロ  
04/07(木) 22:30~ □ TOKYO MX あんハピ♪  
04/07(木) 23:30~ □ TOKYO MX ネトゲの嫁は女の子じゃないと思った?  
04/07(木) 24:25~ □ フジテレビ 甲鉄城のカバネリ  
△+ 04/07(木) 25:58~ □ TBS 少年メイド  
04/07(木) 26:28~ □ TBS 坂本ですが?  
04/08(金) 18:20~ □ NHK Eテレ あはれ!名作くん ※ビットワールド内
04/08(金) 26:10~ □ TBS 迷家-マヨイガ-  
04/09(土) 10:00~ □ CartoonNetwork パワーパフ ガールズ 新作  
04/09(土) 17:30~ □ NHK Eテレ 境界のRINNE 第2シリーズ  
04/09(土) 22:00~ □ TOKYO MX 田中くんはいつもけだるげ  
04/09(土) 23:30~ □ TOKYO MX キズナイーバー  
04/09(土) 24:00~ □ TOKYO MX はいふり  
04/09(土) 26:25~ □ 日本テレビ ふらいんぐうぃっち -flying witch-  
04/09(土) ~ □ TOKYO MX CoCO & NiCO  
04/10(日) 17:00~ □ NHK Eテレ なめこ~せかいのともだち~ ※「ニャンちゅうワールド放送局」内
04/10(日) 22:15~ □ TOKYO MX とんかつDJアゲ太郎  
04/10(日) 24:00~ □ TOKYO MX 三者三葉  
04/11(月) 25:05~ □ TOKYO MX うさかめ  
× 04/11(月) 25:10~ □ TOKYO MX ワガママハイスペック  
04/15(金) 25:40~ □ TOKYO MX ビッグオーダー  
04/15(金) 26:25~ □ TBS マギ シンドバッドの冒険  
04/16(土) 07:00~ □ TBS カミワザ・ワンダ  
04/17(日) 10:00~ □ テレビ東京 カードファイト!! ヴァンガードG -ストライドゲート編-(第7期)  
12歳。
このご時世にこんなコテコテの少女漫画をゴールデンでやるとは思いませんでしたよ。
Re:ゼロから始める異世界生活
これまでの所意外と面白い。
くまみこ
良い滑り出しですが今後次第でしょうか。
マクロスΔ
私はマクロスがあまり好きではないのかなぁと良く思います(←マクロスは2が良いと思っている人間)。
ネトゲの嫁は女の子じゃないと思った?
はがないみたいな雰囲気。
坂本ですか?
坂本カッコいい可笑しい。
夏目友人帳シリーズセレクション
第5期を前に復習ですね。夏目は良い話もそれほどでもない話も沢山あるので、つまみ食いでまた見られると良い感じ。
ニンジャスレイヤー
お話しの芯は意外としっかりしているかもしれない。