残念ながら移植がそう簡単ではなく、それを動かすために 多少の変更が必要になる場合もあるでしょう。 このセクションでは、模範的な ports の作法に従い、 どのように変更を行なって動くようにするのかを 順を追って説明します。
まず、あなたが port のディレクトリで
make と
入力してから起こる一連の出来事について、
順を追って説明します。
ここを読むときには、別のウィンドウに
bsd.port.mk を表示しておくと
理解の助けになるかもしれません。
しかし、bsd.port.mk が何をしているのか
完全に理解できなくても 心配する必要はありません。
それほど多くの人が理解している というわけでは ありませんから…。
f(^_^;)
まず、fetch という
ターゲットが実行されます。
この fetch ターゲットは、
配布ファイルがローカルの DISTDIR に
存在することを保証する役目を持っています。
もし必要なファイルが DISTDIR に
存在しなければ、fetch ターゲットは
Makefile で指定された
MASTER_SITES 中の URL や、
FreeBSD のメイン FTP サイト ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/
(ここにはバックアップとして、われわれ ports 管理者が確認した
配布ファイルを置いてあります) を探しにいきます。
make を実行するマシンがインターネットに
接続されていて、目的のファイルを FETCH で
取ってこれた場合には、それを DISTDIR に
保存します。
次に extract ターゲットが実行されます。
このターゲットは DISTDIR から
配布ファイル (普通は gzip された tar ファイル) を読み込み、
その内容を作業ディレクトリ WRKDIR
(デフォルトでは work) に展開します。
次に patch ターゲットが実行されます。
まず、PATCHFILES にパッチファイルが
指定されていれば、そのパッチを適用します。
次に、PATCHDIR ディレクトリ
(デフォルトでは files サブディレクトリ) に
patch-* という
名前のパッチファイルが存在すれば、
これらをアルファベット順に適用します。
次に configure ターゲットが
実行されます。
これには、いろいろな場合があります。
scripts/configure が
存在する場合には、そのスクリプトが実行されます。
HAS_CONFIGURE または
GNU_CONFIGURE がセットされていれば、
WRKSRC/configure が
実行されます。
USE_IMAKE がセットされていれば、
XMKMF
(デフォルトでは xmkmf -a) が
実行されます。
最後に build ターゲットが実行されます。
これは作業ディレクトリ (WRKSRC) に降りていき、
ビルド (コンパイル) を実行するのが役目です。
USE_GMAKE がセットされていれば
GNU make が使用され、
セットされていなければ FreeBSD の make が
使用されます。
上記はデフォルトの動作です。これに加えて
pre-や
何とかpost-という
ターゲットを定義したり、そのような名前のスクリプトを
何とかscripts サブディレクトリに置くことも可能で、
それぞれデフォルトの動作の前や後に実行されます。
たとえば、post-extract ターゲットが
Makefile に定義されていて、
scripts サブディレクトリに
pre-build というファイルが置かれている場合、
post-extract ターゲットは
通常の展開動作の後に呼び出され、
pre-build スクリプトは
デフォルトのコンパイル動作の前に実行されます。
実行する動作が簡単であれば、スクリプトよりも
Makefile のターゲットを使用することが
推奨されています。
なぜなら、その port では どのような非標準の動作が必要とされるのか、
一箇所にまとめて書いてあった方が他の人に理解しやすいからです。
デフォルトの動作は bsd.port.mk の
do-という
ターゲットで実行されます。
たとえば port を展開するコマンドは
何とかdo-extract ターゲットに書かれています。
もしデフォルトのターゲットに不満があれば、
Makefile 中で
do-という
ターゲットを再定義することにより、
好きなように変更することができます。 何とか
「メイン」のターゲット
(たとえば extract,
configure、その他) は、
すべての前段階が実行されていることを確認してから、
実際のターゲットやスクリプトを呼び出す以外のことは
行ないませんし、これらが変更されることも想定されていません。
もし展開の方法を変更したいときには
do-extract の変更によって実現し、
extract
の動作は絶対に変更しないでください。
これで、ユーザが make と
入力したときに何が起こるのかが理解できたと思います。
では、完璧な port を作成するための推奨手順を
順に見ていきましょう。
本文書、および他の文書は ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ からダウンロードできます。
FreeBSD に関する質問がある場合には、
ドキュメント を読んだ上で
<questions@FreeBSD.org> まで (英語で) 連絡してください。
本文書に関する質問については、
<doc@FreeBSD.org> まで電子メールを (英語で) 送ってください。