)]}'
{
  "commit": "8a5f73b06399f4712b29bc3b99a41714c7bc98ef",
  "tree": "bf56dd3b3a3edfca260b97c00593f044ce06b88a",
  "parents": [
    "fa2aa2467720a776411c21a197c7c386f8405be1"
  ],
  "author": {
    "name": "Andrew Fish",
    "email": "fish@snowcapcompute.com",
    "time": "Tue Oct 13 22:36:28 2026 +0000"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Oct 13 22:36:28 2026 +0000"
  },
  "message": "fix(toolchains): mark the python extension os- and arch-dependent (#4259)\n\nThe `python` extension picks `*_host` runtimes by checking\n`module_ctx.os`,\nbut doesn\u0027t declare that it depends on the host. Bazel caches the result\nin\nthe output base under a single key, so an output base shared by amd64\nand\narm64 (e.g. a Docker cache volume) reuses the other host\u0027s result and\nfails:\n\n```\nCould not find a compatible \u0027host\u0027 python for \u0027linux\u0027, \u0027aarch64\u0027\nfrom the loaded platforms: [\"x86_64-unknown-linux-gnu\", ...]\n```\n\nSetting `os_dependent` and `arch_dependent` makes Bazel evaluate the\nextension per host.\n\nReproduced with Bazel 8.8.1 and 9.1.1 by running amd64 then arm64\ncontainers\non one output base; this change fixes it. Bazel 7.7.1 is unaffected. No\ntest,\nsince it needs two hosts sharing an output base.",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ea17098e84dcdc59bf0f0fa4fc61e6be72079674",
      "new_mode": 33188,
      "new_path": "news/python-ext-os-arch-dependent.fixed.md"
    },
    {
      "type": "modify",
      "old_id": "05334c3da1d548add6a88672867919ee3ac83cba",
      "old_mode": 33188,
      "old_path": "python/private/python.bzl",
      "new_id": "19db885e570e8b6adbb69aae03bee24e6c8c090a",
      "new_mode": 33188,
      "new_path": "python/private/python.bzl"
    }
  ]
}
