)]}'
{
  "commit": "4ffb87ad613d822e47ca1e21f9d832055ef95891",
  "tree": "e6d2cf19a3c4b5bbd48181f24271c7f7021f2158",
  "parents": [
    "0f610c8b37c7d3305c9e504e7666f62c53508d3c"
  ],
  "author": {
    "name": "David \u0027Digit\u0027 Turner",
    "email": "digit@google.com",
    "time": "Fri Jan 28 16:56:53 2022 +0100"
  },
  "committer": {
    "name": "Commit Bot",
    "email": "commit-bot@chromium.org",
    "time": "Wed Mar 09 19:32:06 2022 +0000"
  },
  "message": "Introduce new built-in \"phony\" tool.\n\nThis CL is the first in a series that will allow GN to generate\nsmaller Ninja files, by using phone rules instead of stamp files\nwhenever possible. This is a split of the working proof-of-concept\navailable at https://gn-review.googlesource.com/c/gn/+/11380.\n\nThis CL does not change GN\u0027s behaviour but:\n\n- It introduces the new BuiltinTool class used to expressed\n  built-in toolchain tools that cannot be customized like \"stamp\"\n  or \"copy\".\n\n- It adds a single \"phony\" tool definition, and ensures it is\n  added to each toolchain() instance automatically, but not\n  listed when exporting the build graph to JSON.\n\n  Note that nothing actually uses it at the moment, to make\n  reviewing this CL easier.\n\n- Add a new build settings flag, named \"no_stamp_files\". In\n  the future, enabling it will allow generating phony rules\n  instead of stamp files in Ninja outputs. For now, assert\n  with an error message if it is set to avoid any misuse.\n\nNote that Copyright notices mention 2020 because this work\nwas started a long time ago (thanks to rjascani@google.com\u0027s\nwork). They could be updated to 2022 without issues.\n\nFor testing the output of `gn gen` has been compared before\nand after this CL was applied with the Fuchsia source tree\nto verify that the output is the same.\n\nBug: 172\nChange-Id: I8f1140d1d953d38c318e3def8a4ccf8bdc304d58\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/12864\nReviewed-by: Brett Wilson \u003cbrettw@google.com\u003e\nReviewed-by: Brett Wilson \u003cbrettw@chromium.org\u003e\nCommit-Queue: Brett Wilson \u003cbrettw@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ae9c40de8aa9d720d6c1aa332a532798859301e2",
      "old_mode": 33261,
      "old_path": "build/gen.py",
      "new_id": "5fd57833c3e6096adac392394280afda774a2cc6",
      "new_mode": 33261,
      "new_path": "build/gen.py"
    },
    {
      "type": "modify",
      "old_id": "9a6c5147aa90b3e6751dd8eefb5468e84b8bb16a",
      "old_mode": 33188,
      "old_path": "src/gn/build_settings.h",
      "new_id": "6c925e985e0f366f49574b16333ce9bd0167f552",
      "new_mode": 33188,
      "new_path": "src/gn/build_settings.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e9f17ef116f1c97f85549ea8dd31cdfe722c451c",
      "new_mode": 33188,
      "new_path": "src/gn/builtin_tool.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0aff49d071bd7cafb65eaf57c3af63d195c8c6fb",
      "new_mode": 33188,
      "new_path": "src/gn/builtin_tool.h"
    },
    {
      "type": "modify",
      "old_id": "64713782d2cca7dd6c77d7fc072dbadd127dd02d",
      "old_mode": 33188,
      "old_path": "src/gn/filesystem_utils.cc",
      "new_id": "6de3fbdf6c33fd4f03f71723c7f1a23f9033f151",
      "new_mode": 33188,
      "new_path": "src/gn/filesystem_utils.cc"
    },
    {
      "type": "modify",
      "old_id": "2c826b5234f39824a947ecdbdec0bfba6e5ed7c6",
      "old_mode": 33188,
      "old_path": "src/gn/filesystem_utils.h",
      "new_id": "590f9e34d418431dafe4b4f9523b99c1284395a5",
      "new_mode": 33188,
      "new_path": "src/gn/filesystem_utils.h"
    },
    {
      "type": "modify",
      "old_id": "a54e2548dc40ba8b0174633d86f023be4de2c5d8",
      "old_mode": 33188,
      "old_path": "src/gn/json_project_writer.cc",
      "new_id": "ba23749159712d08a5902bde1226c851172fca5a",
      "new_mode": 33188,
      "new_path": "src/gn/json_project_writer.cc"
    },
    {
      "type": "modify",
      "old_id": "7be771932c78da920234bf9f84127b6cced7b5f1",
      "old_mode": 33188,
      "old_path": "src/gn/ninja_toolchain_writer.cc",
      "new_id": "2314bae5d3da6ab6d97f120145cffbafd1612624",
      "new_mode": 33188,
      "new_path": "src/gn/ninja_toolchain_writer.cc"
    },
    {
      "type": "modify",
      "old_id": "b6fdee2b4d95ef94dee22318bca1b744716084bf",
      "old_mode": 33188,
      "old_path": "src/gn/setup.cc",
      "new_id": "9dba72e0928a6d030fbcb2c372b62c99174d8013",
      "new_mode": 33188,
      "new_path": "src/gn/setup.cc"
    },
    {
      "type": "modify",
      "old_id": "bf3aba61a0fa46acb5bd7ad652ba5cdb302abfac",
      "old_mode": 33188,
      "old_path": "src/gn/tool.cc",
      "new_id": "684dc3e34ea7919d79b538812ed12ba162cfeff0",
      "new_mode": 33188,
      "new_path": "src/gn/tool.cc"
    },
    {
      "type": "modify",
      "old_id": "1e01af7778efc13babf943dc171488c5d70594fd",
      "old_mode": 33188,
      "old_path": "src/gn/tool.h",
      "new_id": "b95c64ba7bd9c2223ea12db3ed5aa30b270313bb",
      "new_mode": 33188,
      "new_path": "src/gn/tool.h"
    },
    {
      "type": "modify",
      "old_id": "bfad81db6351b35a194f483fb74e67330d621472",
      "old_mode": 33188,
      "old_path": "src/gn/toolchain.cc",
      "new_id": "a65618466cde53ae7ed5b8292612a5d7150a733a",
      "new_mode": 33188,
      "new_path": "src/gn/toolchain.cc"
    },
    {
      "type": "modify",
      "old_id": "eb5a60c526ecdc3473adb10b4c84aca36b710a0d",
      "old_mode": 33188,
      "old_path": "src/gn/toolchain.h",
      "new_id": "270fada797f24feb0e895c1f182211ad4fad3555",
      "new_mode": 33188,
      "new_path": "src/gn/toolchain.h"
    }
  ]
}
