[sylpheed-jp:10827] Re: Sylpheed 3.0beta1 released

Tamo ttakah @ gmail.com
2009年 11月 5日 (木) 02:10:18 JST


高橋全と申します。

2009/10/29 Munesato Nakada <munesato @ mbox.homeip.net>:
> 3) sylpheed 2.7.1 を導入した環境において、3.0.0beta1 を configure --prefix で
> 同一ディレクトリを指定し 3.0.0beta1 を make install-strip で入れると、
> sylpheed 3.0.0beta1 が起動しませんでした。
> 共有ライブラリで関数名を解決できなかったようなので、一旦 libsylph-0.so 等を
> 削除してから make install-strip すると解消しました。
> 上書きを考えている方は注意が必要かも。(^_^;;

libtool のバージョン指定が間違ってるときの症状に似てますね。
http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html

"Never try to set the interface numbers so that they correspond
to the release number of your package. This is an abuse that
only fosters misunderstanding of the purpose of library versions."

以前からの流れを見ていないので断定できませんが、
よくある誤解に陥っているのではないかと想像してしまいました。

libsylph/Makefile.am では LT_CURRENT, LT_REVISION, LT_AGE を
使うように指定してあり、これだけなら問題ないのですが、
configure.in がよくわかりません。LT_RELEASE は定義されてるけど
これは libsylph/Makefile.am を見る限り libtool に渡ってないみたい
ですし、その他の LT_* は、MICRO_VERSION, INTERFACE_AGE, BINARY_AGE
を正しく上げていくことに依存しているようです。すなわち、

(0) リリースごとに 3 つの変数をそれぞれ ++ する。
(1) ライブラリに関数が増えたら INTERFACE_AGE=0
(2) 引数の変更や関数の減少などで互換性がなくなったら
    INTERFACE_AGE=0, BINARY_AGE=0

というルールです。
それで明らかに、MICRO_VERSION は減ることがありませんから、
version 3.0.x の x の部分に使うようなものではなさそうです。
(version-info だけじゃなく release も使うのであれば、
しょっちゅう 0:0:0 に戻しても大丈夫みたいですけれど、
それなら version-info する意味があまりないというか……)

どうするのが最善か分かりませんが、現状はちょっと奇妙に見えます。

-- 
tamo


Sylpheed-jp メーリングリストの案内