FreeBSD ハンドブック : ソースツリーのガイドラインおよび方針 : 寄贈ソフトウェア
Previous: Makefile 中の MAINTAINER
Next: 共有ライブラリ

18.2. 寄贈ソフトウェア

1996年6月.

FreeBSD 配布物のうちのいくつかのソフトウェアは FreeBSD プロジェクト 以外のところで保守されています. 歴史的な経緯から, 私たちはこれを 寄贈 ソフトウェアと 呼んでいます. perl や gcc, patch などがその例です.

ここ数年来, この種のソフトウェアの取り扱いには, さまざまな方法が 取られてきましたが, どの方法にもいくつかの利点と欠点があります. これまで欠点のない明確な方法はありませんでした.

議論した結果, これらの方法のうちの一つが「公式な」方法として選択され ました. その方法が, 今後, この種のソフトウェアを取り込む場合に, 使用 されます. その上, この方法では, だれもが(cvs にアクセス権のない人でさえ)「公式」 バージョンのソースに対する差分を簡単に得ることができます. これは古い方法にはなかった大きな利点です. ですから, 既存の寄贈ソフトウェアも, この方法に収束していくことを強く望んでいます. この方法を使用することにより, 寄贈ソフトウェアの主な開発者に, 変更 点を返すのがとても容易になります.

しかしながら結局, 寄贈ソフトウェアの取扱は, 実際に作業を行って いる人々に委ねられています. もしこの方法を使用することが, その人が扱っているパッケージには 極端に合わないような場合には, コアチームの承認さえあれば, これらの ルールに反しても, 他の開発者の一般的な合意は得られるでしょう. 将来にわたってパッケージを保守できるということは, 大変重要な事柄に なってきます.

プログラミング言語 Tcl は, この方法が活用されているよい例になっています:

src/contrib/tcl
には, このパッケージの保守管理者が 配布したソースが含まれています. この中からは FreeBSD に完全には適用 できない部分が削除されています. Tcl の場合は, "mac", "win", "compat" というサブディレクトリは, FreeBSD に取り込む前に削除されて いました.

src/lib/libtcl
には, ライブラリを生成したり, ドキュ メントをインストールする際に使用される, 標準の bsd.lib.mk の 規則を使用した「bmake スタイル」の Makefile だけが 含まれています.

src/usr.bin/tclsh
には, bsd.prog.mk 規則 を使用して, "tclsh" プログラムや関連するマニュアルページを生成 /インストール する bmake スタイルの Makefile だけが含まれています.

src/tools/tools/tcl_bmake
には, tcl ソフトウェアを更新する必要が生じたときの助けになる2つのシェルス クリプトが含まれています. これらは, ソフトウェアを構築するのに使用し たり, インストール対象になるソフトウェアではありません.

ここ重要なのは, "src/contrib/tcl" ディレクトリが, 規則にしたがっ て作られているということです. つまり, できるだけ FreeBSD に特化した 変更をおこなわないようにしたソースを(CVS のベンダブランチに)おくようにし ています. freefall 上の「簡易取り込み」ツールは, 寄贈ソフトウェアを取り込む 手助けとなります. けれども, このツールの実行方法に疑問が生じた場合は, まずはじめに質問して, 失敗をしないようにしてください. そして, その疑問を「解決して」からツールを使用してください. CVS に寄贈ソフトウェアを取り込む際には, 事故があってはいけません. よくあるような間違いをおかさないように, 十分注意してください.

CVS には, 残念なことにベンダブランチという設計制限があります. このため, CVS に寄贈ソフトウェアを取り込むには, オリジナル配布ソースに 適用されるベンダからの「公式」パッチと, ベンダブランチに逆輸入された 結果が必要です. ベンダブランチの一貫性を破壊したり, 将来, 新しいバージョンを取り込む 時に衝突を起こしてしまったりというような 困難な事態に陥らないように しなければなりません. そのために, FreeBSD が管理しているバージョンに 対して, 公式パッチを決して当ててはいけませんし, 公式パッチを "commit" してはいけません.

多くのパッケージが, 他のアーキテクチャや他の環境と FreeBSD との互換性を保ためのファイルをいくつか含んでいます. そこで, スペースを節約するために, FreeBSD にとっては無意味な配布ツリー上の一 部を削除することが許されています. けれども, 削除されずに残ったファイルに対する, 著作権の通知やリリース ノートのような情報を含んだファイルは, 決して削除しては いけませ ん .

"bmake" Makefile が何らかのユーティリティによって, 配布ツリー から自動的に生成できると, うまくいけば, 新しいバージョンへの アップグレードをより簡単におこなうことができます. もしこのようなユーティリティを作成できた場合には, 将来の管理者に とって便利になるように, 移植の際に, src/tools ディレクトリ上に, (必要に応じて)そのユーティリティを必ずチェックインしてください.

src/contrib/tcl レベルのディレクトリには, FREEBSD-upgrade と 呼ばれるファイルが追加されており, そのファイルでは 次のような内容が 記述されています.

しかしながら, 寄贈ソースと一緒に FREEBSD-upgrade ファイルを 取り込まないでください. それよりむしろ, (訳注:このファイルを)初回に取り込んだ後は, コマンド ``cvs add FREEBSD-upgrade ; cvs ci'' を実行してください. ``src/contrib/cpio'' を例にすると, 次のようになります:

このディレクトリは「ベンダ」ブランチ上のオリジナル配布ファイル
の初期ソースが含まれています. いかなる事情があっても, 
パッチや cvs コミットによってこのディレクトリ上のファイルを
アップグレードしてはいけません.
(訳注:ベンダから配布された)新しいバージョンや公式パッチだけが
(訳注:このディレクトリに)取り込まれなくてはいけません.

GNU cpio 2.4.2 を取り込むためには, 以下のファイルが削除されました:

        INSTALL         cpio.info       mkdir.c
        Makefile.in     cpio.texi       mkinstalldirs

cpio を新しいバージョンにアップデートするためには, 次の作業を
おこないます:

        1. 空のディレクトリに新しいバージョンを取り出します.
           [ファイルに「いかなる変更」も加えてはいけません]

        2. 上記にリストされたファイルと, FreeBSD には無意味な
           ファイルを削除します.

        3. 次のコマンドを実行します:
                cvs import -m 'Virgin import of GNU cpio v<version>' \
                        src/contrib/cpio GNU v<version>

           例えば, バージョン 2.4.2 を取り込むためには, 次のように
           タイプします:
                cvs import -m 'Virgin import of GNU v2.4.2' \
                        src/contrib/cpio GNU v2.4.2

        4. FreeBSD に対するローカルな変更と, 新しいバージョンとの間での
           矛盾を解消するために, ステップ 3 で出力された命令を実行します.

いかなる事情があっても, この手順から外れてはいけません.

cpio にローカルな変更を加えたい場合には, メインブランチ(別名 HEAD)に対して
パッチを実行し, コミットしてください.
決して GNU のブランチにローカルな変更を加えないでください.

ローカルにおこなわれたすべての変更を次のリリースに含めるために,
"cpio@gnu.ai.mit.edu" に提出してください.

obrien@freebsd.org - 30 March 1997


FreeBSD ハンドブック : ソースツリーのガイドラインおよび方針 : 寄贈ソフトウェア
Previous: Makefile 中の MAINTAINER
Next: 共有ライブラリ
FreeBSD Home Page
www@freebsd.org
Updated May 23, 1997