残念ながら移植がそう簡単ではなく、それを動かすために 多少の変更が必要になる場合もあるでしょう。 このセクションでは、模範的な 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> まで電子メールを (英語で) 送ってください。