2009年02月27日

ソースとは別のディレクトリで正しくビルドできないバグ

追記に書いたこのバグですが、ようやく理解した。
完全に自分のせいですね、これは…。

・オリジナルの anthy では、実際に定義が書いてある *.depword を master.depword が直接 include して読み込んでる。
・自作 depgraph では間にワンステップ挟んで、定義ファイル → 形式変換した中間(?)ファイル → master.depword という形にしてある。
・srcdir != builddir の場合、中間ファイルは builddir に作成されるが、master.depword は srcdir にあり、include しようにも builddir を見に行くようにはなっていない。
・従って、実質的に indepword.txt の内容しか持たないスカスカな anthy.dep が作成されてしまう。

これが、alt-depgraph-090223 の状態だと思います。
間にワンステップかましたために、オリジナルでは想定されてない事態になってしまって上手く行かなくなった、と。
付属語が一切ないので、変換すると多分単漢字だらけになると思います。

で、何とかうまく回避できないかなと思って色々考えましたが、mkdepgraph.c が srcdir にある master.depword を前提にしている以上、結局 mkdepgraph.c をいじる以外ないんじゃないかという結論に達しました。

# ビルド時に master.depword に変更加えたりするのは、srcdir と builddir を別にする意味がなくなるからマズいだろうし…。
# anthy-conf がインストールされないならやりようがあるような気もするけど…

そして、まあ、何と言うことでしょう、既に G-HAL 氏が対応させて下さったので、自分でやらなくても良くなってしまいました。

G-HAL 氏には、私のヘマなのに修正までして頂いて、本当にありがとうございます m(_ _)m
プログラム部分を自分でいじらなくても良くなったというのは、本当に助かりました。



posted by vagus at 00:40| 東京 🌁| Comment(12) | TrackBack(0) | 日本語入力 - アプリ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
あとでG-HALさんにメールを書きますが、
vagusさんの追記の手順でrpmを作っても
パッケージ作成に失敗します。
(私のほうの手違いかも)

> make[2]: *** `all-am' に必要なターゲット
> `adj-verb.all.dep' を make するルールがありません. 中止.
Posted by ut at 2009年03月01日 00:50
最新パッチを使ったからかもしれません。
anthy-9100h.patch13ptn20.2009228.bz2
anthy-9100h.patch13ptn20.2009225.alt-depgraph-090223.diff.tar.bz2

ソースと同じ場所でビルドするときは問題ありません。
Posted by ut at 2009年03月01日 01:01
うーん、今、
anthy-9100h.patch13ptn20.2009228_2.bz2
anthy-9100h.patch13ptn20.2009225.alt-depgraph-090223.diff.tar.bz2
でやってみたんですが「別ディレクトリでビルド」も「rpm の作成」(anthy に入ってる spec そのまま)も問題なくできました。

> ソースと同じ場所でビルドするときは問題ありません。
多分、G-HAL 氏がやって下さった対応で問題ないはずだと思うんですが、一応もうちょっと調べてみます。

Posted by vagus at 2009年03月01日 15:01
お手数お掛けしてすみません。
anthy同梱のanthy.specだとパッケージを作れることを確認しました。
Mandrivaのspecではautoreconfをかけているので
失敗したのかもしれません。
しばらく調整してみます。
Posted by ut at 2009年03月01日 18:50
> autoreconfをかけているので
あ、それですね。autotools よく分かってないので…

どこがいけないのか何となく分かった気がします。

Posted by vagus at 2009年03月01日 20:35
追っている途中なのであれですが、
autoreconfは関係ないようでした。
ここを
> %configure
> make
こうするとビルドに失敗します。
> %configure
> %make

%makeはparallel build用だったような。

パッチが複雑になりすぎてなかなか厳しいです。
Posted by ut at 2009年03月01日 21:46
autoreconfを実行した場合でも、
"make"なら問題ありませんでした。
ビルドに失敗するのは"%make"のときだけです。
Posted by ut at 2009年03月01日 22:05
Posted by ut at 2009年03月01日 22:17
(メール今気づいたので返信しました)
そちらでは%makeでもパッケージを作れますでしょうか?
Posted by ut at 2009年03月01日 22:33
(メール気づきましたので返信しました)
そちらでは%makeでもパッケージを作れますでしょうか?
Posted by ut at 2009年03月01日 22:40
なるほど。
 make -j N
は「コマンドを N個まで同時実行する」ということらしいので、「./mkdepword」が終わる前に「./mkdepgraph」が実行されちゃったんでしょうかね。
「./mkdepword」で作ったファイルを「./mkdepgraph」の入力にしてるので、同時実行ではマズいですね。

とりあえず「%make」ではなく「make」でお願いします。

# 「%make」というマクロは初めて知りました…
Posted by vagus at 2009年03月01日 23:42
ぬ、リロードしてなかった…

メールの方も拝見致しました。
こっちでも「%make」はコケます。何か違うコケ方ですが。

上記のようにシーケンシャルに実行しないとダメなようになってしまっているので、とりあえず「make」でお願いします。

色々お手数お掛けしました。ありがとうございます m(_ _)m
Posted by vagus at 2009年03月01日 23:48
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。