[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
FreeBSD port to NetBSD package (Re: jgroff and Wnn4)
oishi@ims.ac.jp wrote:
> #最近はFreeBSDはports-currentだけ見て、実物をあんまり触っていないので、
> #うそ書いてたらごめんなさい。
私も良く知らないので、今調べながら書いています。
間違ってたらごめんなさい。
> FreeBSDでは、
> dependの形式もlib、run、buildといろいろあって、
> それぞれが網目状になって気がします。
> それでもdependの問題だけなら一応scriptで対処はできるはずですが、
網目状というのがよくわかりません。
作るとき必要、実行するとき必要、というようにそれぞれ別々の扱いですよね。
package-dependsで表示されるのは、LIB_DEPENDSとRUN_DEPENDSだけですね。
bsd.port.mkを書き換えて、
LIB_DEPENDS,RUN_DEPENDS,FETCH_DEPENDS,BUILD_DEPENDS,DEPENDS
全部表示するようにすれば良いですね。
> いくつかのパッケージを入れるとdipendしているパッケージ間でconfrict
> するといった問題もあったように思います。
これの具体例ってどこかにありますでしょうか?
pkg_installでのチェック方法に問題があるのでしょうか、
同じfileに重ねてインストールされてしまうとか?
# あ、portsには CONFLICTS がない... 別のなにかがあるのかな?
> #正しくdependが書かれていないportsがいくつかあったような。
しょうがないですね :-)
NetBSDに持ってくるときに、freebsd.orgにsend-prでしょう。
> さらにportsの管理が別々であるのに、
> 個別のバージョンアップが同時に行われているので
> 不整合が出やすいというのが私の認識です。
> (不整合があってもすぐに次のリリースで修正されるので実用上は問題ありませ
> ん)
これは依存されているものをupdateする人のせいな気が...
事前に相互チェックしてないのですね。
依存されている場合は、それらも動くかどうかチェックしないと。
#!/bin/sh
portsdir=`pwd`;
for pkg in */*; do
if [ -d "$pkg" ]; then
dir=`echo $pkg|sed -e 's/.*\///'`;
if [ "$dir" != "pkg" ]; then
echo -$pkg;
(cd $pkg; make PORTSDIR=$portsdir package-depends)
fi
fi
done
あとはこれをひっくりかえして、見易く整形しないとね :-)
> > portsに入っているものってあんまりチェックしたことがないのですが、
> > shared libraryを作るものって結構多いのでしょうか?
> FreeBSD-2.2.xの系列では、
> できるものはほぼ総てsharedになっているはずです。
> 普通のコンパイルでは作らないものもpatchをあてて作るように変えてありま
> す。
pkglibtoolを使うように書き直しが必要ですかね。
# あ、vflibはlibtoolを使うようになってますね。
結局、FreeBSD port -> NetBSD package は全自動ではできないけど、
・.include <bsd.port.mk> -> .include "../../mk/bsd.pkg.mk"
ports/Mk/bsd.port.mkになってたのね。気づかなかった...
・FreeBSD RCS ID -> NetBSD RCS ID, header削り
・MAINTAINER変更
くらいは自動でできますよね。pkg_convert とか作って pkgtoolsに入れちゃおう。
で、convert後のものを、Packages.txtに従って仕上げると。
・pkglint
・shared libraryを作るものはLIBTOOLを使う
・makeしてみて動作確認
・patch中の__FreeBSD__などに気をつける
・etc,etc
簡単なのは簡単だけど、難しいのは難しい... あたりまえか :-P
sakamoto@cec.co.jp