)]}'
{
  "commit": "f47072aa965518f0b28284b0e943a32f09403bc0",
  "tree": "e71ae724deb28515283c5a67d6f3a5528c84d7f3",
  "parents": [
    "35fb83082fffadb039f0a9b5a681891d288c941f"
  ],
  "author": {
    "name": "Ted",
    "email": "tedx@google.com",
    "time": "Thu Sep 17 21:22:28 2026 +0000"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Sep 17 21:22:28 2026 +0000"
  },
  "message": "[9.3.0] Record PackageZipper timestamps in the local time zone (from #30592) (#31180)\n\n### Description\n\n`PackageZipper` stamps every entry with a fixed instant of 1980-01-01\n00:00:00 UTC, but DOS timestamps carry no time zone. The recorded date\ntherefore depends on the zone of the machine that runs the tool.\n\nBehind UTC, that instant falls before the DOS epoch and is not\nrepresentable at all, which also affects Bazel\u0027s own build:\n\n```\nERROR: .../src/BUILD:293:13: Building src/package_jdk_minimal.zip failed: (Exit 1): package_zipper failed\nException in thread \"main\" java.lang.IllegalArgumentException: 1979-12-31 16:00:00 is not representable in the DOS time format. It must be in the range 1980-01-01 00:00:00 to 2107-12-31 23:59:59\n\tat com.google.devtools.build.zip.ZipUtil.unixToDosTime(ZipUtil.java:168)\n\tat com.google.devtools.build.zip.LocalFileHeader.create(LocalFileHeader.java:96)\n\tat com.google.devtools.build.zip.PackageZipper.writeBytesEntry(PackageZipper.java:212)\n```\n\nAhead of UTC the instant is representable, but records a later time of\nday: in `Europe/Berlin` the packed field is `0x00210800` (01:00:00)\nwhere a UTC machine writes `0x00210000` (00:00:00). The archive bytes\ndiffer by builder time zone, which defeats hermeticity.\n\nFixes #31165.\n\n### Motivation\n\n### Build API Changes\n\nNo\n\n### Checklist\n\n- [x] I have added tests for the new use cases (if any).\n- [ ] I have updated the documentation (if applicable).\n\n### Release Notes\n\nRELNOTES: None\n\nCloses #30592.\n\nPiperOrigin-RevId: 959815070\nChange-Id: Ib95a2cd9a0cbb40f1cc0a6264de3621e42045e2f\n\n\u003c!--\nThank you for contributing to Bazel!\nPlease read the contribution guidelines: https://bazel.build/contribute\n--\u003e\n\n### Description\n\u003c!--\nPlease provide a brief summary of the changes in this PR.\n--\u003e\n\n### Motivation\n\u003c!--\nWhy is this change important? Does it fix a specific bug or add a new\nfeature?\nIf this PR fixes an existing issue, please link it here (e.g. \"Fixes\n#1234\").\n--\u003e\n\n### Build API Changes\n\u003c!--\nDoes this PR affect the Build API? (e.g. Starlark API, providers,\ncommand-line flags, native rules)\nIf yes, please answer the following:\n1. Has this been discussed in a design doc or issue? (Please link it)\n2. Is the change backward compatible?\n3. If it\u0027s a breaking change, what is the migration plan?\n--\u003e\n\nNo\n\n### Checklist\n\n- [ ] I have added tests for the new use cases (if any).\n- [ ] I have updated the documentation (if applicable).\n\n### Release Notes\n\n\u003c!--\nIf this is a new feature, please add \u0027RELNOTES[NEW]: \u003cdescription\u003e\u0027\nhere.\nIf this is a breaking change, please add \u0027RELNOTES[INC]: \u003creason\u003e\u0027 here.\nIf this change should be mentioned in release notes, please add\n\u0027RELNOTES: \u003creason\u003e\u0027 here.\n--\u003e\n\nRELNOTES: None\n\nCo-authored-by: Fabian Meumertzheim \u003cfabian@meumertzhe.im\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b43a4590c00fd70dce87b13d0179583788d59869",
      "old_mode": 33188,
      "old_path": "src/java_tools/singlejar/java/com/google/devtools/build/zip/PackageZipper.java",
      "new_id": "165a87eac16e4864aea534ffec3c819b51350eaf",
      "new_mode": 33188,
      "new_path": "src/java_tools/singlejar/java/com/google/devtools/build/zip/PackageZipper.java"
    },
    {
      "type": "modify",
      "old_id": "95e406e8f74918414937567073004a3804fb62f6",
      "old_mode": 33188,
      "old_path": "src/java_tools/singlejar/javatests/com/google/devtools/build/zip/BUILD",
      "new_id": "49decb473e4c9a10200984acbea4df7636da620f",
      "new_mode": 33188,
      "new_path": "src/java_tools/singlejar/javatests/com/google/devtools/build/zip/BUILD"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "926c1c7226105a57d4be3e93b1d1cb98c5d4ab39",
      "new_mode": 33188,
      "new_path": "src/java_tools/singlejar/javatests/com/google/devtools/build/zip/PackageZipperTest.java"
    }
  ]
}
