英語フランス語スペイン語

Ad


OnWorksファビコン

makepp_sandboxes - クラウドでオンライン

Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターを介して OnWorks 無料ホスティング プロバイダーで makepp_sandboxes を実行します。

これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド makepp_sandboxes です。

プログラム:

NAME


makepp_sandboxes -- makepp ビルドを分割する方法

DESCRIPTION


D: --do-build、
--構築しないでください、
--読まないでください、
--読んでください、 I: --サンドボックス内、
-- サンドボックス内、 O: --サンドボックス外、 S: --サンドボックス、
--サンドボックス警告、
--サンドボックス警告、 V: --仮想サンドボックス

makepp のファイル ツリーをパーティション化する理由はいくつかあります。
ビルド:

1. ツリーの大部分が、変更の影響を受けないことがわかっている場合
前回のビルド以降のソース ファイルがある場合、makepp にそのファイルを想定するように指示できます。
ツリーのそれらの部分はすでに最新です。つまり、暗黙的にも最新ではありません。
メイクファイルをロードするだけでなく、依存関係を計算してチェックすることもできません。 (注記
ただし、明示的にロードされた Makefile は引き続きロードされます。)

2. 同じツリーにアクセスする複数の makepp プロセスがある場合、
XNUMX つの同時プロセスがファイルの同じ部分を書き込んでいることを検出すると、エラーが発生します。
ツリー、または XNUMX つのプロセスが同時プロセスが読み取っているツリーの一部を読み取っていることを示します。
書き込み。 いずれにせよ、イベントの相対的な順序が異なる競合状態が発生します。
XNUMX つの同時プロセスでは (保証できません)、結果に影響を与える可能性があります。

Makepp には、両方の懸念に対処するサンドボックス機能があります。

サンドボックス オプション
次の makepp オプションを使用して、サブツリーのサンドボックス プロパティを設定できます。
によって与えられた path およびそのすべてのファイルと潜在的なファイル:

--ビルドしないでください path
--do-build path
「dont-build」プロパティを設定またはリセットします。 このプロパティ セットを持つファイルはすべて、
すでに最新であるため、ビルド チェックは実行されません。 デフォルトはリセットされます
(つまり、「do-build」)、「RootMakeppfile」がある場合を除き、その場合はすべて
サブツリー ID「dont-build」の外側。

--サンドボックス path
--サンドボックス内 path
--inside-サンドボックス path
--サンドボックス外 path
「サンドボックス内」プロパティを設定またはリセットします。 makepp がそうでない場合はエラーが発生します
このプロパティをリセットしてファイルを書き込みます。 ビルド チェックは、次の場合を除き、引き続き実行されます。
「dont-build」プロパティも設定されます。 ただし、デフォルトは設定されています (つまり、「サンドボックス内」)。
あります --サンドボックス オプション。この場合、他のすべてのファイルのデフォルトは次のとおりです。
リセット (つまり、「サンドボックス外」)。

--sandbox-warn
--sandbox-warning
「サンドボックス内」および「読み取り禁止」の違反をエラーではなく警告にダウングレードします。
これは、違反が数百件ある場合に便利で、すべての違反を収集できます。
それらを XNUMX 回の実行で解決し、適切な修正措置を講じます。 それ以外の場合は、のみが表示されます
makepp の呼び出しごとに XNUMX つの違反があり、残りの違反がいくつあるかは、実行するまでわかりません。
それらはすべて修正されています。

--読まないでください path
---読んでください path
「dont-read」プロパティを設定またはリセットします。 makepp がそうでない場合はエラーが発生します
このプロパティが設定されたファイルを読み取ります。 デフォルトはリセット (つまり、「do-read」) です。

--仮想サンドボックス
この makepp プロセスによって作成されていないファイルのビルド情報を書き換えないでください。 これ
重複するサンドボックスを使用して makepp プロセスを同時に実行する場合に便利です。
XNUMX つのプロセスが同じターゲットの構築を試行しないことは確実です。 マケップは
その後、読み取ったファイルに関する追加情報をキャッシュしないようにします。
他にも同時読者がいる可能性があります。

これら 3 つのプロパティはそれぞれ、サブツリー全体に適用されます。
まだ存在します。 より具体的なパスは、より具体的でないパスをオーバーライドします。 指定されたパスは、
ファイルがまだ存在していない場合でも、個々のファイル。

プロパティがまったく同じパス上で設定およびリセットされた場合、表示されるオプションは
コマンドラインの右端にあるものが優先されます。

サンドボックス for 加速
makepp がすでに存在していることがわかっているファイルの処理に時間を無駄にしないようにしたい場合は、
最新の状態 (特に、makepp 以外のビルド ツールによって生成されたファイル)、
その後 --ビルドしないでください あなたのためのオプションです。

このような最適化で最も一般的なケースは、すべてがそうでないことを知っているということです。
開始ディレクトリ以下はすでに最新の状態になっています。 これを伝えることができるのは、
makepp を使用して "--ビルドしないでください /. --do-build .".

サンドボックス for 同時 プロセス
ビルドの待ち時間を短縮できる手法の XNUMX つは、複数の makepp プロセスを動作させることです。
同じ木の上で。 これは、 -j オプション、
しかし、次の理由により、大幅に効果的になる可能性もあります。

· サンドボックスでは、ジョブなどを介してプロセスが複数のホストで実行される場合があります。
待ち行列システム。 増加する -j 制限により、最終的には CPU リソースが使い果たされます。
単一ホストの場合、過剰なプロセス フォークによりビルドが遅くなる可能性もあります。

· -j 現在、ロードなどの makepp の時間のかかるタスクの一部を並列化していません。
makefile、スキャン、スキャン中の暗黙的な依存関係の構築、およびチェック
依存関係。

このアプローチの最大のリスクは、次の場合にビルドが非決定的になる可能性があることです。
同時実行される可能性のあるプロセスは相互に対話します。 これはシステムの構築につながります
不正確な結果が散発的に生成され、その理由を判断する簡単なメカニズムがない
それは起こります。

このリスクに対処するには、同時プロセス間でツリーを分割することをお勧めします。
したがって、プロセスがファイルシステムに不適切にアクセスすると、エラーが発生します。
決定的に直ちに引き上げられます。 通常、これはそれぞれに割り当てることで実現されます。
同時プロセスは、書き込みが許可されている「サンドボックス」を処理します。
XNUMX つの同時プロセスが重複する場合があります。

さらに、各プロセスは、他の同時プロセスのサンドボックスをマークします。
「読まないでください」として。 プロセスが別の同時プロセスが担当するファイルを読み取る場合
書き込みの場合(したがってまだ書き込まれていない可能性があります)、エラーが発生します
すぐに。

サンドボックス for シーケンシャル プロセス
ビルドが同時 makepp プロセス用にパーティション化されている場合、通常は
プロセスのさまざまなペア間の順序関係。 たとえば、
XNUMX 個の同時コンパイル プロセスと、それに続く XNUMX つのリンク プロセスが開始できない
すべてのコンパイルプロセスが完了するまで。 このような連続的な関係は、
さまざまな makepp プロセスを調整するメカニズムによって強制されます (たとえば、
ジョブキューシステム)。

プロセスに既知の順序関係がある場合、通常は、
ツリーの同じ部分にアクセスするとエラーが発生します。
決定論的。

ただし、一般的には次のように指定することが有益です。 --ビルドしないでください 扶養家族へのオプション
すでに設定されている領域を通知するプロセス (この例ではリンク プロセス)
前提条件のプロセス (この例ではコンパイル ジョブ) によって更新されています。 この中で
このようにして、ヌル構築ターゲットの不必要な作業のほとんどを回避します。
更新しました。

onworks.net サービスを使用してオンラインで makepp_sandboxes を使用する


無料のサーバーとワークステーション

Windows と Linux のアプリをダウンロード

Linuxコマンド

Ad