分散メーク (dmake) を使用することにより、多数のプログラムで構成される大規模なプロジェクトの構築プロセスを複数のワークステーション (マルチプロセッサシステムの場合は複数の CPU) に分散させて、同時に作業を進行させることができます。dmake ユーティリティではメークファイルの構文解析の他に、次の作業を行うことができます。
同時構築の候補となるターゲットを特定する
ユーザー自身が設定した多数のホストに、ターゲットとなる各構築を分散する
dmake ユーティリティは、make ユーティリティの拡張版として提供されています。
dmake の概念を理解するには、次の事項に関する知識が必要になります。
構成ファイル (実行時構成ファイルと構築サーバー構成ファイル)
dmake ホストファイル
構築サーバー
dmake ユーティリティは、実行時構成ファイルと構築サーバー構成ファイルの 2 つを参照して、分散化の候補となる構築サーバーのジョブを特定し、各構築サーバーに分散させるジョブの数を決めます。
dmake ユーティリティは、dmake ホスト上で実行時構成ファイルを探して、各ジョブをどこに分散させるかを判断します。一般に、この構成ファイルは dmake ホストのホームディレクトリに、.dmakerc というファイル名で置かれています。このファイルには、一連の構築サーバーのリストと、各構築サーバーに分散させる各ジョブの数が記述されています。詳細については、「dmake ホスト」を参照してください。
各構築サーバーのファイルシステムには、/etc/opt/SPROdmake/dmake.conf という構築サーバー構成ファイルがあります。このファイルでは、dmake の全ユーザーが各構築サーバーに分散できる dmake ジョブの最大数を指定します。さらに、すべての dmake ジョブを実行する際の優先順位を指定することもできます。
詳細については、「構築サーバー」を参照してください。
dmake ユーティリティは、実行時構成ファイルを探して、各ジョブをどこに分散させるかを判断します。通常、このファイルは dmake ホストのホームディレクトリに、.dmakerc というファイル名で置かれています。dmake ユーティリティは、以下の順序に従って、実行時構成ファイルを探します。
-c オプションで、 コマンド行 (CLI) から指定されたパス名
DMAKE_RCFILE という名のメークファイルマクロにより、CLI から指定されたパス名
DMAKE_RCFILE 環境変数で指定されたパス名
$(HOME)/.dmakerc
実行時構成ファイルが見つからない場合、dmake ユーティリティはデフォルトとして dmake ホストに 2 つのジョブを分散させます。
実行時構成ファイルをユーザー自身が編集して、各構築サーバーのリストと各構築サーバーに分散させるジョブの数を記述することができます。次に、.dmakerc ファイルの例を示します。
# 自分のマシン。この行のため、dmake は自分のマシンへジョブを分散する。 falcon { jobs = 1 } hawk eagle { jobs = 3 } # 上司のマシン。たいてい、会議中。 heron { jobs = 4 } avocet
falcon、hawk、eagle、heron、avocet は構築サーバー
各構築サーバーに分散させるジョブの数を指定
デフォルトのジョブ数は 2 です。
"#" 文字で始まる行はコメントと解釈される
構築サーバー falcon は、同時に 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 オプションへの CLI 引数として指定された形式グループ
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 構成ファイルは、構築サーバーのファイルシステム中に置かれています。このファイルを使用すると、1 つの構築サーバー上で同時に実行できる dmake ジョブの最大数 (全ユーザーのジョブの合計数) を制限したり、すべての dmake ジョブを実行する際の優先順位を指定することができます。次に /etc/opt/SPROdmake/dmake.conf ファイルの例を示します。この例では、 (全 dmake ユーザーから) 1 つの構築サーバー上で実行できる dmake の最大数が 8 個に設定されます。
jobs: 8 nice_prio: 5
構築サーバーに /etc/opt/SPROdmake/dmake.conf ファイルがないと、そのサーバー上では dmake ジョブは実行できません。