[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