)]}'
{
  "commit": "2941d2a26fa9cef3103f10e1dee5da7cd404008a",
  "tree": "6c51bb856204080df9e039f6172c9072837f79ff",
  "parents": [
    "382e68c6db30e7061e5898c14574aed4c9be7079"
  ],
  "author": {
    "name": "Nico Weber",
    "email": "thakis@chromium.org",
    "time": "Mon Mar 09 12:43:52 2026 -0400"
  },
  "committer": {
    "name": "GN LUCI",
    "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Thu Mar 12 08:29:33 2026 -0700"
  },
  "message": "Reject newlines in string config values (defines, cflags, etc.)\n\nA literal newline in a define or flag value would be written verbatim\ninto ninja files, breaking ninja\u0027s line-based parsing. Rather than\ntrying to escape newlines (which would work on POSIX via $$\u0027\\n\u0027 but\nhas no equivalent for cmd.exe on Windows), reject them with a clear\nerror at GN time. A newline in a compiler flag is almost certainly\na mistake anyway.\n\nThe validation is in GetStringList() so it covers all string config\nvalues: defines, cflags, cflags_c, cflags_cc, cflags_objc,\ncflags_objcc, asmflags, arflags, ldflags, rustflags, rustenv, and\nswiftflags.\n\nBefore, without the pkg-config.py change in the linked bug, things\nfailed at build time:\n\n```\n% autoninja -C out/gnlinux  base_unittests\noffline mode\nninja: Entering directory `out/gnlinux\u0027\n 0.20s load build.ninja failed:\n\n 1.47s Error: failed to load build.ninja: toolchain.ninja: line:61052: unexpected indent: \"  include_dirs \u003d\n```\n\nNow, the fail at `gn gen` time instead:\n\n```\n% ~/src/gn/out/gn gen out/gnlinux\n//build/config/linux/pkg-config.py [\"-s\", \"../../build/linux/debian_bullseye_amd64-sysroot\", \"-a\", \"x64\"] []\nERROR at //build/config/linux/atk/BUILD.gn:33:5: Newlines in defines values are not supported.\n    \"ATK_LIB_DIR\u003d\\\"$atk_lib_dir\\\"\",\n    ^-----------------------------\nThe value `ATK_LIB_DIR\u003d\"[[],[],[],[],[]]\n\"` contains a newline.\nSee //build/config/linux/atk/BUILD.gn:19:1: whence it was called.\npkg_config(\"atk\") {\n^------------------\nSee //ui/accessibility/BUILD.gn:465:20: which caused the file to be included.\n      configs +\u003d [ \"//build/config/linux/atk\" ]\n                   ^-------------------------\n```\n\nBug: 40176116\nChange-Id: I870d625552087430f5a679b8668a1929662e7b4a\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/21460\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Nico Weber \u003cthakis@chromium.org\u003e\nReviewed-by: Nico Weber \u003cthakis@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3db4bff900d181d87fcdbf04e928bc72bd331910",
      "old_mode": 33188,
      "old_path": "src/gn/config_values_extractors_unittest.cc",
      "new_id": "d187daba1afa6486a22dbad43c0a810c6b5e8289",
      "new_mode": 33188,
      "new_path": "src/gn/config_values_extractors_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "cf91a8ce3cc64c6f426cad4403628787b20f5943",
      "old_mode": 33188,
      "old_path": "src/gn/config_values_generator.cc",
      "new_id": "3d95f4666d0195536385d576346f3e5cc29d55d5",
      "new_mode": 33188,
      "new_path": "src/gn/config_values_generator.cc"
    }
  ]
}
