久しぶりにrep2のバージョンを上げようと思って svn up したら、svn が http なんて知らないよ、と言うので調べてみたら、subversion 1.8 から、今までの neon の代わりに SERF って言うのを使うらしく、かつ ports ではデフォルトで無効になっていることがわかった。
そこで、/usr/ports/devel/subversion で make config して、SERF を有効にしてビルドしてみたところ、libdb-4.2.so が見つからないと言って db42 のビルドを始めるが、既にインストールされているよん、的なエラーで失敗する。
見てみると、/usr/local/lib/libdb-4.2.so と言うファイルは存在しており、何段階かのシンボリックリンクの先は /usr/local/lib/db42/libdb-4.2.so.2 と言う実体がある。
/usr/ports/devel/subversion/Makefile を読んでみても、BDB_BUILD_DEPENDS=yesくらいのことしか書いていない。
/usr/ports/Mk/bsd.database.mk とか読んで見ても良くわからず、とりあえず not found で調べてみると、/usr/ports/Mk/bsd.port.mk の中でライブラリの依存関係をチェックしているらしいことがわかった。
で、そこで何をやっているのかと見てみると、
早速、上記fileコマンドを /usr/local/lib/libdb-4.2.so にかけてみると、
man file してみると、-Lオプションはシンボリックリンクを辿るオプションらしいのだが、--mime-typeオプションがついているとうまく機能していないらしい。
しょうがないので、以下の様にファイルをパスではなく標準出力から食わせることで対応した。
ちょっと古いportsツリーを持っている別のマシンで見たところ、少なくとも 2013/3くらいまでは file コマンドを使うのとは別の方法でライブラリの存在チェックをしていたようだ。
で、FreeBSD9についても調べてみたところ、FreeBSD9.2のfileコマンドは、ちゃんと--mime-typeオプションがついていても-Lオプションが効いて、application/x-sharedlibを返してくれていた。
本当はportsのメンテナンスしてる人にレポートしないといけないんだけどなあ(こればっかり)
そこで、/usr/ports/devel/subversion で make config して、SERF を有効にしてビルドしてみたところ、libdb-4.2.so が見つからないと言って db42 のビルドを始めるが、既にインストールされているよん、的なエラーで失敗する。
見てみると、/usr/local/lib/libdb-4.2.so と言うファイルは存在しており、何段階かのシンボリックリンクの先は /usr/local/lib/db42/libdb-4.2.so.2 と言う実体がある。
/usr/ports/devel/subversion/Makefile を読んでみても、BDB_BUILD_DEPENDS=yesくらいのことしか書いていない。
/usr/ports/Mk/bsd.database.mk とか読んで見ても良くわからず、とりあえず not found で調べてみると、/usr/ports/Mk/bsd.port.mk の中でライブラリの依存関係をチェックしているらしいことがわかった。
で、そこで何をやっているのかと見てみると、
`file -b -L --mime-type $${libdir}/$${lib}` = "application/x-sharedlib"みたいなチェックをしている。
早速、上記fileコマンドを /usr/local/lib/libdb-4.2.so にかけてみると、
# file -b -L --mime-type /usr/local/lib/libdb-4.2.so application/x-symlinkなんて表示される。これが application/x-sharedlib じゃないから not found になっているわけだ。
man file してみると、-Lオプションはシンボリックリンクを辿るオプションらしいのだが、--mime-typeオプションがついているとうまく機能していないらしい。
しょうがないので、以下の様にファイルをパスではなく標準出力から食わせることで対応した。
ちょっと古いportsツリーを持っている別のマシンで見たところ、少なくとも 2013/3くらいまでは file コマンドを使うのとは別の方法でライブラリの存在チェックをしていたようだ。
で、FreeBSD9についても調べてみたところ、FreeBSD9.2のfileコマンドは、ちゃんと--mime-typeオプションがついていても-Lオプションが効いて、application/x-sharedlibを返してくれていた。
本当はportsのメンテナンスしてる人にレポートしないといけないんだけどなあ(こればっかり)