Lion にバージョンアップしたら [2011-03-10-1]
の方法でビルド出来なく
なってしまいました。
Macports とか Homebrew の情報はあったのですが、「ソースからビルド」
の情報は見つけられなかったので、ここにまとめます。
パッチは 3 つ必要でした。
1 と 2 がビルドを通すために必要です。パッチを当てないとこんなエラー
ログを吐いてビルドに失敗します。
Dumping under the name emacs
unexec: unrecognized section name in __DATA segment
--- List of All Regions ---
address size prot maxp
--- List of Regions to be Dumped ---
address size prot maxp
--- Header Information ---
Magic = 0xfeedfacf
CPUType = 16777223
CPUSubType = -2147483645
FileType = 0x2
NCmds = 20
SizeOfCmds = 3464
Flags = 0x00200085
Highest address of load commands in input file: 0x5f4000
Lowest offset of all sections in __TEXT segment: 0x14b0
--- List of Load Commands in Input File ---
# cmd cmdsize name address size
0 LC_SEGMENT_64 72 __PAGEZERO 0 0x100000000
1 LC_SEGMENT_64 712 __TEXT 0x100000000 0x1d3000
__text 0x1000014b0 0x18e9aa
__stubs 0x10018fe5a 0x61e
__stub_helper 0x100190478 0xa44
__const 0x100190ec0 0x9b4
__cstring 0x100191878 0x17266
__gcc_except_tab 0x1001a8ae0 0x40
__unwind_info 0x1001a8b20 0x1d98
__eh_frame 0x1001aa8b8 0x28740
2 LC_SEGMENT_64 1512 __DATA 0x1001d3000 0x367000
__program_vars 0x1001d3000 0x28
__nl_symbol_ptr 0x1001d3028 0x10
__got 0x1001d3038 0x1a0
__la_symbol_ptr 0x1001d31d8 0x828
__objc_classlist 0x1001d3a00 0x70
__objc_protolist 0x1001d3a70 0x10
__objc_imageinfo 0x1001d3a80 0x8
__objc_const 0x1001d3a88 0x21d0
__objc_selrefs 0x1001d5c58 0xe38
__objc_msgrefs 0x1001d6a90 0xf0
__objc_classrefs 0x1001d6b80 0x1f0
__objc_superrefs 0x1001d6d70 0x60
__objc_data 0x1001d6dd0 0x460
__data 0x1001d7240 0x2f5f18
__const 0x1004cd160 0x2020
__cfstring 0x1004cf180 0x640
__bss 0x1004cf7c0 0x59518
__common 0x100528ce0 0x10959
3 LC_SEGMENT_64 72 __LINKEDIT 0x10053a000 0xba000
4 LC_DYLD_INFO_ONLY 48
5 LC_SYMTAB 24
6 LC_DYSYMTAB 80
7 LC_LOAD_DYLINKER 32
8 LC_UUID 24
9 unknown 16
10 LC_UNIXTHREAD 184
11 LC_LOAD_DYLIB 88
12 LC_LOAD_DYLIB 56
13 LC_LOAD_DYLIB 56
14 LC_LOAD_DYLIB 56
15 LC_LOAD_DYLIB 104
16 LC_LOAD_DYLIB 104
17 LC_LOAD_DYLIB 112
18 LC_LOAD_DYLIB 96
19 unknown 16
0x7fa2024fc080 (sz: 0x3f2d/ 0x3f30)
0x7fa202400000 (sz: 0xfc07f/ 0xfc080)
0x7fa2026fc080 (sz: 0x3f2c/ 0x3f30)
0x7fa202600000 (sz: 0xfc07f/ 0xfc080)
0x7fa2038fc080 (sz: 0x3f2d/ 0x3f30)
0x7fa203800000 (sz: 0xfc060/ 0xfc080)
0x7fa2025fc080 (sz: 0x3f2c/ 0x3f30)
0x7fa202500000 (sz: 0xfc07e/ 0xfc080)
0x7fa203cfc080 (sz: 0x3f2c/ 0x3f30)
0x7fa203c00000 (sz: 0x639f/ 0xfc080)
0x7fa204ff8000 (sz: 0x138/ 0x7fa8)
0x7fa204800000 (sz: 0x10dbe/0x7f8000)
0x7fa2037f8000 (sz: 0x728a/ 0x7fa8)
0x7fa203000000 (sz: 0x725fff/0x7f8000)
0x1093f1000 (sz: 0/ 0x1000)
--- Load Commands written to Output File ---
Writing segment __PAGEZERO @ 0 ( 0/0x100000000 @ 0)
Writing segment __TEXT @ 0 (0x1d3000/0x1d3000 @ 0x100000000)
Writing segment __DATA @ 0x1d3000 (0x367000/0x367000 @ 0x1001d3000)
section __program_vars at 0x1d3000 - 0x1d3028 (sz: 0x28)
section __nl_symbol_ptr at 0x1d3028 - 0x1d3038 (sz: 0x10)
make[1]: *** [bootstrap-emacs] Error 1
make: *** [src] Error 2
3 を当てなくてもビルドは通りますが、下の図のようにタイトルバーが消
えるので、サイズ変更や移動が出来なくなります。実質使えませんね。
必要なパッチが揃ったら、あとは簡単です。[2011-03-10-1]
のビルド手順
を Lion 対応版にしたものが以下になります。
% wget http://ftp.gnu.org/pub/gnu/emacs/emacs-23.3.tar.bz2
% tar xjf emacs-23.3.tar.bz2
% cd emacs-23.3
% patch -p0 < ../patch-no-pie.diff
% patch -p1 < ../patch-src_unexmacosx.c.diff
% patch -p0 < ../patch-fix-title-bar.diff
% mkdir ../work; cd ../work
% ../emacs-23.3/configure --with-ns --without-x 2>&1 | tee ../emacs-23.3_configure.log
% cp config.log ../emacs-23.3_config.log
% make 2>&1 | tee ../emacs-23.3_make.log
% make GZIP_PROG="" install 2>&1 | tee ../emacs-23.3_make-install.log
% cp -r nextstep/Emacs.app /Applications/Emacs-23.3.app
※1 patch-fix-title-bar.diff のパッチ当ては失敗すると思いますが、
src/Changelog なので無視して良いです。
※2 $CC, $CFLAGS, $LDFLAGS は設定する必要はありません。
※3 使用した gcc は /usr/bin/gcc です。私は /Developer/usr/bin に
パスを通していません。どんな時に必要なんでしょう?
参考情報:
#30268 (emacs-app @23.3 fails to build on Lion (“unexec: cannot write section __data”)) – MacPorts
Library/Formula/emacs.rb at master from mxcl/homebrew - GitHub
追記(2011-08-01):
よく落ちるので Homebrew の Emacs を使うことにしました。何かパッ
チが足りないのかも。。。↓こちらをご参考下さい。
[brew][lion] OS X Lionにhomebrewでemacsとかをインストール - SOSOG
Homebrew の使い方は [2011-07-26-1]
にまとめています。