build trace (ビルドトレース) ファイルの形式

build trace (ビルドトレース) ファイルは、C/C++ ビルドのログで、フィルターされていない実行追跡です。 これを kwinject で処理して build specification (ビルドスペック) を生成できます。build trace (ビルドトレース) ファイルは、JSON ファイル形式で出力されます。ファイルには以下が含まれています。

  • バージョンと作成者情報
  • ビルドで起動したコマンド
  • コマンドライン引数と環境変数
  • コマンドを実行した作業ディレクトリ

ルートレベルフィールド

JSON ファイルの最上位には、トレースファイルに関する基本情報のほかに、env オブジェクトと 1 つ以上の id オブジェクト (または event オブジェクト) が含まれています。最上位オブジェクト (versioncreatortop-level env、または id) はそれぞれ、単一の独立した行に記述する必要があります。Versioncreator、および env はそのイベントの前にリストしてください。下記は、代表的な JSON build trace (ビルドトレース) ファイルのルートレベルの例です。

{"version":101} 
{"creator":"kwinject, version 10.1.1"}
{"env":{"LIBGL_DRIVERS":"/usr/lib/fglrx/dri:/usr/lib32/dri", "MAKEFLAGS": " --jobserver-fds=3"}}
{"id":26008,"parent_id":-1,"work_dir":"/space/zlib-1.2.8","executable":"/space/gcc-4.9.0/bin/gcc","args":["gcc","-D_LARGEFILE64_SOURCE=1","-DHAVE_HIDDEN","-c","crc32.c"],"env-diff":{"ANT_HOME":"/opt/apache-ant-1.7","COLORTERM":"gnome-terminal","JAVA_HOME":"/opt/sun-jdk-1.6","LANG":"en_US.UTF-8"}}
{"id":26008,"parent_id":-1,"work_dir":"/space/zlib-1.2.8","executable":"/space/gcc-4.9.0/bin/gcc","args":["gcc","-D_LARGEFILE64_SOURCE=1","-DHAVE_HIDDEN","-c","foo.c"],"env-diff":{"ANT_HOME":"/opt/apache-ant-1.7","COLORTERM":"gnome-terminal","JAVA_HOME":"/opt/sun-jdk-1.6","LANG":"en_US.UTF-8"}}
...
{"id":26008,"parent_id":-1,"work_dir":"/space/zlib-1.2.8","executable":"/space/gcc-4.9.0/bin/gcc","args":["gcc","-D_LARGEFILE64_SOURCE=1","-DHAVE_HIDDEN","-c","bar32.c"],"env-diff":{"ANT_HOME":"/opt/apache-ant-1.7","COLORTERM":"gnome-terminal","JAVA_HOME":"/opt/sun-jdk-1.6","LANG":"en_US.UTF-8"}}

フィールドは次のとおりです。

フィールド 説明
version build trace (ビルドトレース) ファイルのバージョン。バージョンは、小数点を使って計算されます。101 (現在のバージョン) はバージョン 1.1 と同等です。たとえば、203 はバージョン 2.3 と同等です。
作成者 (オプション) トレースファイルを作成したツールの名前を表す文字列。kwinjectkwlogparserkwwrap など。
env 環境変数を含んでいるオブジェクト。最初のプロセスが実行される前の、システム上のすべての環境変数を表します。
id システムイベントをキャプチャするために使用した 1 つ以上の id オブジェクト。詳細については、次を参照してください。

id (event) オブジェクト

id オブジェクトには、ビルドの一環として発生する実際のシステム実行イベントに関する情報が含まれています。ビルドの一環として発生するプロセスおよびサブプロセスごとに新しい id オブジェクトが作成されます。

フィールドは次のとおりです。

フィールド 説明
id イベントの一意の ID。
parent_id このイベントを発生させたイベントの ID。この ID が指定されていない場合、最上位プロセスがこのイベントの親と想定されます。
work_dir 実行時の現在の作業ディレクトリ。
executable 実行可能ファイルのフルパス (/usr/bin/gcc など)。
args argv[0] など、コマンドライン引数を含んでいる配列。 通常、これは executable フィールドです。
env-diff (オプション) 現在の環境で変更された環境変数のリストを含んでいるオブジェクト。このフィールドには、システムレベルの環境変数と親および子プロセス間の相違が反映されます。新しい変数と、既存の変数の変更された値は、"name" : "value" です。削除された変数は null 値によって表現されます。