分散メーク (dmake) を使用すると、多数のプログラムから構成される大規模なプロジェクトを構築する処理を、複数のワークステーション上、またはマルチプロセッサシステムの複数の CPU 上に分散させることができます。dmake ユーティリティは、メークファイルを構文解析し、次のことを行います。
どのターゲットを同時に構築できるか判断します。
ユーザーが設定した複数のホストにそれらのターゲットの構築を分散します。
dmake ユーティリティは、make ユーティリティの一種です。
dmake を理解するためには、次の事柄についての知識が必要です。
構成ファイル (実行時構成ファイルおよび構築サーバー構成ファイル)
dmake ホスト
構築サーバー
dmake ユーティリティは、どの構築サーバーにジョブを分散するか、また各サーバーにどれだけのジョブを分散するかを決定する際に、2 つのファイルを参照します。
dmake ユーティリティは、dmake ホスト上の実行時構成ファイルにおいて、ジョブの分散先に関する情報を参照します。通常、このファイルは dmake ホストのホームディレクトリに .dmakerc という名前で格納されています。このファイルには、構築サーバーおよび各構築サーバーに分散されるジョブ数が記述されています。詳細は、「dmake ホスト」を参照してください。
構築サーバーのファイルシステム内に /etc/opt/SPROdmake/dmake.conf というファイルがあります。このファイルには、各構築サーバーに分散できる、全 dmake ユーザーによる dmake ジョブの最大合計数を指定します。また、すべての dmake ジョブの実行に適用される nice 優先度も指定できます。
詳細は、「構築サーバー」を参照してください。
dmake ユーティリティは、実行時構成ファイルを検索し、ジョブの分散先に関する情報を得ます。通常、このファイルは、.dmakerc という名前で dmake ホストのホームディレクトリに置かれている必要があります。dmake ユーティリティは、実行時構成ファイルの場所を次の順序で検索します。
コマンド行で -c オプションを使って指定されたパス名
DMAKE_RCFILE メークファイルマクロを使って指定されたパス名
DMAKE_RCFILE 環境変数を使って指定されたパス名
$(HOME)/.dmakerc
実行時構成ファイルが見つからなかった場合、dmake ユーティリティは dmake ホストに 2 つのジョブを分散します。
実行時構成ファイルは、ユーザーが編集して、構築サーバーのリストと、各構築サーバーに分散させるジョブ数を設定します。次に .dmakerc ファイルの例を示します。
# My machine. This entry causes dmake to distribute to it. falcon { jobs = 1 } hawk eagle { jobs = 3 } # Manager's machine. She's usually at meetings heron { jobs = 4 } avocet
falcon、hawk、eagle、heron、avocet は、構築サーバーのリストです。
構築サーバーごとに、分散させたいジョブ数を指定できます。デフォルトのジョブ数は 2 です。
"#"の文字で始まる行は、コメントとして解釈されます。
この構築サーバーのリストには、dmake ホストである falcon が含まれています。dmake ホストも構築サーバーとして指定することができます。実行時構成ファイルに dmake ホストを指定しない場合、dmake ホストには dmake ジョブが分散されません。
実行時構成ファイルには、構築サーバーをグループ化して設定することもできます。この方法によって、状況に応じて構築サーバーのグループを簡単に切り替えることができます。たとえば、異なるオペレーティングシステムでの構築処理ごとにユーザーが構築サーバーグループを定義したり、特殊なソフトウェアがインストールされている構築サーバーのグループを定義することもできます。
次に、構築サーバーのグループが定義されている実行時構成ファイルの例を示します。
earth { jobs = 2 } mars { jobs = 3 } group lab1 { host falcon { jobs = 3 } host hawk host eagle { jobs = 3 } } group lab2 { host heron host avocet { jobs = 3 } host stilt { jobs = 2 } } group labs { group lab1 group lab2 } group sunos5.x { group labs host jupiter host venus { jobs = 2 } host pluto { jobs = 3 } }
グループであることが group 命令によって定義され、そのメンバーのリストが中括弧 ({}) で囲まれています。
グループのメンバーになる構築サーバーは、host 命令によって指定されます。
グループをほかのグループのメンバーにすることもできます。
構築サーバーのグループが指定されている実行時構成ファイルに、個々の構築サーバーを指定することもできます。この場合、dmake は、個々に指定された構築サーバーを名前の指定されていないグループのメンバーとして扱います。
次の優先度に従って、dmake ユーティリティはジョブを分散します。
コマンド行で -g オプションの引数として指定されたグループ
DMAKE_GROUP メークファイルマクロを使って指定されたグループ
DMAKE_GROUP 環境変数を使って指定されたグループ
実行時構成ファイルで最初に指定されたグループ
dmake ユーティリティを使用すると、構築サーバーごとに異なる実行パスを指定できます。デフォルトでは、dmake は、dmake ホストと同じ論理パスを使用して、構築サーバー上の dmake サポートバイナリファイルを検索します。.dmakerc ファイルには、次のように、構築サーバー用の別のパスをホスト属性として指定できます。
group lab1 { host falcon{ jobs = 10 , path = “/set/dist/sparc-S2/bin” } host hawk{ path = “/opt/SUNWspro/bin” } }
.dmakerc ファイルでは、グループ名およびホスト名を二重引用符で囲むことができます。文字列の一部として二重引用符を使用することで、グループおよびホストに付ける名前の制約が緩和されます。数字も英字と同様に使用できるようになります。数字で始まる名前は、次のように、二重引用符で囲む必要があります。
group “123_lab”{ host “456_hawk”{ path = “/opt/SUNWspro/bin” } }
構築サーバーのファイルシステム内に /etc/opt/SPROdmake/dmake.conf というファイルがあります。このファイルは、この構築サーバーで同時に実行できる (すべてのユーザーからの) dmake ジョブの最大数を指定するために使用します。また、すべての dmake ジョブの実行に適用される nice 優先度も指定できます。次に /etc/opt/SPROdmake/dmake.conf ファイルの例を示します。このファイルでは、1 つの構築サーバーで実行可能な (すべての dmake ユーザーからの) dmake ジョブの最大数を、 8 に設定しています。
max_jobs: 8 nice_prio: 5
構築サーバーに /etc/opt/SPROdmake/dmake.conf ファイルが存在しない場合、そのサーバーでは、dmake ジョブを実行することはできません。構築サーバーとして使用したい場合は、手動でこのファイルを作成してください。