OS X 10.6 対応

38 views
Skip to first unread message

NISHIYAMA Tomoaki

unread,
Sep 10, 2015, 3:56:51 AM9/10/15
to lpm-users-jp, NISHIYAMA Tomoaki
皆様

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


Masahiro Kasahara

unread,
Sep 13, 2015, 11:59:18 PM9/13/15
to lpm-users-jp, NISHIYAMA Tomoaki
西山さん、

報告ありがとうございます。
porg 本家でもソースツリーには取り込まれたみたいですが、
リリースされるまでも使えるように LPM にも入れてみました。
古い Mac の環境は持っていなくて動作確認できないので
よろしければ確認してもらえると助かります。

笠原

--
このメールは Google グループのグループ「LPM Users ML (JP)」の登録者に送られています。
このグループから退会し、グループからのメールの配信を停止するには lpm-users-jp...@googlegroups.com にメールを送信してください。
その他のオプションについては、https://groups.google.com/d/optout にアクセスしてください。

NISHIYAMA Tomoaki

unread,
Oct 22, 2015, 2:32:59 AM10/22/15
to lpm-us...@googlegroups.com, NISHIYAMA Tomoaki

porgのリリースがなかなかなのでホームディレクトリのrealpathが/mnt
の下にある人向けにexcludeをはずすのもlpm側に入れておいた方が
良いかもしれませんね。
porgでのソースツリーには5月に入っています
http://sourceforge.net/p/porg/code/156/
が、releaseの頻度が落ちているようで。。。
http://sourceforge.net/projects/porg/files/

$ diff -u lpm.4 lpm
--- lpm.4 2015-09-14 12:45:29.000000000 +0900
+++ lpm 2015-10-22 15:22:30.000000000 +0900
@@ -515,10 +515,11 @@
extract_archive($porg_file, $build_dir);
chdir $sub_dir or die "Cannot chdir to $sub_dir";
{
+ `sed -ie 's#/mnt /media /cdrom##' configure`;
+ `sed -ie 's/va_arg(a, mode_t)/va_arg(a, int)/' lib/porg-log/log.c`;
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);
> このメールは Google グループのグループ「LPM Users ML (JP)」に登録しているユーザーに送られています。
Reply all
Reply to author
Forward
0 new messages