)]}'
{
  "commit": "3fb6ac385df80a5f583072c0b84247d503e330b7",
  "tree": "f708d2e1132a71236307bb1bce3f2179b7701bad",
  "parents": [
    "4e08dfcf563f1ef036a1561bd5312ad469077049"
  ],
  "author": {
    "name": "tomlu",
    "email": "tomlu@google.com",
    "time": "Thu Aug 24 00:44:45 2017 +0200"
  },
  "committer": {
    "name": "Damien Martin-Guillerez",
    "email": "dmarting@google.com",
    "time": "Thu Aug 24 14:00:00 2017 +0200"
  },
  "message": "Allow CommandLine expansion to throw an exception.\n\nThis paves the way for Skylark-side compact command lines that can fail during expansion.\n\nIn general, expansion happens in these scenarios:\n\n* Action execution expands the command line to execute it. This is fine since we are well equipped already to handle failing actions.\n\n* In the analysis phase we expand command lines to investigate whether we need a params file. This could be moved to the execution phase, which would have the benefit of getting params files out of the action graph and saving memory.\n\n* Key computation expands the command line. This could be fixed by allowing command lines to compute their own keys (which wouldn\u0027t try to expand the command line). This could have the benefit of being more efficient.\n\n* Extra actions expand the command line to construct the extra action proto. This could maybe be deferred to the execution phase (writing the extra action), which would also be more memory efficient.\n\nFor failed key computations, we return a singleton \"error\" key. This means multiple actions that will fail will map to the same key. These actions will necessarily fail if executed, so we should not need to worry about these ending up in the action cache. If we do manage to make the command line compute its own keys then this will become moot in the future.\n\nRELNOTES: None\nPiperOrigin-RevId: 166266385\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "9db7d38f2e5e892234b644ea0875a680216cd18f",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java",
      "new_id": "e19fdcc4aa3e05d2df94a23213e455f1f6b74e15",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java"
    },
    {
      "type": "modify",
      "old_id": "e27b122cb8c02106f9961b43cd57c81b2799f088",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/actions/Action.java",
      "new_id": "9faddfea0ce190b9773edf996a2fffb31c186670",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/actions/Action.java"
    },
    {
      "type": "modify",
      "old_id": "6184954699192490e3beffce65b2d49215a99f0e",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/actions/ActionExecutionMetadata.java",
      "new_id": "7f4b569b1385c4d67521c874129aa38e87a565d9",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/actions/ActionExecutionMetadata.java"
    },
    {
      "type": "modify",
      "old_id": "9c2d31ec862c0cc56dd799ed75664d9fddee14fe",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/actions/CommandAction.java",
      "new_id": "e8d5a93d1cd800a99420ec3b2511965acd8efa31",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/actions/CommandAction.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "91eebee4da76aa50276656e6ae55c1932458cc63",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/actions/CommandLineExpansionException.java"
    },
    {
      "type": "modify",
      "old_id": "37ba410a96670f7196c54ba4dc04896b25249be4",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/analysis/PseudoAction.java",
      "new_id": "d37770fd77633bd18716da2bb32acec6022b6446",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/analysis/PseudoAction.java"
    },
    {
      "type": "modify",
      "old_id": "7bc670569a6efff09b0b19ee159cbbf646482c26",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/analysis/actions/CommandLine.java",
      "new_id": "1ca9df707a942214f24ff93beca9f339def2553a",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/analysis/actions/CommandLine.java"
    },
    {
      "type": "modify",
      "old_id": "9803d05ddbbc8599a7c8c6e2362ec038190a286a",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/analysis/actions/ParamFileHelper.java",
      "new_id": "01781d422ca6aa8dcb3bf1b8161312822e118689",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/analysis/actions/ParamFileHelper.java"
    },
    {
      "type": "modify",
      "old_id": "6889e445139bc1db7f1fcefaf8b0f3b9977bba4b",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/analysis/actions/ParameterFileWriteAction.java",
      "new_id": "0dc67da467392e104e153baac9275ef1d49144b0",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/analysis/actions/ParameterFileWriteAction.java"
    },
    {
      "type": "modify",
      "old_id": "a1db0e05f036efb148ec45cd46d833b6760401ec",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java",
      "new_id": "ded0a8e795fa8ba4ab49e7aaf4ea4a87bc58ea3d",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java"
    },
    {
      "type": "modify",
      "old_id": "1357c106acaa8fee3ee0e083f5e98f12bad73430",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraActionInfoFileWriteAction.java",
      "new_id": "e9f21ec651cdb23e13206a190062103a25b360f9",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraActionInfoFileWriteAction.java"
    },
    {
      "type": "modify",
      "old_id": "bb572202cda06b76f64f38d70e2f38bf940c4be3",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/analysis/test/TestRunnerAction.java",
      "new_id": "f7d2fc184e937aeeef680240f14140d341823f9b",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/analysis/test/TestRunnerAction.java"
    },
    {
      "type": "modify",
      "old_id": "04affbbd0237abc305580189c91fe1d0a61e8646",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/exec/TestStrategy.java",
      "new_id": "78a878657fca58064a1baf5a01196d8b0dcff1ee",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/exec/TestStrategy.java"
    },
    {
      "type": "modify",
      "old_id": "2862ade4e6cac5d232be0929e73a57dde368e40a",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java",
      "new_id": "ed46336d533cf6a119ff03ebbfb754c28b6b2ff9",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java"
    },
    {
      "type": "modify",
      "old_id": "5ceaf00cf02fb6117e583d87c861dfbcf3c1dba1",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java",
      "new_id": "296befba8ae4d1d1b07d9da06d76eb16277b24e0",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java"
    },
    {
      "type": "modify",
      "old_id": "d305317c6bdcd65a625aaf4a322034de53358650",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendAction.java",
      "new_id": "b53d38bbfd2f129ed9e15bb319ff972659281596",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendAction.java"
    },
    {
      "type": "modify",
      "old_id": "65236c93ee4293c5494efbd77620866abbce4bb0",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleAction.java",
      "new_id": "5190829987c2a96553861096d9d4a60a198135a5",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleAction.java"
    },
    {
      "type": "modify",
      "old_id": "567e66e438c6533184fb48cb1dc28a27fe330b29",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java",
      "new_id": "c0c8ae4e804696c9ef1dc63639457f0df7122bfb",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java"
    },
    {
      "type": "modify",
      "old_id": "6f9fe8e11f15a30249b382d9d43a797c716a129b",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/java/JavaHeaderCompileAction.java",
      "new_id": "16c8823f62157fe67727987cb89d6786e2c4e6e1",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/java/JavaHeaderCompileAction.java"
    },
    {
      "type": "modify",
      "old_id": "dc7326d56e189157170e4382f88222665d5c3437",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/objc/LegacyCompilationSupport.java",
      "new_id": "3b09fc991f39ad4a2093bd9b86efb78d65e9f675",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/objc/LegacyCompilationSupport.java"
    },
    {
      "type": "modify",
      "old_id": "dc8e89d56bbf43049350b8ee9f2e2d7b45cff73f",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCompileAction.java",
      "new_id": "bfa06e21f5961accd4e788fb3063eb79df42828d",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCompileAction.java"
    },
    {
      "type": "modify",
      "old_id": "57457062b6e20b6c4484ca67b4d814135b5851b3",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/runtime/commands/PrintActionCommand.java",
      "new_id": "184c48d8f18639b2d5a77392227c57bcd8d4f2ed",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/runtime/commands/PrintActionCommand.java"
    },
    {
      "type": "modify",
      "old_id": "57b8f1dc207605d448414567f3ddf82420da524a",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java",
      "new_id": "c48ad81b3de829da3705be29cee8045f97b3da7b",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java"
    },
    {
      "type": "modify",
      "old_id": "c00b06e08f0367dd839f60208710bcbf58d640fd",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java",
      "new_id": "79f0d8cc7373c35748570a1629bdf247dba9c997",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java"
    },
    {
      "type": "modify",
      "old_id": "978fb9301a378c86956193554e3362f62e865982",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/rules/android/AndroidBuildViewTestCase.java",
      "new_id": "c38263ec50b38c1de2250838c0f1c12dca4d3fa8",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/rules/android/AndroidBuildViewTestCase.java"
    },
    {
      "type": "modify",
      "old_id": "cac7c2a54b52c2222935e25e967251e722cac486",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/rules/android/AndroidDataBindingTest.java",
      "new_id": "5dd1e92d145f78ae66ea41ad4347639f4a52c081",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/rules/android/AndroidDataBindingTest.java"
    },
    {
      "type": "modify",
      "old_id": "af7f0f1f893ac111b6c4358ce0d736da8a6e5eba",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/rules/objc/IosExtensionTest.java",
      "new_id": "7f9f9d68f9b3a9b960acc50c94486a8c231bb264",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/rules/objc/IosExtensionTest.java"
    },
    {
      "type": "modify",
      "old_id": "bbe7aef649187aba2028e74170a1c2d9b6d18c6f",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java",
      "new_id": "e0d84bc43ac5039085c8909a89be78bbd0b00212",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java"
    }
  ]
}
