)]}'
{
  "commit": "a2059f978ed206b688daf4a8774211949610c2aa",
  "tree": "2446d0346cb842f3809d30fbc00501a3b6855a19",
  "parents": [
    "9200225a31cb9dbea80456e064ec2119c3e22f0a"
  ],
  "author": {
    "name": "Sam Clegg",
    "email": "sbc@chromium.org",
    "time": "Tue Sep 01 20:10:37 2026"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Sep 01 20:10:37 2026"
  },
  "message": "Revert normalize case of `__rootpath__` on Windows (#27639)\n\nIn #27626, `__rootpath__` was changed to use\n`os.path.normcase(__file__)` to prevent caller-specified casing from\npropagating to `config.LLVM_ROOT` and `sanity.txt`.\n\nHowever, on Windows `normcase` unconditionally converts the entire path\nincluding the drive letter to lowercase (`c:\\...`). This lowercases all\npaths derived from `path_from_root`, including default `config.CACHE`\nand `EMSCRIPTEN_SYSROOT`.\n\nWhen CMake runs on Windows, imported targets and compiler autodetection\npreserve uppercase drive letters (`C:\\...`). Because CMake\u0027s implicit\ninclude directory checks are case-sensitive string comparisons, the\nmismatch between `c:\\...` and `C:\\...` caused CMake to treat the sysroot\ninclude directory as an explicit non-system include, injecting\n`-isystem` and disrupting libc++ header search order in\n`test_cmake_install`. It also caused assertion failures in\n`test_cmake_compile_commands_noforce`.\n\nThe normalization of `config.LLVM_ROOT` in `generate_sanity()` in\n`tools/shared.py` (also added in #27626) is already sufficient to ensure\nthat `sanity.txt` remains consistent regardless of the casing used to\ninvoke `emcc`. Normalizing `__rootpath__` is unnecessary and harmful.\n\nSee: #27626",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "17058f417908a118275dab5d5dc34b31510bdd8e",
      "old_mode": 33188,
      "old_path": "tools/utils.py",
      "new_id": "a564a2bad8cac366c0fe16142e31905fbd106b37",
      "new_mode": 33188,
      "new_path": "tools/utils.py"
    }
  ]
}
