皆様
OS X 10.6.8で動かないのが謎だったのですが、どうやら解明出来たようです。
porgの方には先ほど報告を上げまた。
https://sourceforge.net/p/porg/tickets/7/
要は、Cでは可変長引き数を渡すためのva_argでは、bit幅が小さい整数はintまで
格上げされれる事になっているのと、OS X 10.6.8ではmode_tは16 bit, intは32
bitと言う事で不整合を来していたという問題のようです。
大概のlinuxと新しいOS Xではmode_t, intともに32 bitなので問題が
発生していなかったということで、code上対応する部分のmode_tをintに
書き換えれば動くという事になります。
lpmでインストールするしょっぱななので、書き換えるには、
do_gnu_build()の中身を展開して、途中でsedで書き換えてやれば
良いということになります。
なお、porgで対応してくれれば、こちらでは何もしなくても、OS 10.6以前の
版でも動くようになると思われます。
とりあえず、patchとしては下記のようになります。
diff -u lpm lpm-n
--- lpm 2015-08-04 17:20:14.000000000 +0900
+++ lpm-n 2015-09-10 15:58:18.000000000 +0900
@@ -503,7 +503,24 @@
} else {
$porg_file = $porg_base;
}
- do_gnu_build($porg_file, "--disable-grop --with-porg-logdir=$var_dir/log");
+ {
+ my $base_file = get_file_name_from_path($porg_file);
+ my $package_name = get_package_name_from_filename($base_file);
+ my $version = get_version_from_filename($base_file);
+ my $sub_dir = "${package_name}-$version";
+ extract_archive($porg_file, $build_dir);
+ chdir $sub_dir or die "Cannot chdir to $sub_dir";
+ {
+ my $cmdline = "./configure --prefix=$local_dir";
+ $cmdline .= " --disable-grop --with-porg-logdir=$var_dir/log";
+ do_shell($cmdline);
+ `sed -ie 's/va_arg(a, mode_t)/va_arg(a, int)/' lib/porg-log/log.c`;
+ $cmdline = "$make_path";
+ do_shell($cmdline);
+ }
+ }
+
+
`perl -ple 'if(/^install-exec-local:/){ print "install-exec-local:\n\n"; \$_ = "old-install-exec-local:" }' -i scripts/Makefile`;
do_make_install();
my $save_path = $ENV{'PATH'};
--
西山智明
金沢大学学際科学実験センター
ゲノム機能解析分野
(920-0934 金沢市宝町13-1)
Tomoaki NISHIYAMA
Advanced Science Research Center,
Kanazawa University,
13-1 Takara-machi
Kanazawa, 920-0934 Japan