javascript-lintをSnow Leopardのmacportでインストール出来ない!!
mac os X 10.6.4のEmacs23.2にmacportでjavascript-lintをインストールしたときにはまったのでメモしておきます。
macportから普通にインストールを行います。
#sudo port install javascript-lint ---> Building javascript-lint Error: Target org.macports.build returned: shell command failed (see log for details) Log for javascript-lint is at: /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_ports_lang_javascript-lint/main.log Error: Status 1 encountered during processing. To report a bug, see <http://guide.macports.org/#project.tickets> macbook% port -d sync DEBUG: Synchronizing ports tree(s) Synchronizing local ports tree from rsync://rsync.macports.org/release/ports/ DEBUG: /usr/bin/rsync -rtzv --delete-after '--exclude=/PortIndex*' rsync://rsync.macports.org/release/ports/ /opt/local/var/macports/sources/rsync.macports.org/release/ports receiving file list ... done rsync: failed to set times on "/opt/local/var/macports/sources/rsync.macports.org/release/ports/.": Operation not permitted (1) ./ rsync: failed to set times on "/opt/local/var/macports/sources/rsync.macports.org/release/ports/.": Operation not permitted (1) sent 59 bytes received 484010 bytes 138305.43 bytes/sec total size is 26870556 speedup is 55.51 rsync error: some files could not be transferred (code 23) at /SourceCache/rsync/rsync-40/rsync/main.c(1400) [generator=2.6.9] shell command "/usr/bin/rsync -rtzv --delete-after '--exclude=/PortIndex*' rsync://rsync.macports.org/release/ports/ /opt/local/var/macports/sources/rsync.macports.org/release/ports" returned error 23 Error: Synchronization of the local ports tree failed doing rsync DEBUG: Synchronization of 1 source(s) failed while executing "mportsync [array get global_options]" port sync failed: Synchronization of 1 source(s) failed
しかし、エラーがでてインストールできません。。
いろいろ調べ他結果、jsprf.cにパッチを当てれば解消できることが分かりました。
バッチは以下から入手できます。
jsprf.c
cd /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_lang_javascript-lint/work/jsl-0.3.0/src
patch>patch-jsprf.c
patchを使わないで処理する
patchの内容は58行目に2行を追加するだけなので、手動で追加してみました。
sudo vi jsprf.c
#define VARARGS_ASSIGN(foo, bar) VA_COPY(foo,bar) /* ここから追加 */ #elif defined(va_copy) #define VARARGS_ASSIGN(foo, bar) va_copy(foo,bar) /* ここまで */ #elif defined(HAVE_VA_LIST_AS_ARRAY)
再度実行すると無事インストール完了です。