Kouhei Sutou
kou****@clear*****
2014年 10月 27日 (月) 14:11:10 JST
須藤です。 In <20141****@debia*****> "[groonga-dev,02873] Re: groonga の debian パッケージ" on Sat, 25 Oct 2014 12:33:14 +0900, Hideki Yamane <henri****@debia*****> wrote: >> これ、全部直さないとだめですか。。。? >> 「Architecture: any」のところを >> 「Architecture: i386 amd64 kfreebsd-i386 ...」みたいにするの >> はだめそうでしょうか。 > > まず、ワークアラウンドとしてはありです。 > ワークアラウンドといったのは「根本的にこれはこのアーキテクチャでしか動かない」 > ということがないのであれば、将来的には arch: any にするのが筋です。 ということであれば、「根本的にこれはこのアーキテクチャでしか 動かない」というのがあります。 Groongaは参照ロックフリーを実現するためにアトミック処理を要 求します。x86環境やWindows用のビルドではアセンブラで実現して いて、他の環境ではそのコンパイラーで使えるアトミック処理の APIを利用しています。いろんな環境用にアセンブラを書くのはメ ンテナンス面で現実的ではないのでコンパイラーがアトミック処理 のAPIを提供していない環境はサポートしません。 例えば、GCCは__atomic(*1)や__sync(*2)で始まるAPIを提供してい ますが、これを提供していないアーキテクチャはサポートしません。 https://gcc.gnu.org/wiki/Atomic を見る感じだと、 * alpha * x86_64 * mips * rs6000 * ia64 * s390 * xtensa * sparcv9, sparc64 * pentium (586, 686) あたりでは使えそうです。 一方、 * arm * pa * sh は、8byte用のAPIは提供していないということなので、サポートし ません。 (*1) https://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html (*2) https://gcc.gnu.org/onlinedocs/gcc/_005f_005fsync-Builtins.html >> 手元に環境がないやつに対応するのはかなりのエスパー力が必要に >> なるので大分難しいんですよ。 > > それはわかります :) ですよね! > https://db.debian.org/machines.cgi で「porterbox」となっているマシンに > ついては依頼すればアカウントが作成されて使えるようになるので、そちらで > どうですかね。 > > #といいつつ、自身では使ったことが無いので問い合わせ方は要確認ですが。 それは助かりますね。 だれか、やってやるぞ!という方っています? そのプラットフォームのことを知っている人がやってくれるとよさ そうですが。。。 ところで、これ、どのアーキテクチャでビルドできるようになると うれしいんでしたっけ。 https://buildd.debian.org/status/package.php?p=groonga に少しログがでている * arm64 * mipsel * powerpc * s390xc あたりですかねぇ。 「undefined reference to '__atomic_store_8'」とでているやつ は8bitのアトミック処理をサポートしていない雰囲気を感じるので 無理そうですね。 「undefined reference to 'GRN_ATOMIC_ADD_EX'」とでているやつ はGCCが提供アトミック処理を使うマクロを定義すればいけるかも しれません。 -- 須藤 功平 <kou****@clear*****> 株式会社クリアコード <http://www.clear-code.com/> Groongaベースの全文検索システムを総合サポート: http://groonga.org/ja/support/ パッチ採用 - プログラミングが楽しい人向けの採用プロセス: http://www.clear-code.com/recruitment/ コードリーダー育成支援 - 自然とリーダブルコードを書くチームへ: http://www.clear-code.com/services/code-reader/