ソフトウェアエンジニアのブログ

暇つぶしに書いてます。他に技術的なことは[http://qiita.com/nsas454]に書いてますのでそちらも見てください。

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)

再度実行すると無事インストール完了です。