予定どおりに 23.1.92 が出たようです。
bzr を使って追っかけするのにもだいぶ慣れてきました。
が、やっぱ、なにをするにも遅いんだよなぁ。
Cygwin 1.7 の bzr は 2.0.0 なんですけど、これが遅いんですかね?なんだろうな。
公式で git を使えるようになったらすぐに乗り換えると思います。
一応、有志による git ミラーは以下にあります。
さて、こないだから MinGW + MSYS でビルドするようになったので、そこらへんを少しだけ。
うちでは Windows 7 Enterprise x64, MinGW 5.1.6, MSYS 1.0.13-2, gcc 4.4.0 でビルドしています。
$ msysinfo msysinfo-1.3: Send this to the MSYS support list: MSYS 1.0.13(0.47/3/2) 2010-01-27 23:29 i686 unknown; targ=MINGW32 GNU bash, version 3.1.17(1)-release (i686-pc-msys); ENV=.profile GNU Make 3.81This program built for i686-pc-msys; MAKE_MODE=unix gcc.exe (GCC) 4.4.0; targ=MINGW32 GNU ld (GNU Binutils) 2.20 00 2010-01-28 13:31:10.000000000 +0900 /bin/msys-1.0.dll 92 2009-07-11 15:34:34.000000000 +0900 /bin/msys-bz2-1.dll 74 2010-01-06 19:46:31.000000000 +0900 /bin/msys-lzma-1.dll 52 2009-11-08 10:09:15.000000000 +0900 /bin/make.exe 2009-06-23 11:46:39.000000000 +0900 /c/MinGW/bin/gcc.exe 8 2009-10-24 09:13:00.000000000 +0900 /c/MinGW/bin/ld.exe HOME=/c/Users/yu-ji/home Sysname=MINGW32_NT-6.1 OSTYPE=msys TERM=cygwin PATH=.:/usr/local/bin:/mingw/bin:/bin:/usr/bin:/c/MinGW/bin:/c/Windows/system32:/c/Windows
普段使いの環境は Cygwin 1.7 に合わせてあるので、msys.bat で MinGW + MSYS 用の環境を調整しています。Emacs をビルドするときには、cmd でも bash でも大丈夫ですが、なんとなく bash からやってます。
$ diff msys.bat~ msys.bat 1a2,3 > set Path=C:\msys\1.0\bin;C:\MinGW\bin;%SystemRoot%\system32;%SystemRoot% > set LANG=C
間違って Cygwin 環境でやっちゃうとややこしいことになるので、configure と make はそれぞれシェルスクリプトをかませてやっています。
emacs.config.sh とかファイル名つけて…、
#!/bin/sh if [[ $MSYSTEM != "MINGW32" ]]; then echo emacs.config.sh must run under the MSYS shell; exit; fi export LANG=C time $COMSPEC /c \ 'configure.bat --with-gcc --no-cygwin --no-debug --prefix=C:/emacs/23' \ 2>&1 | tee config.log.yu-ji;
引数とか忘れますしね。
以下は emacs.make.sh とかファイル名つけて…、
#!/bin/sh if [[ $MSYSTEM != "MINGW32" ]]; then echo emacs.make.sh must run under the MSYS shell; exit; fi export LANG=C time make \ --jobs=4 XMFLAGS="--jobs=3" \ ARCH_CFLAGS="-c -mno-cygwin -march=native -O3 -fno-tree-vectorize -mfpmath=sse -mthreads -pipe" \ $1 $2 $3 $4 $5 \ 2>&1 | tee make.log.yu-ji;
うちの CPU は一昨年くらいの Core 2 Duo です。-O3 だけだと temacs をダンプするとき(だったと思う)にこけるので optimization 関係のオプションを調整した結果 -O3 -fno-tree-vectorize になりました。これが何を意味するかは知りませんし、他のマシンにバイナリを持っていくことも考えてません…。
※追記参照のこと
普段追っかけるときには、以下のようにやってます。ローカルのリポジトリの持ち方によって違う気がします。ワーキングコピーに merge してから diff して commit するほうが通信量も少ない気がします。
$ cd ~/src/wc/emacs/trunk/ (emacs のワーキングコピーに移動) $ bzr merge --preview | lv (変更点を眺めてみる) $ bzr merge --pull (変更点を取り込む) $ cd nt $ ../../../emacs.make.sh all (上に載せたシェルスクリプトです) $ ../../../emacs.make.sh recompile EMACS=../src/oo-spd/i386/emacs.exe (lisp/ 以下に変更があったときにはこれやらないと .elc が古いままです) $ ../../../emacs.make.sh install (いんすこ)
なにかおかしくなったら、ワーキングコピーを綺麗にして bootstrap からやりなおします。
$ ../../../emacs.make.sh realclean $ ../../../emacs.make.sh distclean $ ../../../emacs.config.sh $ ../../../emacs.make.sh bootstrap
こんな感じで。
MinGW-w64 で x64 Emacs はビルドできるんですかねえ。画像用の DLL 作るあたりが鬼門そうだ…。
追記Sun Feb 14 02:39:06 2010
@dnerkxさんが -O3 -fno-tree-vectorize の件を調べてくれました。thx!