)]}'
{
  "commit": "3ade15cc6f1973c8f2ba24fac6a6ddb956021e1f",
  "tree": "51426ed5e4dba1b1b41f333859174bec22b581fc",
  "parents": [
    "9843447a4cf9bf5af41211b2ddb44a293425739e"
  ],
  "author": {
    "name": "Laramie Leavitt",
    "email": "lar@google.com",
    "time": "Thu Aug 14 12:54:55 2025 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Aug 14 19:54:55 2025 +0000"
  },
  "message": "fix(local_runtime): Improve local_runtime usability in macos / windows (#3148)\n\nlocal_runtime fails to handle many variations of python install on\nWindows and\nMacOS, such as:\n\n* LDLIBRARY on MacOS may refer to a file under PYTHONFRAMEWORKPREFIX,\nnot LIBDIR\n* LDLIBRARY on Windows refers to pythonXY.dll, not the linkable\npythonXY.lib\n* LIBDIR may not be correctly set on Windows.\n* On windows, interpreter_path needs to be normalized. Other paths also\nrequire this.\n* SHLIB_SUFFIX does not indicate the correct suffix.\n\nFor examples, see: https://docs.python.org/3/extending/windows.html\n\nIn order to resolve this the shared library resolution has been moved\ninto get_local_runtime_info.py, which now does the following:\n\n* Constructs a list of paths to search based on LIBDIR, LIBPL,\nPYTHONFRAMEWORKPREFIX,\n  and the executable directory.\n* Constructs a list of libraries to search based on INSTSONAME,\nLDLIBRARY,\n  pythonXY.lib, etc.\n* Checks to see which files exist, partitioning the result into a list\nof\n  \"dynamic_libraries\" and \"static_libraries\" \n\nOn Windows and macOS, since SHLIB_SUFFIX does not always indicate the\nfilenames\nneeded searching, this has been removed from local_runtime_repo_setup\nand\nreplaced with an explicit file.\n\nOn Windows the interpreter_path and other search paths are now\nnormalized\n(`\\` converted to `/`).\n\nAdditional logging added to local_runtime_repo.\n\nFixes https://github.com/bazel-contrib/rules_python/issues/3055\nWork towards https://github.com/bazel-contrib/rules_python/issues/824\n\n---------\n\nCo-authored-by: Richard Levasseur \u003crichardlev@gmail.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6457363ccdd196b9d3524cb809ebeb67dfd2aca7",
      "old_mode": 33188,
      "old_path": ".bazelci/presubmit.yml",
      "new_id": "5889823d3d691769740341ff2f7e143c7f176044",
      "new_mode": 33188,
      "new_path": ".bazelci/presubmit.yml"
    },
    {
      "type": "modify",
      "old_id": "863b0e9c3f0fcdcd6910bd5991573c98ee5ce7e2",
      "old_mode": 33188,
      "old_path": ".gitignore",
      "new_id": "fb1b17e4667260be0aeca1020ff3b4aad267d200",
      "new_mode": 33188,
      "new_path": ".gitignore"
    },
    {
      "type": "modify",
      "old_id": "37a8c1dbe1de121c52bcdac39efa7f6499aa73dc",
      "old_mode": 33188,
      "old_path": "CHANGELOG.md",
      "new_id": "2dc235fbf6de10c1c8738fb94a86f653915dbe00",
      "new_mode": 33188,
      "new_path": "CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "c8371357c23d488f10648d212bd72c4437aa7555",
      "old_mode": 33188,
      "old_path": "python/private/get_local_runtime_info.py",
      "new_id": "ff3b0aeb010f971bd6edd804cd6422ddbffcb9f5",
      "new_mode": 33188,
      "new_path": "python/private/get_local_runtime_info.py"
    },
    {
      "type": "modify",
      "old_id": "b8b7164b54ec4096ff24d2995848d4b45e786726",
      "old_mode": 33188,
      "old_path": "python/private/local_runtime_repo.bzl",
      "new_id": "21bdfa627eecfb83475eb4077fcced40f4302d6d",
      "new_mode": 33188,
      "new_path": "python/private/local_runtime_repo.bzl"
    },
    {
      "type": "modify",
      "old_id": "37eab5957505356fdf72758e455b859609accee1",
      "old_mode": 33188,
      "old_path": "python/private/local_runtime_repo_setup.bzl",
      "new_id": "5d3a781152c7914542e43be6eebad3af1abf6ff7",
      "new_mode": 33188,
      "new_path": "python/private/local_runtime_repo_setup.bzl"
    },
    {
      "type": "modify",
      "old_id": "d178e0f01c2ce5e19a9bbbafb1bceba5cef9d152",
      "old_mode": 33188,
      "old_path": "tests/integration/BUILD.bazel",
      "new_id": "df7fe154447fedcb6c1db82fc469fbdd4c28641a",
      "new_mode": 33188,
      "new_path": "tests/integration/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "6b731181a68199ae3c1c72bcd8046edea635ce25",
      "old_mode": 33188,
      "old_path": "tests/integration/local_toolchains/BUILD.bazel",
      "new_id": "a0cb2b164d8c7fbfc0f71380345b52bf484bc216",
      "new_mode": 33188,
      "new_path": "tests/integration/local_toolchains/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "6c06909cd7d9b06614ccccb4998a44e872e446a7",
      "old_mode": 33188,
      "old_path": "tests/integration/local_toolchains/MODULE.bazel",
      "new_id": "45afaafbc9d7280d4e8e1b29f1c1e10e9bf4290b",
      "new_mode": 33188,
      "new_path": "tests/integration/local_toolchains/MODULE.bazel"
    },
    {
      "type": "modify",
      "old_id": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
      "old_mode": 33188,
      "old_path": "tests/integration/local_toolchains/WORKSPACE",
      "new_id": "480cd2794a2d120cd1f05499dbda854b8078ca70",
      "new_mode": 33188,
      "new_path": "tests/integration/local_toolchains/WORKSPACE"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "367d1a13b32b7a64af6f6a057cd4ef059e65b104",
      "new_mode": 33188,
      "new_path": "tests/integration/local_toolchains/echo_ext.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4cc31ff7594aa683b24625105bfc80f2e2a32e2c",
      "new_mode": 33188,
      "new_path": "tests/integration/local_toolchains/echo_test.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5d37fd782421f0a4d0585e1d8f200c3c444cbc96",
      "new_mode": 33188,
      "new_path": "tests/integration/local_toolchains/py_extension.bzl"
    },
    {
      "type": "modify",
      "old_id": "8e37fff6527dae2590c91a38f44ca6c56ca4eaff",
      "old_mode": 33188,
      "old_path": "tests/integration/local_toolchains/test.py",
      "new_id": "0a0d6bedeb1bd17a8975965387eabb166af36ee6",
      "new_mode": 33188,
      "new_path": "tests/integration/local_toolchains/test.py"
    }
  ]
}
