)]}'
{
  "log": [
    {
      "commit": "c5854cdd32673f62c848964ff3117cac5e6aa563",
      "tree": "c802f8f4db844e36239e379cb42f8aea9f15a009",
      "parents": [
        "c62b199e2411cb1f4ea3af4d01f743df1be135cb"
      ],
      "author": {
        "name": "Tony Aiuto",
        "email": "tony.aiuto@datadoghq.com",
        "time": "Tue May 05 23:53:18 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 05 23:53:18 2026 -0400"
      },
      "message": "Remove compatibility_level from MODULE files. (#1063)\n\nStarting in Bazel 8, this value is unused.\nStarting in Bazel 9, this print a warning that the value is unused.\nIn Bazel 10, setting it will become a failure."
    },
    {
      "commit": "c62b199e2411cb1f4ea3af4d01f743df1be135cb",
      "tree": "87fbe3ad566c55ffd76d59b29963899700802be5",
      "parents": [
        "f4a2502374f54d977e0c7e6227404eb8181a4d07",
        "611412ca8cb226bdcd2587243e36ce966ea50f1a"
      ],
      "author": {
        "name": "tonyaiuto",
        "email": "tony.aiuto@gmail.com",
        "time": "Sat May 02 09:57:53 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 02 09:57:53 2026 -0400"
      },
      "message": "bump version.bzl to 1.3 (#1062)\n\nTime for a rollup release of fixes, before we switch to depending on the\nother repo for providers."
    },
    {
      "commit": "611412ca8cb226bdcd2587243e36ce966ea50f1a",
      "tree": "87fbe3ad566c55ffd76d59b29963899700802be5",
      "parents": [
        "f4a2502374f54d977e0c7e6227404eb8181a4d07"
      ],
      "author": {
        "name": "tonyaiuto",
        "email": "tony@aiuto.dev",
        "time": "Fri May 01 00:02:09 2026 -0400"
      },
      "committer": {
        "name": "tonyaiuto",
        "email": "tony@aiuto.dev",
        "time": "Fri May 01 00:02:09 2026 -0400"
      },
      "message": "bump version.bzl to 1.3\n"
    },
    {
      "commit": "f4a2502374f54d977e0c7e6227404eb8181a4d07",
      "tree": "4f15dd04a22f7daaea7e891213edfaae0e30a474",
      "parents": [
        "a82d058217e23788090be18c93e7af973433e43b",
        "1e0bb09c3d7468ee490cb91ab680c68ee363bcba"
      ],
      "author": {
        "name": "tonyaiuto",
        "email": "tony.aiuto@gmail.com",
        "time": "Fri Apr 24 22:19:15 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 24 22:19:15 2026 -0400"
      },
      "message": "Honor compression level\u003d0 in pkg_tar (#1059)\n\nFix bug where `compression_level\u003d0`, was being ignored, so you get a\ndefault (of 6)\n\nFixes #1048"
    },
    {
      "commit": "1e0bb09c3d7468ee490cb91ab680c68ee363bcba",
      "tree": "4f15dd04a22f7daaea7e891213edfaae0e30a474",
      "parents": [
        "b9fc548b37c9fa2f458091a7928c44f40fe104c7"
      ],
      "author": {
        "name": "tonyaiuto",
        "email": "tony@aiuto.dev",
        "time": "Thu Apr 23 17:07:28 2026 -0400"
      },
      "committer": {
        "name": "tonyaiuto",
        "email": "tony@aiuto.dev",
        "time": "Thu Apr 23 17:07:28 2026 -0400"
      },
      "message": "typo\n"
    },
    {
      "commit": "b9fc548b37c9fa2f458091a7928c44f40fe104c7",
      "tree": "5d04f6f45bbcebee2954b978507fba6e3837b5ce",
      "parents": [
        "a82d058217e23788090be18c93e7af973433e43b"
      ],
      "author": {
        "name": "tonyaiuto",
        "email": "tony@aiuto.dev",
        "time": "Thu Apr 23 17:02:20 2026 -0400"
      },
      "committer": {
        "name": "tonyaiuto",
        "email": "tony@aiuto.dev",
        "time": "Thu Apr 23 17:02:20 2026 -0400"
      },
      "message": "fix #1048\n"
    },
    {
      "commit": "a82d058217e23788090be18c93e7af973433e43b",
      "tree": "65b857504c2a57184c47079cb9f421b67f451e4e",
      "parents": [
        "401969d4367c42dcbb45d33a637eae87788d025e",
        "50a73048e2cd0d2057b14cdd16b36d853b1f6828"
      ],
      "author": {
        "name": "tonyaiuto",
        "email": "tony.aiuto@gmail.com",
        "time": "Wed Apr 22 20:32:53 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 22 20:32:53 2026 -0400"
      },
      "message": "Add variable expansion to string valued attributes (#1056)\n\nUses `substitute_package_variables()` around all the string valued\nattributes for `pkg_deb` and `pkg_rpm`.\n\nCloses #521"
    },
    {
      "commit": "401969d4367c42dcbb45d33a637eae87788d025e",
      "tree": "0efe1f718f63ab200b063b83ecbdf0fe7a46e125",
      "parents": [
        "6aff45ad84363c3d4442e5574287b2122d196246"
      ],
      "author": {
        "name": "Hugo Beauzée-Luyssen",
        "email": "hugo.beauzee@datadoghq.com",
        "time": "Wed Apr 22 15:45:57 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 22 09:45:57 2026 -0400"
      },
      "message": "rpm_pfg: allow multiple tree artifacts at the same destination (#1053)\n\n* rpm_pfg: allow multiple tree artifacts at the same destination\n\nWhen two pkg_files targets both map a configure_make tree artifact\n(e.g. an include/ directory) to the same destination prefix, pkg_rpm\nwas raising a hard error even though the file contents don\u0027t overlap.\nThe duplicate-destination check was firing unconditionally before the\nsrc.is_directory branch, so two packages installing headers to\nembedded/include/ (from different subdirectories) would conflict.\n\nMove the dest_check_map conflict check inside the non-directory branch\nso that tree artifacts sharing a destination are treated as a merge\nrather than a conflict. Actual file-level collisions within those trees\nwill be caught at install time by the underlying tooling.\n\n* pkg_files: allow multiple tree artifacts at the same destination\n\nTwo TreeArtifacts mapping to the same destination directory should be\npermitted; their contents are merged by the installer. File-level\nconflicts are still caught naturally when the same destination file\npath is claimed by two different sources.\n\nThis is the general-purpose counterpart of the rpm_pfg fix in 8f67a8a.\n\n* tests: add a couple tests for the previous commit"
    },
    {
      "commit": "50a73048e2cd0d2057b14cdd16b36d853b1f6828",
      "tree": "a3491b35656512b2e362b8d269c1aa91aed566c1",
      "parents": [
        "d13d76e63c1aa4e002266ccdee5e435f6c4e16c9"
      ],
      "author": {
        "name": "tonyaiuto",
        "email": "tony@aiuto.dev",
        "time": "Wed Apr 22 09:09:08 2026 -0400"
      },
      "committer": {
        "name": "tonyaiuto",
        "email": "tony@aiuto.dev",
        "time": "Wed Apr 22 09:09:08 2026 -0400"
      },
      "message": "make the test a little more intersting\n"
    },
    {
      "commit": "d13d76e63c1aa4e002266ccdee5e435f6c4e16c9",
      "tree": "fae88acaf73dfc78ebdd216b2e0769a54ead2643",
      "parents": [
        "2622cad01a8d6558e2a62c7814e6ddd822a32666"
      ],
      "author": {
        "name": "tonyaiuto",
        "email": "tony@aiuto.dev",
        "time": "Wed Apr 22 08:50:39 2026 -0400"
      },
      "committer": {
        "name": "tonyaiuto",
        "email": "tony@aiuto.dev",
        "time": "Wed Apr 22 08:50:39 2026 -0400"
      },
      "message": "add misitng test file\n"
    },
    {
      "commit": "2622cad01a8d6558e2a62c7814e6ddd822a32666",
      "tree": "d617853006b1f943f36c27911a0cbabace9b81c9",
      "parents": [
        "6aff45ad84363c3d4442e5574287b2122d196246"
      ],
      "author": {
        "name": "tonyaiuto",
        "email": "tony@aiuto.dev",
        "time": "Wed Apr 22 01:28:03 2026 -0400"
      },
      "committer": {
        "name": "tonyaiuto",
        "email": "tony@aiuto.dev",
        "time": "Wed Apr 22 01:28:03 2026 -0400"
      },
      "message": "Add variable expansion to string valued attributes\n"
    },
    {
      "commit": "6aff45ad84363c3d4442e5574287b2122d196246",
      "tree": "77cea08eb52c375e3c9da74bbc7a2476eee78bc6",
      "parents": [
        "03dadb0cede71c4ad2c5a4e67d910b531ee0bea4"
      ],
      "author": {
        "name": "Yannic",
        "email": "contact@yannic-bonenberger.com",
        "time": "Wed Apr 22 05:48:49 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 21 23:48:49 2026 -0400"
      },
      "message": "[deb] Avoid `UTF-8` roundtrip for `{pre,post}-{inst,rm}` hooks (#1054)\n\nThis change allows the Debian package hooks to be arbitrary files (including\nexecutable binary files), which failed with the following error before:\n\n```\nTraceback (most recent call last):\n  File \"/Users/yannic/Library/Caches/bazel/_bazel_yannic/bb6c3b02ccc98aaca966df445b5024eb/sandbox/darwin-sandbox/3472/execroot/_main/bazel-out/darwin_x86_64-opt-exec/bin/external/rules_pkg+/pkg/private/deb/make_deb.runfiles/rules_pkg+/pkg/private/deb/_make_deb_stage2_bootstrap.py\", line 499, in \u003cmodule\u003e\n    main()\n    ~~~~^^\n  File \"/Users/yannic/Library/Caches/bazel/_bazel_yannic/bb6c3b02ccc98aaca966df445b5024eb/sandbox/darwin-sandbox/3472/execroot/_main/bazel-out/darwin_x86_64-opt-exec/bin/external/rules_pkg+/pkg/private/deb/make_deb.runfiles/rules_pkg+/pkg/private/deb/_make_deb_stage2_bootstrap.py\", line 493, in main\n    _run_py_path(main_filename, args\u003dsys.argv[1:])\n    ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/Users/yannic/Library/Caches/bazel/_bazel_yannic/bb6c3b02ccc98aaca966df445b5024eb/sandbox/darwin-sandbox/3472/execroot/_main/bazel-out/darwin_x86_64-opt-exec/bin/external/rules_pkg+/pkg/private/deb/make_deb.runfiles/rules_pkg+/pkg/private/deb/_make_deb_stage2_bootstrap.py\", line 287, in _run_py_path\n    runpy.run_path(main_filename, run_name\u003d\"__main__\")\n    ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"\u003cfrozen runpy\u003e\", line 287, in run_path\n  File \"\u003cfrozen runpy\u003e\", line 98, in _run_module_code\n  File \"\u003cfrozen runpy\u003e\", line 88, in _run_code\n  File \"/Users/yannic/Library/Caches/bazel/_bazel_yannic/bb6c3b02ccc98aaca966df445b5024eb/sandbox/darwin-sandbox/3472/execroot/_main/bazel-out/darwin_x86_64-opt-exec/bin/external/rules_pkg+/pkg/private/deb/make_deb.runfiles/rules_pkg+/pkg/private/deb/make_deb.py\", line 433, in \u003cmodule\u003e\n    main()\n    ~~~~^^\n  File \"/Users/yannic/Library/Caches/bazel/_bazel_yannic/bb6c3b02ccc98aaca966df445b5024eb/sandbox/darwin-sandbox/3472/execroot/_main/bazel-out/darwin_x86_64-opt-exec/bin/external/rules_pkg+/pkg/private/deb/make_deb.runfiles/rules_pkg+/pkg/private/deb/make_deb.py\", line 392, in main\n    prerm\u003dhelpers.GetFlagValue(options.prerm, False),\n          ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^\n  File \"/Users/yannic/Library/Caches/bazel/_bazel_yannic/bb6c3b02ccc98aaca966df445b5024eb/sandbox/darwin-sandbox/3472/execroot/_main/bazel-out/darwin_x86_64-opt-exec/bin/external/rules_pkg+/pkg/private/deb/make_deb.runfiles/rules_pkg+/pkg/private/helpers.py\", line 81, in GetFlagValue\n    flagvalue \u003d f.read().decode(\u0027utf-8\u0027)\nUnicodeDecodeError: \u0027utf-8\u0027 codec can\u0027t decode byte 0xcf in position 0: invalid continuation byte\n```\n\n(the example used a `go_binary` for `prerm`)"
    },
    {
      "commit": "03dadb0cede71c4ad2c5a4e67d910b531ee0bea4",
      "tree": "635bdf3417ecd3e30e81ecf4efe1bfaf04b16a26",
      "parents": [
        "d6a21d8f334fddf4e34e78eb3d6707a7b726d823"
      ],
      "author": {
        "name": "Tony Aiuto",
        "email": "tony.aiuto@datadoghq.com",
        "time": "Tue Apr 21 23:38:13 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 21 23:38:13 2026 -0400"
      },
      "message": "Add package_variables support to pkg_files and pkg_filegroup prefix (#1052)\n\nCloses #781.\n\npkg_files and pkg_filegroup now accept a package_variables attribute, enabling\nmake-variable substitution in their prefix attribute. For example:\n\nmy_platform_vars(name \u003d \"platform_vars\", os \u003d \"linux\", arch \u003d \"x86_64\")\n\npkg_filegroup(\n    name \u003d \"platform_libs\",\n    srcs \u003d [\":my_libs\"],\n    prefix \u003d \"usr/lib/$(os)_$(arch)\",\n    package_variables \u003d \":platform_vars\",\n)\n\nPreviously the only workaround was select() on prefix, while package_file_name already supported variable substitution via package_variables. This closes the inconsistency: the same mechanism now works for destination paths in the mapping rules.\n\nThe implementation follows the same pattern as pkg_deb and pkg_tar, reusing substitute_package_variables() from //pkg/private:util.bzl.\n\n- Admittedly this was too small to use an agent, but it saved me time writing the tests.\n- I created a hints file for the next time."
    },
    {
      "commit": "d6a21d8f334fddf4e34e78eb3d6707a7b726d823",
      "tree": "a1632e45169f6876cb981b2556e9470bd458f576",
      "parents": [
        "c67fef73c4d8d8830d6780a9d3b978ee5379a3d5"
      ],
      "author": {
        "name": "wade-arista",
        "email": "wade@arista.com",
        "time": "Wed Apr 08 20:53:55 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 08 23:53:55 2026 -0400"
      },
      "message": "feat: add stamp support for pkg_rpm Release tag (#1039)\n\n* feat: add stamp support for pkg_rpm Release tag\n\nAllow `{VARIABLE_NAME}` placeholders in the `release` attribute of\n`pkg_rpm`. When `stamp \u003d 1` (or `stamp \u003d -1` with `--stamp`), workspace\nstatus variables from volatile-status.txt are substituted at build time.\n\n- Add `get_status_vars()` to `pkg/private/build_info.py`\n- Add `--volatile_status_file` and `--stable_status_file` args to\n  `make_rpm.py`; apply substitution in `RpmBuilder.__init__` via the\n  new `stamp_vars` parameter\n- Add `stamp` and `private_stamp_detect` attrs to the `pkg_rpm` rule;\n  rename the rule to `_pkg_rpm_rule` and expose a `pkg_rpm` macro that\n  injects `private_stamp_detect` via `select()`, matching the pattern\n  used by `pkg_tar` and `pkg_zip`\n- Avoid embedding template placeholders in the output filename when stamp\n  is active\n\nFixes #1038\n\n* clean up uses of str.strip() in build_info.py\n\nWe don\u0027t need to call it multiple times on the same line value, we can\njust call it once and save it.\n\n* Address PR #1039 review feedback\n\n- Add docstring to get_status_vars() in build_info.py\n- Use get_stamp_detect() from util.bzl instead of inline select()\n  to match the pattern from PR #1035\n- Expand release attr docstring to document stamp variable substitution\n- Add stamped RPM example to examples/rpm/system_rpmbuild_pfg"
    },
    {
      "commit": "c67fef73c4d8d8830d6780a9d3b978ee5379a3d5",
      "tree": "81689c53064560fd2d10b4d7a6bb00742e1b3d49",
      "parents": [
        "e885fe17b36d85e0f81867cc90b020ae5b79185f"
      ],
      "author": {
        "name": "Zhao Wang",
        "email": "wangzhao2013tsinghua@gmail.com",
        "time": "Thu Apr 09 12:52:23 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 08 23:52:23 2026 -0400"
      },
      "message": "fix(pkg): pkg_deb changelog argument handling (#1051)"
    },
    {
      "commit": "e885fe17b36d85e0f81867cc90b020ae5b79185f",
      "tree": "1c3da5a81d8ea986289fa12b22b6ddadc7e2c0a9",
      "parents": [
        "ecbfa22b3e28efee6412ec2a9194209ce33d9cc8"
      ],
      "author": {
        "name": "Ben Plotnick",
        "email": "ben.plotnick@gmail.com",
        "time": "Wed Apr 08 23:47:26 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 08 23:47:26 2026 -0400"
      },
      "message": "add provides_file and replaces_file for dpkg_deb (#1049)\n\n* Add provides_file and replaces_file\n\n* fix links\n\n* Expand @file references in provides and replaces fields"
    },
    {
      "commit": "ecbfa22b3e28efee6412ec2a9194209ce33d9cc8",
      "tree": "c004d7da361254de41172031c51047355c09b818",
      "parents": [
        "3338d6455f862196c1b94560d59a276d40dceed4"
      ],
      "author": {
        "name": "Tony Aiuto",
        "email": "tony.aiuto@datadoghq.com",
        "time": "Wed Apr 08 23:44:14 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 08 23:44:14 2026 -0400"
      },
      "message": "Final changes to release workflow to make submodule releases possible. (#1043)\n\n* chmod +x for buildozer download.\n\n* fix module name expansion\n\n* fix path t module.bazl\n\n* missing s\n\n* no rpm test\n\n* flips\n\n* hack out the disk cache\n\n* release_ruleset needs a revamp\n\n* reroot\n\n* commentary\n\n* auto-create versoin from release\n\n* update release tools to form download URL correctly"
    },
    {
      "commit": "3338d6455f862196c1b94560d59a276d40dceed4",
      "tree": "433d09b349198298b3fd679ac93df85e8ef689be",
      "parents": [
        "14c78b8e9347a60919999f13177f1aa3fb850ea3"
      ],
      "author": {
        "name": "Tony Aiuto",
        "email": "tony.aiuto@datadoghq.com",
        "time": "Wed Apr 08 23:37:52 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 08 23:37:52 2026 -0400"
      },
      "message": "chmod +x for buildozer download. (#1042)"
    },
    {
      "commit": "14c78b8e9347a60919999f13177f1aa3fb850ea3",
      "tree": "99c90892e38630aa77da39e8b5be78f7b90888ac",
      "parents": [
        "261bb4942ac792011566408d8f98981ac02775fb"
      ],
      "author": {
        "name": "Hugo Beauzée-Luyssen",
        "email": "hugo@beauzee.fr",
        "time": "Tue Mar 17 20:24:22 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 17 15:24:22 2026 -0400"
      },
      "message": "fix(pkg_install): handle overriding symbolic links (#1046)\n\nThe same way we handle overriding an existing file, we can override an\nexisting symlink when installing"
    },
    {
      "commit": "261bb4942ac792011566408d8f98981ac02775fb",
      "tree": "4f801d287c764edc994c820170b5159a87e41047",
      "parents": [
        "5449272ab5b112cc27d83d5e6fd8840cb345ee9a"
      ],
      "author": {
        "name": "Mark Reuter",
        "email": "13319190+reutermj@users.noreply.github.com",
        "time": "Tue Mar 17 12:16:29 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 17 15:16:29 2026 -0400"
      },
      "message": "Support relocatable rpmbuild by adding data attribute to the toolchain (#1047)\n\n* Support relocatable rpmbuild by adding data attribute to the toolchain\n\nrpmbuild ships with runtime configuration files (lib/rpm/) that must be\npresent for it to successfully build RPMs. When running under remote\nexecution, these files were not being staged because the toolchain had\nno way to declare them as dependencies.\n\nAdd a `data` attribute to `rpmbuild_toolchain` so that runtime files\ncan be specified alongside the rpmbuild binary. These files are\npropagated through `RpmbuildInfo` and included as inputs to the MakeRpm\naction in `pkg_rpm`."
    },
    {
      "commit": "5449272ab5b112cc27d83d5e6fd8840cb345ee9a",
      "tree": "d136daa6ce3b9ea331439fad8ecc3f16c7e4cb28",
      "parents": [
        "e15c3316b04d7f363f04afafd160fa634ce4276c"
      ],
      "author": {
        "name": "Zoey Greer",
        "email": "tempozrene@gmail.com",
        "time": "Tue Mar 17 14:45:21 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 17 14:45:21 2026 -0400"
      },
      "message": "Handle cases with only `data` dependencies in `pkg_tar` (#1044)\n\n* handle cases with only `data` dependencies in `pkg_tar`\n\nIf there is no `base_path` because there are no files, just use the empty string for the `base_file_path`."
    },
    {
      "commit": "e15c3316b04d7f363f04afafd160fa634ce4276c",
      "tree": "0a15daeb1fc712bd80693e79d7ccbeb763eb7f2a",
      "parents": [
        "94084b057b1f61b02d2a90f842537902269e1d16"
      ],
      "author": {
        "name": "Tony Aiuto",
        "email": "tony.aiuto@datadoghq.com",
        "time": "Sun Mar 08 12:43:17 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Mar 08 10:43:17 2026 -0600"
      },
      "message": "drop reference to an undefined variable (#1040)"
    },
    {
      "commit": "94084b057b1f61b02d2a90f842537902269e1d16",
      "tree": "adb7133452eb42ed392ec76bf27c8f34a0a1561d",
      "parents": [
        "53996535fb17cf5fd9b4d3f6b3ae96af74add1e8"
      ],
      "author": {
        "name": "Justin Horvitz",
        "email": "jhorvitz@google.com",
        "time": "Sat Mar 07 07:15:49 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Mar 07 07:15:49 2026 -0500"
      },
      "message": "Avoid depending on the value of the --stamp flag if possible (#1035)\n\n* Stamp detect\n* Stamp detect tar.bzl\n* Stamp detect zip.bzl"
    },
    {
      "commit": "53996535fb17cf5fd9b4d3f6b3ae96af74add1e8",
      "tree": "394a290540cfe630c25b0f290072c902eb3d868c",
      "parents": [
        "361240455fd9c7fd53b270d0b508b418de4bb763",
        "b3b1ad91b2a5559a6aeaaef28faf8979a37e5259"
      ],
      "author": {
        "name": "tonyaiuto",
        "email": "tony.aiuto@gmail.com",
        "time": "Mon Mar 02 21:54:19 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 02 21:54:19 2026 -0500"
      },
      "message": "Create release scripts for rules_pkg_providers (#1028)\n\n- create a new release_module workflow\n  - takes subdir and version as args, default to `providers` for now. \n  - stole the buildifier technique we used in supply_chain\n  - the code should work for toolchains if we split that.\n- modify release_prep.sh to deal with old and new styles\n- we need an ugly case statement because the release workflow we use\ndoes not take the release_prep script name as a parameter.\n   - ideally, I would do things from #1031, but that\u0027s less urgent.\n\nHand testing release_prep.sh seems to work. Testing the workflow is\nnearly impossible until it exists the first time.\n\nNext steps:\n- verify it works\n- figure out something for BCR releases.\n- Hope for: https://github.com/bazel-contrib/publish-to-bcr/issues/368\n- more pragmatic solution might be to have a shell script around the bcr\nadd-module script\n\nFuture work:\n- generate git changelog on a per-subdir basis.\n- allow better customization of release notes documentation link."
    },
    {
      "commit": "b3b1ad91b2a5559a6aeaaef28faf8979a37e5259",
      "tree": "394a290540cfe630c25b0f290072c902eb3d868c",
      "parents": [
        "9bc580d2e4159a85eed8e6e6bc83d063c1521c9e"
      ],
      "author": {
        "name": "tonyaiuto",
        "email": "tony@aiuto.dev",
        "time": "Mon Mar 02 21:53:47 2026 -0500"
      },
      "committer": {
        "name": "tonyaiuto",
        "email": "tony@aiuto.dev",
        "time": "Mon Mar 02 21:53:47 2026 -0500"
      },
      "message": "make it cleaner\n"
    },
    {
      "commit": "9bc580d2e4159a85eed8e6e6bc83d063c1521c9e",
      "tree": "dc5b83160bc4d7f08fc35a87437eb9764978e132",
      "parents": [
        "abb936feecc5de5a400f9216d753f2a147b69888",
        "361240455fd9c7fd53b270d0b508b418de4bb763"
      ],
      "author": {
        "name": "tonyaiuto",
        "email": "tony@aiuto.dev",
        "time": "Sun Mar 01 15:20:08 2026 -0500"
      },
      "committer": {
        "name": "tonyaiuto",
        "email": "tony@aiuto.dev",
        "time": "Sun Mar 01 15:20:08 2026 -0500"
      },
      "message": "Merge branch \u0027main\u0027 into prov2\n"
    },
    {
      "commit": "361240455fd9c7fd53b270d0b508b418de4bb763",
      "tree": "9e3829800fdff32eb096bbad96d5f6ba9f87404b",
      "parents": [
        "a31b2ca210d7236b17deec88da5e650a3636b356"
      ],
      "author": {
        "name": "tonyaiuto",
        "email": "tony.aiuto@gmail.com",
        "time": "Sun Mar 01 16:19:46 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Mar 01 15:19:46 2026 -0500"
      },
      "message": "Use filegroup rather than starlarklibrary for the sources. (#1033)\n\n* fix bcr metadata templates in main so we can test push workflow\n\n* fix email\n\n* Add workflow to publish a release to the bcr. (#998)\n\n* Add the workflow to publish a release to the bcr.\n- Update .bcr metadata template\n- Update .bcr test matrix to drop bazel 7\n\n* Use filegroup rather than starlarklibrary for the sources.\n\n* linty\n\n* restore dropped install stardoc\n\n---------\n\nCo-authored-by: tonyaiuto \u003ctony@aiuto.dev\u003e\nCo-authored-by: Tony Aiuto \u003ctony.aiuto@datadoghq.com\u003e"
    },
    {
      "commit": "a31b2ca210d7236b17deec88da5e650a3636b356",
      "tree": "911cf44b9ec801741db76773084c1d8974e4d15d",
      "parents": [
        "6e4eab2916e782e84cfc0f5bea22fc1936aefbae"
      ],
      "author": {
        "name": "tonyaiuto",
        "email": "tony.aiuto@gmail.com",
        "time": "Sun Mar 01 16:19:26 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Mar 01 15:19:26 2026 -0500"
      },
      "message": "Bump rules python and rules_cc deps (#1034)\n\n* fix bcr metadata templates in main so we can test push workflow\n\n* fix email\n\n* Add workflow to publish a release to the bcr. (#998)\n\n* Add the workflow to publish a release to the bcr.\n- Update .bcr metadata template\n- Update .bcr test matrix to drop bazel 7\n\n* bump rules python and rules_cc deps to stop getting so many warkings during build\n\n---------\n\nCo-authored-by: tonyaiuto \u003ctony@aiuto.dev\u003e\nCo-authored-by: Tony Aiuto \u003ctony.aiuto@datadoghq.com\u003e"
    },
    {
      "commit": "6e4eab2916e782e84cfc0f5bea22fc1936aefbae",
      "tree": "6d87fd0dc41995fb17662254d55eff618072fb1d",
      "parents": [
        "0343f018f980d35a3fe856a08646e1c2704ed6a2"
      ],
      "author": {
        "name": "Tony Aiuto",
        "email": "tony.aiuto@datadoghq.com",
        "time": "Sun Mar 01 15:19:00 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Mar 01 15:19:00 2026 -0500"
      },
      "message": "update docbuild to include the providers (#1036)\n\n"
    },
    {
      "commit": "abb936feecc5de5a400f9216d753f2a147b69888",
      "tree": "24fca094bf4d95b247937b1aa6aba4dc94cb81ed",
      "parents": [
        "23885aaf72773507cb342f148a4eba78c2e34959"
      ],
      "author": {
        "name": "tonyaiuto",
        "email": "tony@aiuto.dev",
        "time": "Sun Feb 22 18:23:20 2026 -0500"
      },
      "committer": {
        "name": "tonyaiuto",
        "email": "tony@aiuto.dev",
        "time": "Sun Feb 22 18:23:20 2026 -0500"
      },
      "message": "linty\n"
    },
    {
      "commit": "23885aaf72773507cb342f148a4eba78c2e34959",
      "tree": "4d3dc27005a1e75e6ceeae13eb9cc7bd808b41bd",
      "parents": [
        "0343f018f980d35a3fe856a08646e1c2704ed6a2"
      ],
      "author": {
        "name": "tonyaiuto",
        "email": "tony@aiuto.dev",
        "time": "Tue Feb 17 23:01:43 2026 -0400"
      },
      "committer": {
        "name": "tonyaiuto",
        "email": "tony@aiuto.dev",
        "time": "Sun Feb 22 18:17:36 2026 -0500"
      },
      "message": "Add release workflow for the providers submodule\n\n- generalizable to more modules.\n- creates the tarball and relnotes as part of the distro package.\n\nFuture work:\n\n- figure out something for BCR releases.\n  - Hope for: https://github.com/bazel-contrib/publish-to-bcr/issues/368\n  - more pragmatic solution might be to have a shell script around the bcr add-module script\n- generate git changelog on a per-subdir basis\n- allow better customization of release notes documentation link\n"
    },
    {
      "commit": "0343f018f980d35a3fe856a08646e1c2704ed6a2",
      "tree": "920fd5783f6c2e3b875d73fd098c3267fd81d1ee",
      "parents": [
        "3504fe0689b95a73fec427beeaac84d6be4b9c8c",
        "c16df15ae877101fca35bea47de5167046e2ce9c"
      ],
      "author": {
        "name": "tonyaiuto",
        "email": "tony.aiuto@gmail.com",
        "time": "Sun Feb 22 14:35:09 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Feb 22 14:35:09 2026 -0400"
      },
      "message": "Bring testing for bzlmod vs. non-bzlmod up to date with bazel features (#1029)\n\nBring testing for bzlmod vs. non-bzlmod up to date with bazel features.\n\nHead and LTS have bzlmod enabled by default, so:\n- stop enabling the flag explicitly\n- stop calling out \"bzlmod\" in the test name, that is now assumed, only\nnobzlmod needs naming\n\n- Do the packaging test against workspace only for bazel 7 and earlier.\n- we probably could drop the workspace test entirely. It is essentially\nmeaningless now\n\nThis is a spin out from a followup PR to #1027. //distro:packaging_test\nwas failing on workspace tests while using bazel 8.x. Since that seemed\nstrange, I decided to clean this up now, to get a little better prepared\nfor the day that `--enable_bzlmod` is no longer a valid flag."
    },
    {
      "commit": "3504fe0689b95a73fec427beeaac84d6be4b9c8c",
      "tree": "1f6dac7a9f38c11f23edac53d3f44f80234d71d7",
      "parents": [
        "a7d9a54aa073367c72066e3efff4f04b8ede8cb5"
      ],
      "author": {
        "name": "tonyaiuto",
        "email": "tony.aiuto@gmail.com",
        "time": "Sat Feb 21 19:55:28 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Feb 21 19:55:28 2026 -0400"
      },
      "message": "Move the providers to a module we can publish separtely from the rest of the rules (#1027)\n\nPart of #996\n\nFollowup PRs and actions will:\n1. update the .github publish workflow\n2. do a publish of the provider module\n3. update rules_pkg to use the new repo.\n"
    },
    {
      "commit": "a7d9a54aa073367c72066e3efff4f04b8ede8cb5",
      "tree": "e7bbc30168ec8715d32dddef724c19eefba107f3",
      "parents": [
        "dab591817440f5e8cd26525f7b388cdf1f1a907b",
        "35bf0dfc05c30f80648228dc2f0a0412bb100c3d"
      ],
      "author": {
        "name": "tonyaiuto",
        "email": "tony.aiuto@gmail.com",
        "time": "Thu Feb 19 17:13:55 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 19 17:13:55 2026 -0400"
      },
      "message": "fix: handle UTF-16LE-encoded manifests on Windows (#1021)\n\nPrior to Bazel 8, manifest files containing non-ASCII characters were written with UTF-16LE encoding instead of UTF-8 on Windows:\n- bazelbuild/bazel#24231\n- bazelbuild/bazel#24350\n- bazelbuild/bazel#24403\n\nThis led to disable failing tests in CI:\n\n`//tests/zip:unicode_test`:\n```\nFile \"pkg\\private\\manifest.py\", line 59, in read_entries_from\n  raw_entries \u003d json.loads(fh.read())\nUnicodeDecodeError: \u0027utf-8\u0027 codec can\u0027t decode byte 0xbb in position 338: invalid start byte\n```\n\n`//tests/mappings:utf8_manifest_test`:\n```\nFile \"tests\\mappings\\manifest_test_lib.py\", line 39, in assertManifestsMatch\n  got \u003d json.loads(g_fp.read())\nUnicodeDecodeError: \u0027utf-8\u0027 codec can\u0027t decode byte 0xbb in position 354: invalid start byte\n```\n\nSince the manifest is plain JSON, the fix simply consists in detecting\nwhether the second byte is `0`, where the default UTF-8 decoding would\nfail, in which case we assume the file is UTF-16LE-encoded.\n\nThe code is slightly reorganized to factor out the encoding selection.\n\nThis allows to enable `//tests/mappings:utf8_manifest_test` and\n`//tests/zip:unicode_test` tests in Windows CI."
    },
    {
      "commit": "dab591817440f5e8cd26525f7b388cdf1f1a907b",
      "tree": "c51349f5db833d0a18ef896311878ab7aeb0c182",
      "parents": [
        "3451905a3dae59470490a2d8456042f6d2a5c869",
        "7190d4b28d419885b466f6974ada7881b5fbb6ed"
      ],
      "author": {
        "name": "tonyaiuto",
        "email": "tony.aiuto@gmail.com",
        "time": "Thu Feb 19 16:52:26 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 19 16:52:26 2026 -0400"
      },
      "message": "Ensure runfiles.{,root_}symlinks makes it into tarballs (#1025)\n\nRight now we only add files. This is problematic when creating a tarball\nof an sh_binary(). Starting with Bazel 9, sh_binary() is no longer\nprovided by Bazel itself. In that case rules_shell will declare its own\ncopy of runfiles.bash, putting a symlink at the old location in the\nrunfiles directory."
    },
    {
      "commit": "c16df15ae877101fca35bea47de5167046e2ce9c",
      "tree": "3387daa013772664628ad69f5f4410e12e02c298",
      "parents": [
        "3451905a3dae59470490a2d8456042f6d2a5c869"
      ],
      "author": {
        "name": "tonyaiuto",
        "email": "tony@aiuto.dev",
        "time": "Wed Feb 18 23:27:06 2026 -0400"
      },
      "committer": {
        "name": "tonyaiuto",
        "email": "tony@aiuto.dev",
        "time": "Wed Feb 18 23:27:06 2026 -0400"
      },
      "message": "Bring testing for bzlmod vs. non-bzlmod up to date with bazel features\n\nHead and LTS have bzlmod enabled by default, so:\n- stop enabling the flag explicitly\n- stop calling out \"bzlmod\" in the test name, that is now assumed, only nobzlmod needs naming\n\n- Do the packaging test against workspace only for bazel 7 and earlier.\n  - we probably could drop the workspace test entirely. It is essentially meaningless now\n"
    },
    {
      "commit": "3451905a3dae59470490a2d8456042f6d2a5c869",
      "tree": "12f110c8447874d67e113c84d2aaaf10859f4d7c",
      "parents": [
        "2bd928123ad46f5b96970f537af073e0acb5b654"
      ],
      "author": {
        "name": "wade-arista",
        "email": "wade@arista.com",
        "time": "Wed Feb 18 15:26:55 2026 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 18 16:26:55 2026 -0700"
      },
      "message": "fix(rpm): propagate main() return code as process exit code (#1024)\n\nWrap the main() call with sys.exit() so that non-zero return values\nfrom main() are properly reflected in the process exit code."
    },
    {
      "commit": "7190d4b28d419885b466f6974ada7881b5fbb6ed",
      "tree": "3a27adae94f4ec9af4f80b0c78bf18ffed8fa353",
      "parents": [
        "2bd928123ad46f5b96970f537af073e0acb5b654"
      ],
      "author": {
        "name": "Ed Schouten",
        "email": "eschouten@apple.com",
        "time": "Thu Feb 12 10:46:58 2026 +0100"
      },
      "committer": {
        "name": "Ed Schouten",
        "email": "eschouten@apple.com",
        "time": "Thu Feb 12 11:37:31 2026 +0100"
      },
      "message": "Ensure runfiles.{,root_}symlinks makes it into tarballs\n\nRight now we only add files. This is problematic when creating a tarball\nof an sh_binary(). Starting with Bazel 9, sh_binary() is no longer\nprovided by Bazel itself. In that case rules_shell will declare its own\ncopy of runfiles.bash, putting a symlink at the old location in the\nrunfiles directory.\n"
    },
    {
      "commit": "35bf0dfc05c30f80648228dc2f0a0412bb100c3d",
      "tree": "fc32c449a948251118649d6010e9eca525e0b50c",
      "parents": [
        "2bd928123ad46f5b96970f537af073e0acb5b654"
      ],
      "author": {
        "name": "Régis Desgroppes",
        "email": "rdesgroppes@gmail.com",
        "time": "Sun Feb 08 12:20:50 2026 +0100"
      },
      "committer": {
        "name": "Régis Desgroppes",
        "email": "rdesgroppes@gmail.com",
        "time": "Tue Feb 10 08:35:50 2026 +0100"
      },
      "message": "fix: handle UTF-16LE-encoded manifests on Windows\n\nPrior to Bazel 8, manifest files containing non-ASCII characters were\nwritten with UTF-16LE encoding instead of UTF-8 on Windows:\n- bazelbuild/bazel#24231\n- bazelbuild/bazel#24350\n- bazelbuild/bazel#24403\n\nThis led to disable failing tests in CI:\n\n`//tests/zip:unicode_test`:\n```\nFile \"pkg\\private\\manifest.py\", line 59, in read_entries_from\n  raw_entries \u003d json.loads(fh.read())\nUnicodeDecodeError: \u0027utf-8\u0027 codec can\u0027t decode byte 0xbb in position 338: invalid start byte\n```\n\n`//tests/mappings:utf8_manifest_test`:\n```\nFile \"tests\\mappings\\manifest_test_lib.py\", line 39, in assertManifestsMatch\n  got \u003d json.loads(g_fp.read())\nUnicodeDecodeError: \u0027utf-8\u0027 codec can\u0027t decode byte 0xbb in position 354: invalid start byte\n```\n\nSince the manifest is plain JSON, the fix simply consists in detecting\nwhether the second byte is `0`, where the default UTF-8 decoding would\nfail, in which case we assume the file is UTF-16LE-encoded.\n\nThe code is slightly reorganized to factor out the encoding selection.\n\nThis allows to enable `//tests/mappings:utf8_manifest_test` and\n`//tests/zip:unicode_test` tests in Windows CI.\n"
    },
    {
      "commit": "2bd928123ad46f5b96970f537af073e0acb5b654",
      "tree": "691744dfa02114f933d5728593b70485f6f6785b",
      "parents": [
        "42b7e6194d03510c472d5e22daf2e876f95a4048"
      ],
      "author": {
        "name": "Régis Desgroppes",
        "email": "rdesgroppes@gmail.com",
        "time": "Tue Feb 10 05:49:22 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 09 23:49:22 2026 -0500"
      },
      "message": "fix(test): make `//tests/mappings/filter_directory` work on Windows\n\nThe `filter_directory` tests were failing on Windows:\n```\nERROR: test_directory_structure_matches_global (__main__.DirectoryStructureTest.test_directory_structure_matches_global)\n[...]\n    os.path.isdir(real_directory_root),\n    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n[...]\nTypeError: stat: path should be string, bytes, os.PathLike or integer, not NoneType\n```\n\nThis was because `Rlocation()` expects POSIX-style paths (forward\nslashes), but `os.path.join()` produces backslashes on Windows.\n\nAfter fixing it, a second error appeared:\n```\nFAIL: test_directory_structure_matches_global (__main__.DirectoryStructureTest.test_directory_structure_matches_global)\nAssertionError: Items in the first set but not the second:\n\u0027extra/a\u0027\n\u0027extra/subdir/c\u0027\n\u0027extra/b\u0027\n\u0027extra/subdir/d\u0027\nItems in the second set but not the first:\n\u0027extra\\\\subdir\\\\c\u0027\n\u0027extra\\\\a\u0027\n\u0027extra\\\\b\u0027\n\u0027extra\\\\subdir\\\\d\u0027 : Directory structure mismatch\n```\n\nThis was because paths collected via `os.walk()` also produce\nbackslashes on Windows against expected paths returned by `Rlocation`\nthat always use forward slashes.\n\nThe change consists in leveraging `pathlib` for that purpose:\n`Path().as_posix()`, `Path.rglob()` and `Path.relative_to()`.\n\nThis enables the 9 `filter_directory` tests in Windows CI."
    },
    {
      "commit": "42b7e6194d03510c472d5e22daf2e876f95a4048",
      "tree": "af3e2365365c60c4fbddfe8a23e6938bfbae8650",
      "parents": [
        "c27196f8bb13acb4c04f607ab4fa15791c25495e"
      ],
      "author": {
        "name": "Régis Desgroppes",
        "email": "rdesgroppes@gmail.com",
        "time": "Tue Feb 10 05:47:58 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 09 23:47:58 2026 -0500"
      },
      "message": "fix(pkg_install): resolve files against own repository (#1016)\n\ntl;dr: this change builds on #984 which introduced the `locate()` helper\nand the `runfiles` infrastructure. That PR fixed Windows compatibility\nby enabling runfiles-less operation; this change extends it to support\ncross-repository files.\n\nWhen a `pkg_install` rule in an external repository references files\nfrom another repository, the installer would fail at runtime by\nattempting to resolve all files relative to its repository rather than\neach file\u0027s own repository.\n\nExample failure (`extrepo`: external repository installing file from\nmain repository):\n```\nbazel run @extrepo//:install -- --destdir\u003d/tmp/test\n[...]\nFileNotFoundError: [Errno 2] No such file or directory:\n  \u0027.../runfiles/+_repo_rules+extrepo/some-path/extrepo/file-in-main-repo\u0027\n```\n\nThe file should be resolved against the main repository (`_main`) but\nis incorrectly looked up from the installer\u0027s repository\n(`+_repo_rules+extrepo`).\n\nThe solution proposed here consists in extending the manifest to track\neach file\u0027s own repository and use this information during installation\nto resolve files against the correct repository.\n\nIt adds a `repository` field to manifest entries using:\n- `Label.repo_name`\n  ([canonical](https://bazel.build/rules/lib/builtins/Label#repo_name))\n  when explicitly valued for the source file,\n- otherwise `ctx.workspace_name` when no\n  [owner](https://bazel.build/rules/lib/builtins/File#owner)\n  or `Label.repo_name` is\n  [empty](https://rules-python.readthedocs.io/en/latest/api/py/runfiles/runfiles.runfiles.html#runfiles.runfiles.Runfiles.CurrentRepository),\n  denoting the main repository (`_main`, as before).\n\nTesting:\n- `//tests/install:install_test` includes new `CrossRepoInstallTest`,\n- `bazel run @extrepo//:install -- --destdir\u003d/tmp/test` case works,\n- verified the above on Ubuntu Linux and Windows as well."
    },
    {
      "commit": "c27196f8bb13acb4c04f607ab4fa15791c25495e",
      "tree": "09a61bd2dc69eb00985cf4fd01f1c16443c1bccd",
      "parents": [
        "d11b72869e6bd2d8fc8c201a0e4db6e19296b8ac",
        "2e1411a05df1b5963295c1c96ba42ba32d1bd22e"
      ],
      "author": {
        "name": "tonyaiuto",
        "email": "tony.aiuto@gmail.com",
        "time": "Sat Feb 07 21:31:39 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Feb 07 21:31:39 2026 -0500"
      },
      "message": "fix(test): `package_naming_aggregate_test` on Windows (#1018)\n\nThe test was failing on Windows:\n```\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Test output for //tests:package_naming_aggregate_test:\nls: cannot access \u0027C:/[...]/bin/tests/package_naming_aggregate_test.exe.runfiles/_main/tests/test_naming_some_value.deb\u0027: No such file or directory\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n```\nIt tried to directly access files in the `runfiles` directory, but on\nWindows Bazel uses by default a manifest file instead of creating actual\nsymlinks.\n\nThe change consists in adding a minimalistic version of the\n[rlocation()](https://github.com/bazelbuild/rules_shell/blob/1e8bab64c37cd18837a26eb31ff03a8486eef83f/shell/runfiles/runfiles.bash#L136)\nhelper function that:\n- when set, reads from `$RUNFILES_MANIFEST_FILE` to resolve paths,\n- otherwise uses `$TEST_SRCDIR` directly, as before.\n\nThis allows to enable the test in Windows CI now it passes.\n\nNote on the stricter error handling:\n- `set -u` is to fail fast should any of the expected `TEST_*`\nenvironment variables be unbound,\n- `set -o pipefail` is to fail fast should either side of the `grep |\ncut` pipe fail."
    },
    {
      "commit": "2e1411a05df1b5963295c1c96ba42ba32d1bd22e",
      "tree": "09a61bd2dc69eb00985cf4fd01f1c16443c1bccd",
      "parents": [
        "d11b72869e6bd2d8fc8c201a0e4db6e19296b8ac"
      ],
      "author": {
        "name": "Régis Desgroppes",
        "email": "rdesgroppes@gmail.com",
        "time": "Fri Feb 06 20:44:17 2026 +0100"
      },
      "committer": {
        "name": "Regis Desgroppes",
        "email": "rdesgroppes@users.noreply.github.com",
        "time": "Sat Feb 07 16:30:28 2026 +0100"
      },
      "message": "fix(test): `package_naming_aggregate_test` on Windows\n\nThe test was failing on Windows:\n```\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Test output for //tests:package_naming_aggregate_test:\nls: cannot access \u0027C:/[...]/bin/tests/package_naming_aggregate_test.exe.runfiles/_main/tests/test_naming_some_value.deb\u0027: No such file or directory\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n```\nIt tried to directly access files in the `runfiles` directory, but on\nWindows Bazel uses by default a manifest file instead of creating actual\nsymlinks.\n\nThe change consists in adding a minimalistic version of the\n[rlocation()](https://github.com/bazelbuild/rules_shell/blob/main/shell/runfiles/runfiles.bash)\nhelper function that:\n- when set, reads from `$RUNFILES_MANIFEST_FILE` to resolve paths,\n- otherwise uses `$TEST_SRCDIR` directly, as before.\n\nThis allows to enable the test in Windows CI now it passes.\n\nNote on the stricter error handling:\n- `set -u` is to fail fast should any of the expected `TEST_*`\n  environment variables be unbound,\n- `set -o pipefail` is to fail fast should either side of the\n  `grep | cut` pipe fail.\n"
    },
    {
      "commit": "d11b72869e6bd2d8fc8c201a0e4db6e19296b8ac",
      "tree": "429e7c8051550fb2d360dd267a56891ea5125c0e",
      "parents": [
        "a9358d57a797f793cedd460939188496c7d30bbf"
      ],
      "author": {
        "name": "Régis Desgroppes",
        "email": "rdesgroppes@gmail.com",
        "time": "Sat Feb 07 16:19:47 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Feb 07 08:19:47 2026 -0700"
      },
      "message": "fix(test): make `//tests:path_test` work on Windows (#1017)\n\nThe test was failing on Windows:\n```\nFAIL: testDestPathExt (__main__.DestPathTest.testDestPathExt)\nAssertionError: \u0027/bar/baz\u0027 !\u003d \u0027external/repo\\\\foo/bar/baz\u0027\n\nFAIL: testDestPathExtWrong (__main__.DestPathTest.testDestPathExtWrong)\nAssertionError: \u0027external/repo/foo/bar/baz\u0027 !\u003d \u0027external/repo\\\\foo/bar/baz\u0027\n\nFAIL: testSafeShortPathExt (__main__.SafeShortPathTest.testSafeShortPathExt)\nAssertionError: \u0027external/repo/foo/bar/baz\u0027 !\u003d \u0027external/repo\\\\foo/bar/baz\u0027\n\nFAIL: testSafeShortPathGenExt (__main__.SafeShortPathTest.testSafeShortPathGenExt)\nAssertionError: \u0027external/repo/foo/bar/baz\u0027 !\u003d \u0027external/repo\\\\foo/bar/baz\u0027\n\nFAIL: testShortPathDirnameExt (__main__.ShortPathDirnameTest.testShortPathDirnameExt)\nAssertionError: \u0027external/repo/foo/bar\u0027 !\u003d \u0027external/repo\\\\foo/bar\u0027\n\nFAIL: testShortPathDirnameGenExt (__main__.ShortPathDirnameTest.testShortPathDirnameGenExt)\nAssertionError: \u0027external/repo/foo/bar\u0027 !\u003d \u0027external/repo\\\\foo/bar\u0027\n\nFAIL: testTopLevelExt (__main__.ShortPathDirnameTest.testTopLevelExt)\nAssertionError: \u0027external/repo\u0027 !\u003d \u0027external\u0027\n```\n\nThe mock `File` class used `os.path.join()` which produces\nplatform-specific path separators (backslashes on Windows), which\ndoesn\u0027t match Bazel\u0027s behavior which always uses forward slashes\nregardless of platform:\n- use `posixpath.join()` instead,\n- enable the test in Windows CI since it now passes."
    },
    {
      "commit": "a9358d57a797f793cedd460939188496c7d30bbf",
      "tree": "f6adb86fc8b6584e71dda3399393795d1f0c50f3",
      "parents": [
        "67bc3b36d9aed3f8b284438be0ceb866463dbaf5"
      ],
      "author": {
        "name": "Régis Desgroppes",
        "email": "rdesgroppes@gmail.com",
        "time": "Wed Feb 04 21:41:56 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 04 13:41:56 2026 -0700"
      },
      "message": "fix(rpm): debuginfo support on some distributions (#1006)\n\nThis enables RPM debuginfo package generation across different Linux\ndistributions (tested on Rocky and Ubuntu in CI) by implementing RPM\nversion-based detection if possible, and falling back to the existing OS\nrelease-based detection otherwise.\n\nRPM 4.18.0 introduced changes to make `%{buildsubdir}` independent of\nthe `%setup` macro:\n- commit: `Make %{buildsubdir} more independent of %setup`\n  (rpm-software-management/rpm@6caca84c904423)\n- since: `rpm-4.18.0-alpha1`\n- release: https://rpm.org/wiki/Releases/4.18.0\n\nWhile this change enabled setting `buildsubdir` as a regular macro\nrather than a `spec` object property, it had the side effect of altering\nthe relative path handling in install scripts.\n\nThis requires different file path formats in the `%install` section:\n- RPM \u003c 4.18, corresponding to the project\u0027s \"centos\" type:\n  ```\n  cp \u0027bazel-out/k8-fastbuild/bin/tests/rpm/test_debuginfo\u0027 \u0027%{buildroot}/test_debuginfo\u0027\n  ```\n- RPM \u003e\u003d 4.18, corresponding to the project\u0027s \"fedora\" type:\n  ```\n  cp \u0027../bazel-out/k8-fastbuild/bin/tests/rpm/test_debuginfo\u0027 \u0027%{buildroot}/test_debuginfo\u0027\n  ```\n\nUsing the wrong \"type\" causes build failures:\n- \"fedora\" with RPM \u003c 4.18:\n  ```\n  cp: cannot stat \u0027../bazel-out/k8-fastbuild/bin/tests/rpm/test_debuginfo\u0027: No such file or directory\n  ```\n- \"centos\" with RPM \u003e\u003d 4.18:\n  ```\n  rm: refusing to remove \u0027.\u0027 or \u0027..\u0027 directory: skipping \u0027.\u0027\n  ```\n\nThe present change therefore implements version detection to\nautomatically select the appropriate \"type\".\n\n**Additional fixes for cross-distribution compatibility**\n\nRedHat distros have redhat-rpm-config with `%_enable_debug_packages`\nthat auto-invokes `%debug_package` (rpm-software-management/rpm#2204).\nDebian/Ubuntu ship vanilla upstream RPM without this configuration:\n```\noutput \u0027tests/rpm/test_debuginfo_rpm-debuginfo-1-0..rpm\u0027 was not created\n```\n\nThat\u0027s why the change adds `%debug_package` only when applicable:\n- `%{!?_enable_debug_packages:%debug_package}`.\n\nAlso, since RPM [4.14](https://rpm.org/wiki/Releases/4.14.0), unique\ndebug package filenames are enabled by default, leading to variadic\nfilenames being generated:\n```\nExecuting tests from //tests/rpm:test_golden_debuginfo_rpm_contents\n-----------------------------------------------------------------------------\n29c29\n\u003c /usr/lib/debug/test_debuginfo-1-0.x86_64.debug\n---\n\u003e /usr/lib/debug/test_debuginfo.debug\nFAIL: files \"tests/rpm/test_debuginfo_rpm_contents.txt\" and \"tests/rpm/test_debuginfo_rpm_contents.txt.golden\" differ\n```\n\nThat\u0027s why the change makes debug package filenames consistent across\ndistributions by means of:\n- `%undefine _unique_debug_names` (safe no-op on older RPM versions).\n\nNote: I also verified the change locally with:\n- RPM 4.17.1 on Fedora 35 (\"centos\" type)\n- RPM 4.18.2 on Ubuntu 24.04.3 (\"fedora\" type)\n- RPM 4.19.1.1 on Fedora 40 (\"fedora\" type)"
    },
    {
      "commit": "67bc3b36d9aed3f8b284438be0ceb866463dbaf5",
      "tree": "37a5a64c94bab53ca71dd28d274f1da73c544771",
      "parents": [
        "24055fa4ac2e21d6d82fd85a170ccb20e015f533"
      ],
      "author": {
        "name": "Régis Desgroppes",
        "email": "rdesgroppes@gmail.com",
        "time": "Thu Jan 29 15:21:08 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 29 09:21:08 2026 -0500"
      },
      "message": "fix(test): make `packaging_test` work with Bazel 9\n\nBazel 9 flipped `--incompatible_strict_action_env` to `true` by default\n(bazelbuild/bazel#27670), which means tests no longer inherit `PATH`\nfrom the host environment. This breaks subprocess calls that rely on\n`PATH` lookup:\n```\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Test output for //distro:packaging_test:\nE.\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nERROR: testBuild (__main__.PackagingTest.testBuild)\n----------------------------------------------------------------------\nTraceback (most recent call last):\n[...]\n    build_result \u003d subprocess.check_output([\u0027bazel\u0027, \u0027build\u0027, \u0027--enable_workspace\u0027, \u0027:dummy_tar\u0027])\n                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n[...]\nFileNotFoundError: [Errno 2] No such file or directory: \u0027bazel\u0027\n```\n\nThis change therefore adds `env_inherit \u003d [\"PATH\"]` to that very test,\nwhich matches the behavior of earlier Bazel versions and is consistent\nwith the presence of a \"noci\" tag.\n\nAdditionally, Bazel 9 removed `WORKSPACE` support entirely\n(bazelbuild/bazel#26131), requiring `bzlmod` with `MODULE.bazel`:\n```\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Test output for //distro:packaging_test:\n[...]\nWARNING: --enable_bzlmod is set, but no MODULE.bazel file was found at the workspace root. Bazel will create an empty MODULE.bazel file. Please consider migrating your external dependencies from WORKSPACE to MODULE.bazel. For more details, please refer to https://github.com/bazelbuild/bazel/issues/18958.\n[...]\nERROR: error loading package \u0027\u0027: Unable to find package for @@[unknown repo \u0027not_named_rules_pkg\u0027 requested from @@]//pkg:tar.bzl: The repository \u0027@@[unknown repo \u0027not_named_rules_pkg\u0027 requested from @@]\u0027 could not be resolved: No repository visible as \u0027@not_named_rules_pkg\u0027 from main repository.\n[...]\nERROR: Build did NOT complete successfully\nE.\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nERROR: testBuild (__main__.PackagingTest.testBuild)\n----------------------------------------------------------------------\n[...]\n    build_result \u003d subprocess.check_output([\u0027bazel\u0027, \u0027build\u0027] + bazel_flags + [\u0027:dummy_tar\u0027])\n                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n[...]\nsubprocess.CalledProcessError: Command \u0027[\u0027bazel\u0027, \u0027build\u0027, \u0027--enable_workspace\u0027, \u0027:dummy_tar\u0027]\u0027 returned non-zero exit status 1.\n```\n\nThe test now detects the Bazel version at runtime and generates the\nappropriate setup:\n- Bazel 9+: `MODULE.bazel`, with `bazel_dep` and `archive_override`,\n- earlier versions, as before: `WORKSPACE`, with `http_archive` and\n  `--enable_workspace` flag.\n\nFor good measure, the change also addresses a leftover TODO by replacing\nthe `tar` subprocess invocation with pure Python code (as otherwise done\nin the repo)."
    },
    {
      "commit": "24055fa4ac2e21d6d82fd85a170ccb20e015f533",
      "tree": "2180d503fac4fb414ff1c1a7c67537ae74120371",
      "parents": [
        "e48e1997a21138369b22b74c439aac6f68fd7101"
      ],
      "author": {
        "name": "Tony Aiuto",
        "email": "tony.aiuto@datadoghq.com",
        "time": "Tue Jan 27 21:40:01 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 27 21:40:01 2026 -0500"
      },
      "message": "Add docs for 1.2.0 (#1014)\n\n"
    },
    {
      "commit": "e48e1997a21138369b22b74c439aac6f68fd7101",
      "tree": "3771a525d4d47b6ac09044ccd5c46d30dc839c2c",
      "parents": [
        "8267e229a677212e9771a7eb14b259482db20cc9"
      ],
      "author": {
        "name": "Régis Desgroppes",
        "email": "rdesgroppes@gmail.com",
        "time": "Sat Jan 24 17:10:42 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jan 24 09:10:42 2026 -0700"
      },
      "message": "fix(ci): use own `md5` tool for Bazel 9 compatibility (#1007)\n\nBazel 9.0.0 flipped `--incompatible_strict_action_env` to `true` by\ndefault, restricting `PATH` to `/bin:/usr/bin:/usr/local/bin`.\n\nOn macOS, this broke a few tests relying on the `md5sum` command:\n```\nExecuting genrule //tests/deb:generate_md5sums failed: (Exit 127): [...]\n[...]\n/bin/bash: md5sum: command not found\n```\n\nThis is because:\n1. `md5sum` is not a native macOS command (macOS equivalent is `md5`),\n2. Homebrew\u0027s `md5sum` is typically in `/opt/homebrew/bin`, which is no\n   longer in the restricted `PATH`.\n\nSince the repo already maintains a cross-platform `//tests/util:md5`\ntool, the fix simply consists in leveraging it.\n\nNote on:\n```diff\n-    cmd \u003d \"for i in $(OUTS); do echo 1 \u003e$$i; done\",\n+    cmd \u003d \"for i in $(OUTS); do echo $$i \u003e$$i; done\",\n```\n... is only meant to get distinct md5 sums for the 2 input files used\nin tests."
    },
    {
      "commit": "8267e229a677212e9771a7eb14b259482db20cc9",
      "tree": "593d4f79ca284c240fdcb86728aa893234046c39",
      "parents": [
        "e93d65a860ddc061bae32870aff4096740a44d39"
      ],
      "author": {
        "name": "Régis Desgroppes",
        "email": "rdesgroppes@gmail.com",
        "time": "Sat Jan 24 17:06:55 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jan 24 09:06:55 2026 -0700"
      },
      "message": "chore(deps): upgrade `skylib` to remove warnings (#1005)\n\nThis upgrade of `bazel_skylib` from version 1.7.1 to 1.9.0 eliminates\na few deprecation warnings when executing Bazel commands:\n\u003e WARNING: [...]: target \u0027[...]\u0027 depends on deprecated target\n\u003e \u0027@@bazel_tools//src/conditions:host_windows_x64_constraint\u0027: No longer\n\u003e used by Bazel and will be removed in the future. Migrate to toolchains\n\u003e or define your own version of this setting.\n\nThese warnings originated from `bazel_skylib` 1.7.1\u0027s use of the\ndeprecated `@bazel_tools//src/conditions:host_windows` constraint in\n`copy_file` and `diff_test rules`.\nSince version 1.8.0, `bazel_skylib` migrated away from this deprecated\nconstraint (see bazelbuild/bazel-skylib#574)."
    },
    {
      "commit": "e93d65a860ddc061bae32870aff4096740a44d39",
      "tree": "d7550a892d01fc7fc6a5993c6c02354ce64899c0",
      "parents": [
        "3bbfc0b95aa6407386e0c5def9b629a7a0ed463b",
        "93d561dea11f740df16bff64fdb860ce12f63b31"
      ],
      "author": {
        "name": "Yun Peng",
        "email": "pcloudy@google.com",
        "time": "Thu Jan 22 13:57:25 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 22 13:57:25 2026 +0100"
      },
      "message": "fix(ci): update deprecated GH Actions (scorecard) (#1011)\n\nUpdates `ossf/scorecard-action` from `v2` to `v2.4.0` and\n`actions/upload-artifact` from `v3` to `v4` to comply with GitHub\u0027s\ndeprecation notice\n(https://github.blog/changelog/2024-04-16-deprecation-notice-v3-of-the-artifact-actions).\n\nAs of January 22, 2025, workflows using v3 artifact actions fail with:\n```\n##[error]This request has been automatically failed because it uses a\ndeprecated version of `actions/upload-artifact: v3`. Learn more:\nhttps://github.blog/changelog/2024-04-16-deprecation-notice-v3-of-the-artifact-actions/.\n```\n\nFixes #1012.\nNote: CI still fails due to #1010, for which there\u0027s a proposed\ncountermeasure: #1007."
    },
    {
      "commit": "93d561dea11f740df16bff64fdb860ce12f63b31",
      "tree": "d7550a892d01fc7fc6a5993c6c02354ce64899c0",
      "parents": [
        "3bbfc0b95aa6407386e0c5def9b629a7a0ed463b"
      ],
      "author": {
        "name": "Régis Desgroppes",
        "email": "rdesgroppes@gmail.com",
        "time": "Thu Jan 22 12:32:10 2026 +0100"
      },
      "committer": {
        "name": "Régis Desgroppes",
        "email": "rdesgroppes@gmail.com",
        "time": "Thu Jan 22 12:39:34 2026 +0100"
      },
      "message": "fix(ci): update deprecated GH Actions (scorecard)\n\nUpdates `ossf/scorecard-action` from `v2` to `v2.4.0` and\n`actions/upload-artifact` from `v3` to `v4` to comply with GitHub\u0027s\ndeprecation notice\n(https://github.blog/changelog/2024-04-16-deprecation-notice-v3-of-the-artifact-actions).\n\nAs of January 22, 2025, workflows using v3 artifact actions fail with:\n```\n##[error]This request has been automatically failed because it uses a\ndeprecated version of `actions/upload-artifact: v3`. Learn more:\nhttps://github.blog/changelog/2024-04-16-deprecation-notice-v3-of-the-artifact-actions/.\n```\n"
    },
    {
      "commit": "3bbfc0b95aa6407386e0c5def9b629a7a0ed463b",
      "tree": "35407167992e85e5ddd963e7c399b9da8a9d4f24",
      "parents": [
        "92733e270527e716b6e11d307bc9d46de4037145"
      ],
      "author": {
        "name": "Tony Aiuto",
        "email": "tony.aiuto@datadoghq.com",
        "time": "Tue Dec 23 09:57:28 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 23 09:57:28 2025 -0500"
      },
      "message": "Add workflow to publish a release to the bcr. (#998)\n\n* Add the workflow to publish a release to the bcr.\n- Update .bcr metadata template\n- Update .bcr test matrix to drop bazel 7\n"
    },
    {
      "commit": "92733e270527e716b6e11d307bc9d46de4037145",
      "tree": "d4c1eb9a0e93559436786e73d147a4ac76189dc6",
      "parents": [
        "8a5a0bdb7fc3053928314b48360baeaea93de3a3"
      ],
      "author": {
        "name": "Tony Aiuto",
        "email": "tony.aiuto@datadoghq.com",
        "time": "Mon Dec 22 21:50:49 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 22 21:50:49 2025 -0500"
      },
      "message": "Fix bcr metadata templates in main so we can test push workflow (#1000)\n\n* fix bcr metadata templates in main so we can test push workflow on bcr branch\n"
    },
    {
      "commit": "8a5a0bdb7fc3053928314b48360baeaea93de3a3",
      "tree": "132a4d32394ae961c56299df51bea321ce9e47ba",
      "parents": [
        "2fab459c805e3f171284856aebb0ceaca2c0ff08"
      ],
      "author": {
        "name": "Tony Aiuto",
        "email": "tony.aiuto@datadoghq.com",
        "time": "Thu Dec 04 16:50:14 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Dec 04 16:50:14 2025 -0500"
      },
      "message": "Add a release workflow. (#993)\n\n* Add a release workflow.\n* clean up release note generator\n   - do not include google specific maintainer instructions\n   - remove \"snip\" marks which were needed when you had to copy paste from terminal to github page."
    },
    {
      "commit": "2fab459c805e3f171284856aebb0ceaca2c0ff08",
      "tree": "0b87f72f0fdb2b800f772d497108f190bbf12f85",
      "parents": [
        "8d6af53c287fc9f8b99aacfacc09428c7e4e3844"
      ],
      "author": {
        "name": "Tony Aiuto",
        "email": "tony.aiuto@datadoghq.com",
        "time": "Wed Dec 03 11:05:53 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Dec 03 11:05:53 2025 -0500"
      },
      "message": "Create pre-release tests that run as a github workflow. (#991)\n\n* Create a version of the tests that run as a gitlab workflow.\n- This will become the smoke test before the release workflow.\n- The buildkite workflows are still needed for the cross platform testing.\n* do not build distro:all, that has to be manual\n* stop smoke testing doc_build, that brings in java and we do not have that defined\n* stamp version ito MODULE.bazel\n* put zip symlink test behind a tag for bazel 8\n* allow tags in the matrix\n\nCo-authored-by: Chuck Grindel \u003cchuck.grindel@gmail.com\u003e\n"
    },
    {
      "commit": "8d6af53c287fc9f8b99aacfacc09428c7e4e3844",
      "tree": "04446ac73cad1a85f42f9550b8ef1f26afb429e6",
      "parents": [
        "3dffe47b4b9858950e0a431b62d6c99c84ab74f1"
      ],
      "author": {
        "name": "Tony Aiuto",
        "email": "tony.aiuto@datadoghq.com",
        "time": "Wed Dec 03 10:32:44 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Dec 03 10:32:44 2025 -0500"
      },
      "message": "Generate docs for pkg_install (#992)\n\n* add docs for pkg_install\n* update docs"
    },
    {
      "commit": "3dffe47b4b9858950e0a431b62d6c99c84ab74f1",
      "tree": "33f616b36ba239b6272787ac9b65a724e2f2a9a5",
      "parents": [
        "66521acd88ae40058179b67855681eca6492e592"
      ],
      "author": {
        "name": "Tony Aiuto",
        "email": "tony.aiuto@datadoghq.com",
        "time": "Wed Nov 26 10:37:19 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Nov 26 10:37:19 2025 -0500"
      },
      "message": "Add pkg_install.destdir_flag. (#990)\n\nAdd pkg_install.destdir_flag.\n\nThis allows `pkg_install(destdir)` to be set from a string_flag.\nThe use case is to push destdir to a flag you can set in .bazelrc instead of pushing an environment variable through the build."
    },
    {
      "commit": "66521acd88ae40058179b67855681eca6492e592",
      "tree": "8620ef2189998158f26173d245143c3ed6c3dac0",
      "parents": [
        "4bd78fe414707d10660aa647d6ae69a196659e7c"
      ],
      "author": {
        "name": "Tony Aiuto",
        "email": "tony.aiuto@datadoghq.com",
        "time": "Wed Nov 26 10:25:14 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Nov 26 10:25:14 2025 -0500"
      },
      "message": "Fix distro packaging test (#989)\n\n"
    },
    {
      "commit": "4bd78fe414707d10660aa647d6ae69a196659e7c",
      "tree": "37b2ed86bf83d76fca3e1bcd4b50adf660ab4709",
      "parents": [
        "c9cc9d08f46f7fa8478d3d86e91f3c5018d916e2"
      ],
      "author": {
        "name": "mathukumillia",
        "email": "anirudh.mathukumilli@gmail.com",
        "time": "Tue Nov 25 21:14:39 2025 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Nov 26 00:14:39 2025 -0500"
      },
      "message": "Support compression_level when using xz (#988)\n\n* Support compression_level when using xz. Fixes: #987\n"
    },
    {
      "commit": "c9cc9d08f46f7fa8478d3d86e91f3c5018d916e2",
      "tree": "484551b26fd0378d6be2a397430c43a9d7a0dc66",
      "parents": [
        "173c5a3e84b83c822f2ca4376a089c6f0e293f8c"
      ],
      "author": {
        "name": "AtoZdevelopment",
        "email": "40828820+AtoZdevelopment@users.noreply.github.com",
        "time": "Fri Nov 21 15:19:54 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 21 09:19:54 2025 -0500"
      },
      "message": "Allow for variables in the package name of pkg_deb (#985)\n\n* Allow for variables in the package name of pkg_deb\n"
    },
    {
      "commit": "173c5a3e84b83c822f2ca4376a089c6f0e293f8c",
      "tree": "ab50316fb9da9185cda8dbd9e82c5dc03fb8a4e0",
      "parents": [
        "2b82a32460e122c83563a10f20d2942b4539c6b0"
      ],
      "author": {
        "name": "Tony Aiuto",
        "email": "tony.aiuto@datadoghq.com",
        "time": "Thu Nov 20 15:38:46 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 20 15:38:46 2025 -0500"
      },
      "message": "Update pkg_deb to use ctx.action.args() for building the command line. (#714)\n\nUpdate pkg_deb to use ctx.action.args() for building the command line.\nThis has better UTF-8 fidelity."
    },
    {
      "commit": "2b82a32460e122c83563a10f20d2942b4539c6b0",
      "tree": "ded3d51b658e83135b8d6f760c8363d01d304346",
      "parents": [
        "46bd2689886984c2b77d6005595f351e404dfa57"
      ],
      "author": {
        "name": "Tony Aiuto",
        "email": "tony.aiuto@datadoghq.com",
        "time": "Thu Nov 20 15:15:05 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 20 15:15:05 2025 -0500"
      },
      "message": "test with latest instead of rolling (#986)\n\n* test with latest instead of rolling\n"
    },
    {
      "commit": "46bd2689886984c2b77d6005595f351e404dfa57",
      "tree": "f2b2b3e8b15f64de662a57b6ab5ba82e899245a6",
      "parents": [
        "daa496412d12598d6b24619a9a6cd6fc137de384"
      ],
      "author": {
        "name": "Tony Aiuto",
        "email": "tony.aiuto@datadoghq.com",
        "time": "Thu Nov 13 22:56:29 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 13 22:56:29 2025 -0500"
      },
      "message": "Strip internal test fake repository for MODULE.bazel in distribution. (#976)\n\nFixes #953"
    },
    {
      "commit": "daa496412d12598d6b24619a9a6cd6fc137de384",
      "tree": "1d35e80a5688679323192f5f2c6a20baba7f33b0",
      "parents": [
        "00265812101b771d28cf91f07d2c0751f0dffdd9",
        "06760bd6bdf399a3c824463c2b01b3de58a6d084"
      ],
      "author": {
        "name": "tonyaiuto",
        "email": "tony.aiuto@gmail.com",
        "time": "Thu Nov 13 14:25:53 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 13 14:25:53 2025 -0500"
      },
      "message": "Document pkg_tar.extension\u0027s compression options. (#973)\n\nFixes #972"
    },
    {
      "commit": "00265812101b771d28cf91f07d2c0751f0dffdd9",
      "tree": "8bedd6709244ac3e7f9367f8f9c89c1572ec5e30",
      "parents": [
        "38f29afc765d5012d1cf765c3f85b8ac10159f53",
        "0fa07e1471cc5b978f832268a5f0e6cb66c18e79"
      ],
      "author": {
        "name": "tonyaiuto",
        "email": "tony.aiuto@gmail.com",
        "time": "Thu Nov 13 14:12:42 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 13 14:12:42 2025 -0500"
      },
      "message": "Implement pkg_install(symlink) also for pkg_zip (#982)\n\nI start to use hermetic python environment and saw\nhttps://github.com/bazelbuild/rules_pkg/issues/929.\n\nIt mostly works, but in my case I use pkg_zip instead of pkg_tar.\n\n\nhttps://github.com/bazelbuild/rules_pkg/commit/4eed5466fb7062e196c4fa01495e1dfe0cf5c850\nimplements `raw_symlink`/ support for `pkg_tar`.\nThis MR adds the same functionality for `pkg_zip`.\n\nThe exception when the feature is not implemented yet:\n```\nException: (\u0027Unknown type for manifest entry:\u0027, ManifestEntry\u003c{\u0027type\u0027: \u0027raw_symlink\u0027, \u0027dest\u0027: \u0027system_impl.runfiles/_main/example/_impl_py_client_install.venv/bin/python3\u0027, \u0027src\u0027: \u0027bazel-out/k8-fastbuild/bin/example/_impl_py_client_install.venv/bin/python3\u0027, \u0027mode\u0027: \u00270555\u0027, \u0027user\u0027: None, \u0027group\u0027: None, \u0027uid\u0027: None, \u0027gid\u0027: None, \u0027origin\u0027: \u0027@@//example:system_impl\u0027}\u003e)\n```"
    },
    {
      "commit": "38f29afc765d5012d1cf765c3f85b8ac10159f53",
      "tree": "61a4a03bb365c6d50cbf0e4758b3d9aac3d7d306",
      "parents": [
        "6cdaba69ee76463b2b8e97e8d243dbb6115c3aee",
        "57f4b7dc7173ae08b58970e4df6d0ce6fe59aebb"
      ],
      "author": {
        "name": "tonyaiuto",
        "email": "tony.aiuto@gmail.com",
        "time": "Thu Nov 13 14:10:43 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 13 14:10:43 2025 -0500"
      },
      "message": "Make `pkg_install` work without \"runfiles\" (Windows default) (#984)\n\nOn Windows, `pkg_install` wouldn\u0027t work out of the box without passing\n`--enable_runfiles` to Bazel:\n```py\nwindows\u003e bazel run [redacted]//:install -- --destdir\u003dd:\\est\n[...]\nINFO: Running command line: [redacted]/install.exe \u003cargs omitted\u003e\nTraceback (most recent call last):\n  File \"[redacted]\\install_install_script.py\", line 307, in \u003cmodule\u003e\n    sys.exit(main(sys.argv))\n             ^^^^^^^^^^^^^^\n  File \"[redacted]\\install_install_script.py\", line 299, in main\n    installer.include_manifest_path(f)\n  File \"[redacted]\\install_install_script.py\", line 182, in include_manifest_path\n    with open(path, \u0027r\u0027) as fh:\n         ^^^^^^^^^^^^^^^\nFileNotFoundError: [Errno 2] No such file or directory: \u0027../[redacted]/install_install_script-install-manifest.json\u0027\n```\n\nIn order to accomodate the various use cases (`build`, `test` and `run`\nactions; enabled and disabled runfiles), the present change proposes to\nleverage `rules_python`\u0027s \"runfiles\" lookup library:\nhttps://rules-python.readthedocs.io/en/latest/api/py/runfiles/runfiles.runfiles.html\n\nFor good measure, the change also enables `bazel test\n//tests/install/...` in CI for Windows.\n\nThis might close #387."
    },
    {
      "commit": "57f4b7dc7173ae08b58970e4df6d0ce6fe59aebb",
      "tree": "61a4a03bb365c6d50cbf0e4758b3d9aac3d7d306",
      "parents": [
        "6cdaba69ee76463b2b8e97e8d243dbb6115c3aee"
      ],
      "author": {
        "name": "Régis Desgroppes",
        "email": "rdesgroppes@gmail.com",
        "time": "Thu Nov 06 23:53:57 2025 +0100"
      },
      "committer": {
        "name": "Régis Desgroppes",
        "email": "rdesgroppes@gmail.com",
        "time": "Fri Nov 07 11:02:01 2025 +0100"
      },
      "message": "Make `pkg_install` work without runfiles (Windows default)\n\nOn Windows, `pkg_install` wouldn\u0027t work out of the box without passing\n`--enable_runfiles` to Bazel:\n```\nwindows\u003e bazel run [redacted]//:install -- --destdir\u003dd:\\est\n[...]\nINFO: Running command line: [redacted]/install.exe \u003cargs omitted\u003e\nTraceback (most recent call last):\n  File \"[redacted]\\install_install_script.py\", line 307, in \u003cmodule\u003e\n    sys.exit(main(sys.argv))\n             ^^^^^^^^^^^^^^\n  File \"[redacted]\\install_install_script.py\", line 299, in main\n    installer.include_manifest_path(f)\n  File \"[redacted]\\install_install_script.py\", line 182, in include_manifest_path\n    with open(path, \u0027r\u0027) as fh:\n         ^^^^^^^^^^^^^^^\nFileNotFoundError: [Errno 2] No such file or directory: \u0027../[redacted]/install_install_script-install-manifest.json\u0027\n```\n\nIn order to accomodate the various use cases (`build`, `test` and `run`\nactions; enabled and disabled runfiles), the present change proposes to\nleverage `rules_python`\u0027s \"runfiles\" lookup library:\nhttps://rules-python.readthedocs.io/en/latest/api/py/runfiles/runfiles.runfiles.html\n\nFor good measure, the change also enables\n`bazel test //tests/install/...` in CI for Windows.\n\nThis might close #387.\n"
    },
    {
      "commit": "6cdaba69ee76463b2b8e97e8d243dbb6115c3aee",
      "tree": "8c71e1b85c775ac560154a3c9cf4072c360f5492",
      "parents": [
        "4eed5466fb7062e196c4fa01495e1dfe0cf5c850"
      ],
      "author": {
        "name": "Régis Desgroppes",
        "email": "rdesgroppes@gmail.com",
        "time": "Thu Nov 06 15:47:32 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 06 09:47:32 2025 -0500"
      },
      "message": "Fix Windows file locking issue in `pkg_install` (#983)\n\n`NamedTemporaryFile` turns out to lock the file on Windows, preventing\n`os.replace` from moving it:\n```\nwindows\u003e bazel run --enable_runfiles //[redacted]:install -- --destdir\u003dd:\\est\n[...]\nINFO: Running command line: [redacted]/install.exe \u003cargs omitted\u003e\nINFO: Installing to [redacted]\nTraceback (most recent call last):\n  File \"[redacted]\\install_install_script.py\", line 92, in _do_file_copy\n    os.replace(tmp_file.name, dest)\nPermissionError: [WinError 32] The process cannot access the file because it is being used by another process: \u0027[redacted]\\\\tmp4wd6gg1t\u0027 -\u003e \u0027d:\\est/filename.ext\u0027\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n  File \"[redacted]\\install_install_script.py\", line 307, in \u003cmodule\u003e\n    sys.exit(main(sys.argv))\n             ^^^^^^^^^^^^^^\n  File \"[redacted]\\install_install_script.py\", line 303, in main\n    installer.do_the_thing()\n  File \"[redacted]\\install_install_script.py\", line 206, in do_the_thing\n    self._install_file(entry)\n  File \"[redacted]\\install_install_script.py\", line 126, in _install_file\n    self._do_file_copy(entry.src, entry.dest)\n  File \"[redacted]\\install_install_script.py\", line 94, in _do_file_copy\n    pathlib.Path(tmp_file.name).unlink(missing_ok\u003dTrue)\n  File \"[redacted]\\rules_python++python+python_3_12_x86_64-pc-windows-msvc\\Lib\\pathlib.py\", line 1342, in unlink\n    os.unlink(self)\nPermissionError: [WinError 32] The process cannot access the file because it is being used by another process: \u0027[redacted]\\\\tmp4wd6gg1t\u0027\n\nIntuition: _Any problem in computer science can be solved with another\nlevel of indirection._ (https://bwlampson.site/Slides/TuringLecture.htm)\n\nThe change therefore proposes to use `TemporaryDirectory` instead of\n`NamedTemporaryFile` as an indirection to avoid a file lock from being\nheld, which allows the file to be freely written and moved on all\nplatforms while maintaining the same atomic replace behavior for macOS\ncode-signed binaries introduced in commit\n31cab20079c1f2919f569119272923dea2e679c8 (#941)."
    },
    {
      "commit": "0fa07e1471cc5b978f832268a5f0e6cb66c18e79",
      "tree": "f591bc9502f108f482c1ed0aef84daf46d402b47",
      "parents": [
        "4eed5466fb7062e196c4fa01495e1dfe0cf5c850"
      ],
      "author": {
        "name": "Adrian Imboden",
        "email": "adi@thingdust.com",
        "time": "Wed Oct 22 13:58:54 2025 +0000"
      },
      "committer": {
        "name": "Adrian Imboden",
        "email": "adi@thingdust.com",
        "time": "Wed Nov 05 23:18:47 2025 +0100"
      },
      "message": "Implement pkg_install(symlink) also for pkg_zip\n"
    },
    {
      "commit": "4eed5466fb7062e196c4fa01495e1dfe0cf5c850",
      "tree": "0fa3f491749d720ce0a0c1f90c54c5fd426b5097",
      "parents": [
        "28755e7cfff963d97d94da6571dc5db87649afc6"
      ],
      "author": {
        "name": "Tony Aiuto",
        "email": "tony.aiuto@datadoghq.com",
        "time": "Tue Oct 07 16:23:32 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 07 16:23:32 2025 +0200"
      },
      "message": "Implement pkg_install(symlink) (#979)\n\n* Implement pkg_install(symlink)\n\nA first attempt at pgk_install of symlinks.\nIt was pretty obvious code once I realized I needed os.lchmod()\n\n* fix use of cc_binary in the test because things changed under us\n\n* old python on buildkit\n\n* revert unintentional python reformating\n\n* Update pkg/private/install.py.tpl\n\nCo-authored-by: Andrew Psaltis \u003candrew.psaltis@datadoghq.com\u003e\n\n---------\n\nCo-authored-by: Andrew Psaltis \u003candrew.psaltis@datadoghq.com\u003e"
    },
    {
      "commit": "06760bd6bdf399a3c824463c2b01b3de58a6d084",
      "tree": "9f7a8ea86560c7dd3282daafbee73d69fc148c82",
      "parents": [
        "c2846c48648b3a9e692779ed24fa40d4cdc634a1"
      ],
      "author": {
        "name": "Douglas Thor",
        "email": "doug.thor@gmail.com",
        "time": "Sat Oct 04 03:23:04 2025 +0000"
      },
      "committer": {
        "name": "Douglas Thor",
        "email": "doug.thor@gmail.com",
        "time": "Sat Oct 04 03:23:04 2025 +0000"
      },
      "message": "Revert \"Document pkg_tar.extension.\"\n\nThis reverts commit a71a69d567b772698ce53f39979e75b0c6871dfb.\n"
    },
    {
      "commit": "c2846c48648b3a9e692779ed24fa40d4cdc634a1",
      "tree": "67281c80c267b195bed45323661373a32ac7fbde",
      "parents": [
        "a71a69d567b772698ce53f39979e75b0c6871dfb"
      ],
      "author": {
        "name": "Douglas Thor",
        "email": "doug.thor@gmail.com",
        "time": "Sat Oct 04 03:17:08 2025 +0000"
      },
      "committer": {
        "name": "Douglas Thor",
        "email": "doug.thor@gmail.com",
        "time": "Sat Oct 04 03:17:08 2025 +0000"
      },
      "message": "Update doc in the correct place\n"
    },
    {
      "commit": "28755e7cfff963d97d94da6571dc5db87649afc6",
      "tree": "6edd819bdcf6ff981e5c4d60ad818af8ec2d5565",
      "parents": [
        "92457cd303d5cb91168638d6d0e2a165ff06a603"
      ],
      "author": {
        "name": "Tony Aiuto",
        "email": "tony.aiuto@datadoghq.com",
        "time": "Sun Sep 14 23:33:13 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 14 23:33:13 2025 -0400"
      },
      "message": "bump version to 1.2 because 1.1 is released (#977)\n\n"
    },
    {
      "commit": "92457cd303d5cb91168638d6d0e2a165ff06a603",
      "tree": "9348f5e2b71be5e3e8173aeb4ea0d8a9e74230d8",
      "parents": [
        "6d0af2cf6c60a2555a99265acc72c1e0919dc3cc"
      ],
      "author": {
        "name": "Tony Aiuto",
        "email": "tony.aiuto@datadoghq.com",
        "time": "Sun Sep 14 23:32:56 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 14 23:32:56 2025 -0400"
      },
      "message": "Clean up codeowners.\n\n"
    },
    {
      "commit": "6d0af2cf6c60a2555a99265acc72c1e0919dc3cc",
      "tree": "da141558f6ccda1936adab90cbe8939273f6b186",
      "parents": [
        "9c05cf6fecb0783e99508a4635f491cdc3bbf20e"
      ],
      "author": {
        "name": "Rilson Nascimento",
        "email": "ron.odnn@gmail.com",
        "time": "Wed Sep 10 19:47:41 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 10 22:47:41 2025 -0400"
      },
      "message": "📦 Conditionally preserve file mtime when archiving through pkg_tar (#974)\n\n* preserve file mtime through an option\n\n* add tests\n\n* delete debug comment\n\n* wrap long line\n\n* buildifier\n\n---------\n\nCo-authored-by: rnascimento \u003crnascimento@salesforce.com\u003e"
    },
    {
      "commit": "9c05cf6fecb0783e99508a4635f491cdc3bbf20e",
      "tree": "6a85e63ac21b1d8400ab72dc3a61a750961d887f",
      "parents": [
        "8c7c2cf7f1742a1fb199d0164b800d2939fa9fef"
      ],
      "author": {
        "name": "Ed Schouten",
        "email": "eschouten@apple.com",
        "time": "Wed Sep 10 15:37:52 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 10 07:37:52 2025 -0600"
      },
      "message": "Convert the compression level to a string before calling Args.add() (#975)\n\nThe documentation for Bazel\u0027s Args states that standard conversion rules\nare only specified for strings, Files, and Labels. For all other types\nthe conversion to a string is done in an unspecified manner, which is\nwhy it should be avoided.\n\nLet\u0027s stay away from this unspecified behaviour by explicitly converting\nthe compression level to a string before calling Args.add()."
    },
    {
      "commit": "a71a69d567b772698ce53f39979e75b0c6871dfb",
      "tree": "a6e77d133dd903c05caa35c4b9484a3494c88d1f",
      "parents": [
        "8c7c2cf7f1742a1fb199d0164b800d2939fa9fef"
      ],
      "author": {
        "name": "Douglas Thor",
        "email": "doug.thor@gmail.com",
        "time": "Fri Aug 08 21:52:45 2025 +0000"
      },
      "committer": {
        "name": "Douglas Thor",
        "email": "doug.thor@gmail.com",
        "time": "Fri Aug 08 21:52:45 2025 +0000"
      },
      "message": "Document pkg_tar.extension.\n\nFixes #972\n"
    },
    {
      "commit": "8c7c2cf7f1742a1fb199d0164b800d2939fa9fef",
      "tree": "32cdbd0908d31eb280ed979561928f368752f165",
      "parents": [
        "4e6e82c96b6150343ec1dac6ea12e91ce835ea8f",
        "5ba40b30049d92e742761070514c7be9e7bd2acc"
      ],
      "author": {
        "name": "tonyaiuto",
        "email": "tony.aiuto@gmail.com",
        "time": "Wed Jul 30 23:39:25 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 30 23:39:25 2025 -0400"
      },
      "message": "Overridable `debuginfo` type (#945)\n\nThis change enables the override of the auto-detected\n`/etc/os-release`-based `debuginfo_type` attribute of the\n`build_repo_for_rpmbuild_toolchain` repository rule and allows the\nauto-detection by means of a new `default` option.\n\nThis also enables the use of` none` as an override option.\n\nThis change also includes a regeneration of the documentation, which\nseems to have trailed recent code changes. But there are no\ndocumentation changes related to this change as\n`build_repo_for_rpmbuild_toolchain` repository rule is not documented\n(yet)."
    },
    {
      "commit": "5ba40b30049d92e742761070514c7be9e7bd2acc",
      "tree": "32cdbd0908d31eb280ed979561928f368752f165",
      "parents": [
        "f3df02f97688764314ba674a62b546d73bfe5ea6"
      ],
      "author": {
        "name": "tonyaiuto",
        "email": "tony.aiuto@gmail.com",
        "time": "Wed Jul 30 23:34:22 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 30 23:34:22 2025 -0400"
      },
      "message": "You can\u0027t watch what doesn\u0027t exist."
    },
    {
      "commit": "f3df02f97688764314ba674a62b546d73bfe5ea6",
      "tree": "3c51ca2478b96e67460a2c54d5e4a0cd85988613",
      "parents": [
        "4e6e82c96b6150343ec1dac6ea12e91ce835ea8f"
      ],
      "author": {
        "name": "nic.badiu",
        "email": "nic.badiu@arista.com",
        "time": "Wed Mar 12 02:04:51 2025 -0700"
      },
      "committer": {
        "name": "nic.badiu",
        "email": "nic.badiu@arista.com",
        "time": "Tue Jul 29 08:48:43 2025 -0700"
      },
      "message": "Overridable `debuginfo` type\n\nThis change enables the override of the auto-detected `/etc/os-release`-based\n`debuginfo` type and allows the auto-detection by means of a new  `default`\noption.\n\nThis also enables the use of `none` as an override option.\n"
    },
    {
      "commit": "4e6e82c96b6150343ec1dac6ea12e91ce835ea8f",
      "tree": "b3dfab31eefbc155f131e475f5d14f708eee625a",
      "parents": [
        "df80ac75efb9ff0d8f854d3392d633a3ed379eca",
        "9906bc7d1e5fca3f9b152b59a334cdbc5cced0b5"
      ],
      "author": {
        "name": "tonyaiuto",
        "email": "tony.aiuto@gmail.com",
        "time": "Fri Jul 11 12:31:28 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 11 12:31:28 2025 -0400"
      },
      "message": "Add Alma 9 rpmbuild + bazel environment for examples (#969)\n\nThis provides a consistent starting point for running rpmbuild examples\nusing a docker container build on Alma 9.\n\nCloses: #968"
    },
    {
      "commit": "9906bc7d1e5fca3f9b152b59a334cdbc5cced0b5",
      "tree": "f3ea7113b17ed1c36fe5f198985c017632e14cfa",
      "parents": [
        "2ddabe576b38a05f3f7707767dc512055af2a3ac"
      ],
      "author": {
        "name": "Wade Carpenter",
        "email": "wade@arista.com",
        "time": "Fri Jul 11 08:47:57 2025 -0700"
      },
      "committer": {
        "name": "Wade Carpenter",
        "email": "wade@arista.com",
        "time": "Fri Jul 11 08:47:57 2025 -0700"
      },
      "message": "Remove useless subshell from alma9 docker driver script\n\nSince it runs `exec docker ...` as the last step, putting it inside a\nsubhsell is not so useful.\n"
    },
    {
      "commit": "2ddabe576b38a05f3f7707767dc512055af2a3ac",
      "tree": "8bb804d1de4f3032b2f10e541d75e8a96f9cc63e",
      "parents": [
        "68349e26cfe9eadc0d02d074f8890772e0fdec62"
      ],
      "author": {
        "name": "Wade Carpenter",
        "email": "wade@arista.com",
        "time": "Thu Jul 10 10:39:50 2025 -0700"
      },
      "committer": {
        "name": "Wade Carpenter",
        "email": "wade@arista.com",
        "time": "Thu Jul 10 10:49:03 2025 -0700"
      },
      "message": "Provide default user / group IDs for alma9 rpmbuild docker\n\nThis is required for better compatibility with host platforms where\nthe active uid (from id -u) might conflict with the base image system\nuser ids.\n\nWe chose 1000 as something outside the standard uid range, and\nconveniently the default uid on Ubuntu systems, ref:\nhttps://refspecs.linuxfoundation.org/LSB_3.0.0/LSB-Core-generic/LSB-Core-generic/uidrange.html\n\nI\u0027ve also changed the Dockerfile to pick up the TARGETARCH value so\nthat we get the right bazelisk executable.\n"
    },
    {
      "commit": "df80ac75efb9ff0d8f854d3392d633a3ed379eca",
      "tree": "5079b737e25df8bc7ee7a031a0ad8ff92841a5b7",
      "parents": [
        "ecfcb1f2fc708cb339f8136283faa5852392748b"
      ],
      "author": {
        "name": "Adam Azarchs",
        "email": "adam.azarchs@10xgenomics.com",
        "time": "Mon Jul 07 19:19:06 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 07 22:19:06 2025 -0400"
      },
      "message": "pkg_deb: add support for md5sums control file (#960)\n\nThis adds a new, optional attribute to the pkg_deb rule allowing a user\nto supply an md5sums file.\n\nCloses #959"
    },
    {
      "commit": "ecfcb1f2fc708cb339f8136283faa5852392748b",
      "tree": "8ca47b3dd66f9922a8f7563fc5a778cf54c5c602",
      "parents": [
        "5a77a59c563d13e8c36665fcca039fbfff6fdba1"
      ],
      "author": {
        "name": "Gunnar Wagenknecht",
        "email": "gunnar@wagenknecht.org",
        "time": "Tue Jul 08 04:17:44 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 07 22:17:44 2025 -0400"
      },
      "message": "Expose extension for Git toolchain (#967)\n\nThis move all toolchains into the rules_pkg_git repo.\n\n* Expose extension\n* Use extension in MODULE.bazel"
    },
    {
      "commit": "68349e26cfe9eadc0d02d074f8890772e0fdec62",
      "tree": "c2dfb04eb849aa7276bf68ff73e82037fb5fa62b",
      "parents": [
        "5a77a59c563d13e8c36665fcca039fbfff6fdba1"
      ],
      "author": {
        "name": "Wade Carpenter",
        "email": "wade@arista.com",
        "time": "Mon Jul 07 17:26:30 2025 -0700"
      },
      "committer": {
        "name": "Wade Carpenter",
        "email": "wade@arista.com",
        "time": "Mon Jul 07 17:26:30 2025 -0700"
      },
      "message": "Add Alma 9 rpmbuild + bazel environment for examples\n\nThis provides a consistent starting point for running rpmbuild\nexamples using a docker container build on Alma 9.\n\nCloses: #968\n"
    },
    {
      "commit": "5a77a59c563d13e8c36665fcca039fbfff6fdba1",
      "tree": "605bb6f293f3c1feb448968e8f8e3a0a63425161",
      "parents": [
        "359ea4627a28704cb25ce8200c128b39b02868b0",
        "f3ae90e940258a3f6349502039d00da78cb441ce"
      ],
      "author": {
        "name": "tonyaiuto",
        "email": "tony.aiuto@gmail.com",
        "time": "Fri Jun 27 13:06:10 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 27 13:06:10 2025 -0400"
      },
      "message": "Add pkg_rpm() \"data\" attribute to provide files for rpmbuild (#964)\n\nWhen building debuginfo packages, find-debuginfo is called by rpmbuild.\nTo include the relevant source files, they will need to be accessible to\nfind-debuginfo via rpmbuild.\n\nThere are a number of other pieces required for an end-to-end solution\nwith debuginfo, but they\u0027re outside the scope of rules_pkg, e.g.\n\n  - customized find-debuginfo that can run inside bazel\n  - special _find_debuginfo_opts used to locate source files\n- figuring out which source files to pass to pkg_rpm() in the first\nplace.\n\nThe key, though, is that pkg_rpm() accepts extra data in the first\nplace.\n\nFixes: #965 "
    },
    {
      "commit": "f3ae90e940258a3f6349502039d00da78cb441ce",
      "tree": "605bb6f293f3c1feb448968e8f8e3a0a63425161",
      "parents": [
        "359ea4627a28704cb25ce8200c128b39b02868b0"
      ],
      "author": {
        "name": "Wade Carpenter",
        "email": "wade@arista.com",
        "time": "Thu Jun 26 18:13:20 2025 -0700"
      },
      "committer": {
        "name": "Wade Carpenter",
        "email": "wade@arista.com",
        "time": "Thu Jun 26 20:09:51 2025 -0700"
      },
      "message": "Add pkg_rpm() \"data\" attribute to provide files for rpmbuild\n\nWhen building debuginfo packages, find-debuginfo is called by\nrpmbuild. To include the relevant source files, they will need to be\naccessible to find-debuginfo via rpmbuild.\n\nThere are a number of other pieces required for an end-to-end solution\nwith debuginfo, but they\u0027re outside the scope of rules_pkg, e.g.\n\n  - customized find-debuginfo that can run inside bazel\n  - special _find_debuginfo_opts used to locate source files\n  - figuring out which source files to pass to pkg_rpm() in the first\n    place.\n\nThe key, though, is that pkg_rpm() accepts extra data in the first\nplace.\n\nFixes: #965\n"
    },
    {
      "commit": "359ea4627a28704cb25ce8200c128b39b02868b0",
      "tree": "ac418931e785e0de8772c34db56c4dbc3ba7ff35",
      "parents": [
        "e9ac621c3530a244f802b2b05b7b5138d506110f",
        "bcc9ec2783b0619965cc3b6928fc21f86205bdda"
      ],
      "author": {
        "name": "tonyaiuto",
        "email": "tony.aiuto@gmail.com",
        "time": "Wed Jun 25 08:58:41 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 25 08:58:41 2025 -0400"
      },
      "message": "Remove incompatible_use_toolchain_transition again, now that it has been removed from bazel (#963)\n\nI think this might break compatibility with bazel 4.x, in order to fix\ncompatibility with the tip of bazel\u0027s master branch.\n\nResolves #962\nSee also: #452, #454\n\ncc @katre "
    },
    {
      "commit": "bcc9ec2783b0619965cc3b6928fc21f86205bdda",
      "tree": "ac418931e785e0de8772c34db56c4dbc3ba7ff35",
      "parents": [
        "e9ac621c3530a244f802b2b05b7b5138d506110f"
      ],
      "author": {
        "name": "Mostyn Bramley-Moore",
        "email": "mostyn@antipode.se",
        "time": "Mon Jun 23 21:54:54 2025 +0200"
      },
      "committer": {
        "name": "Mostyn Bramley-Moore",
        "email": "mostyn@antipode.se",
        "time": "Mon Jun 23 21:55:54 2025 +0200"
      },
      "message": "Remove incompatible_use_toolchain_transition again, now that it has been removed from bazel\n\nThis breaks compatibility with bazel 4.x, in order to fix compatibility with\nthe tip of bazel\u0027s master branch.\n\nResolves #962\nSee also: #452, #454\n"
    },
    {
      "commit": "e9ac621c3530a244f802b2b05b7b5138d506110f",
      "tree": "4576974fa09862ed4786d0287c178411a007ef54",
      "parents": [
        "58a20522ae09e0ee4261a0dc0e0f1c07e6eac178"
      ],
      "author": {
        "name": "Tony Aiuto",
        "email": "tony.aiuto@datadoghq.com",
        "time": "Thu Jun 19 10:15:02 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 19 10:15:02 2025 -0400"
      },
      "message": "[CI Fix] Stop trying the rpm debuginfo tests (#961)\n\nStop trying the rpm debuginfo tests.  They are now failing on centos - the only platform we test rpm on.\n\nrpmbuild is a death by 1000 cuts. We should move RPM support to a separate project and let the people who want it build it there."
    },
    {
      "commit": "58a20522ae09e0ee4261a0dc0e0f1c07e6eac178",
      "tree": "84a063c385fa03e3f70abff979cd816018f358a7",
      "parents": [
        "b69b392df3268bd5095e81a9fe4e9226094b0f85",
        "f28a4729f5bb664863e081c0aa3ec1a0ce2a4f0d"
      ],
      "author": {
        "name": "tonyaiuto",
        "email": "tony.aiuto@gmail.com",
        "time": "Wed Jun 18 10:37:38 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 18 10:37:38 2025 -0400"
      },
      "message": "Use DefaultInfo directly (#958)\n\nRequired for compatibility with\nhttps://github.com/bazelbuild/bazel/issues/20183"
    },
    {
      "commit": "b69b392df3268bd5095e81a9fe4e9226094b0f85",
      "tree": "0d03972c88919526babc728d9b0f0f40c4798d59",
      "parents": [
        "c590e619313f3227c06541b00deb6074680b8922",
        "d6bdf762fc94a9875b2ca3ae4d50af43a93d5eba"
      ],
      "author": {
        "name": "tonyaiuto",
        "email": "tony.aiuto@gmail.com",
        "time": "Wed Jun 18 10:34:46 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 18 10:34:46 2025 -0400"
      },
      "message": "Use rules_shell in tests (#957)\n\nThis is required for testing with bazel @ HEAD"
    },
    {
      "commit": "f28a4729f5bb664863e081c0aa3ec1a0ce2a4f0d",
      "tree": "f877e3e5a422e284983dd632a0b3ef4d0127e71e",
      "parents": [
        "c590e619313f3227c06541b00deb6074680b8922"
      ],
      "author": {
        "name": "Keith Smiley",
        "email": "keithbsmiley@gmail.com",
        "time": "Wed Jun 11 14:50:07 2025 -0700"
      },
      "committer": {
        "name": "Keith Smiley",
        "email": "keithbsmiley@gmail.com",
        "time": "Wed Jun 11 14:50:25 2025 -0700"
      },
      "message": "Use DefaultInfo directly\n\nRequired for compatibility with https://github.com/bazelbuild/bazel/issues/20183\n"
    },
    {
      "commit": "d6bdf762fc94a9875b2ca3ae4d50af43a93d5eba",
      "tree": "0d03972c88919526babc728d9b0f0f40c4798d59",
      "parents": [
        "c590e619313f3227c06541b00deb6074680b8922"
      ],
      "author": {
        "name": "Keith Smiley",
        "email": "keithbsmiley@gmail.com",
        "time": "Wed Jun 11 14:49:11 2025 -0700"
      },
      "committer": {
        "name": "Keith Smiley",
        "email": "keithbsmiley@gmail.com",
        "time": "Wed Jun 11 14:49:23 2025 -0700"
      },
      "message": "Use rules_shell in tests\n\nThis is required for testing with bazel @ HEAD\n"
    },
    {
      "commit": "c590e619313f3227c06541b00deb6074680b8922",
      "tree": "ee86a9226d9b47643fa152dcd6168cc9ea5e7345",
      "parents": [
        "106429fdbc6bc83b2f1da0c481c6bde8f456fa4f"
      ],
      "author": {
        "name": "Rilson Nascimento",
        "email": "ron.odnn@gmail.com",
        "time": "Wed Apr 30 08:24:17 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 30 11:24:17 2025 -0400"
      },
      "message": "Conditionally preserve file permissions when archiving through pkg_tar (#951)\n\n* preserve file permission through an option\n\n* fix parsing and handling of new preserve_mode argument\n\n* restore version\n\n* add tests\n\n* use an existing test file, as git does not preserve file perms\n\n* delete test file\n\n* cover windows testing\n\n* record test subject file perms\n\n* use pythonic elif\n\nCo-authored-by: Chuck Grindel \u003cchuck.grindel@gmail.com\u003e\n\n* buildifier\n\n* trim trailing whitespaces\n\n---------\n\nCo-authored-by: rnascimento \u003crnascimento@salesforce.com\u003e\nCo-authored-by: Chuck Grindel \u003cchuck.grindel@gmail.com\u003e"
    },
    {
      "commit": "106429fdbc6bc83b2f1da0c481c6bde8f456fa4f",
      "tree": "f40ee0b231e5bca7a073fc0231fb223f439f6816",
      "parents": [
        "e7083019d663b7ef03eea370995dd6c56f128c55",
        "84dbe441b3ab030bd73d4c8b1f16426f8cfe9ace"
      ],
      "author": {
        "name": "tonyaiuto",
        "email": "tony.aiuto@gmail.com",
        "time": "Thu Apr 10 23:01:31 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 10 23:01:31 2025 -0400"
      },
      "message": "pkg_tar: Fix #948: Don\u0027t add duplicate directory members to tar file when a symlink with the same path exists (#949)\n\nFixes #948.\n\nI\u0027ve modified the deduplication logic to account for the fact that\ndirectories must not have the same path as other types of files.\nPreviously, the paths `/lib` and `/lib/` would be treated differently.\n\nTwo test cases are included: one for symlinks preceding directories, and\none for directories preceding symlinks. In both cases, the first member\nis preserved and the second member with the same path is discarded as a\nduplicate."
    },
    {
      "commit": "e7083019d663b7ef03eea370995dd6c56f128c55",
      "tree": "6552e65df41e2fb92bd1bf76e6fba78c052fae2d",
      "parents": [
        "cd7e10846f97b5cb9b184c87b4ceaf2f1b4b5d3f",
        "5695833d592242b6c07a9f891c31b1461f23e019"
      ],
      "author": {
        "name": "tonyaiuto",
        "email": "tony.aiuto@gmail.com",
        "time": "Thu Apr 10 22:48:39 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 10 22:48:39 2025 -0400"
      },
      "message": "feat: support raw symlinks from declare_symlink() (#930)\n\nUsing the `ctx.actions.declare_symlink()` API, rules can create explicit\nsymlinks to arbitrary\npaths, which Bazel will keep as symlinks. The packaging logic treats\nthese\nas regular files, so tries to read through them and store the content\nthey point to. This\nis incorrect for two reasons: they are supposed to be left as symlinks\nand may be dangling\nsymlinks from the perspective of packaging.\n\nTo fix, introduce a new type of file entry: `raw_symlink`. These entries\nmean the `src` is\na symlink whose stored path should be stored into the destination\nverbatim, also as a symlink.\nSuch artifacts are identified using `File.is_symlink`, a Bazel 8+ API.\n\nWork towards https://github.com/bazelbuild/rules_pkg/issues/929"
    },
    {
      "commit": "84dbe441b3ab030bd73d4c8b1f16426f8cfe9ace",
      "tree": "6244457678d952104ea87989582e933aea7b5a8c",
      "parents": [
        "b74ae68dddf7e288ba5698e0ce7a1711fcb2ea50"
      ],
      "author": {
        "name": "Nick Guletskii",
        "email": "nick@nickguletskii.com",
        "time": "Sun Apr 06 19:16:05 2025 +0300"
      },
      "committer": {
        "name": "Nick Guletskii",
        "email": "nick@nickguletskii.com",
        "time": "Sun Apr 06 19:16:05 2025 +0300"
      },
      "message": "pkg_tar: Add a test that checks that symlinks won\u0027t shadow directories\n"
    },
    {
      "commit": "b74ae68dddf7e288ba5698e0ce7a1711fcb2ea50",
      "tree": "600977d06a33a012480ca4bf4870e4d638b81070",
      "parents": [
        "a1e30420cda60a3a8c606a7bde66b602ce607ca2"
      ],
      "author": {
        "name": "Nick Guletskii",
        "email": "nick@nickguletskii.com",
        "time": "Sun Apr 06 19:14:14 2025 +0300"
      },
      "committer": {
        "name": "Nick Guletskii",
        "email": "nick@nickguletskii.com",
        "time": "Sun Apr 06 19:14:14 2025 +0300"
      },
      "message": "pkg_tar: Fix issue #948: ignore directories shadowing a symlink\n"
    }
  ],
  "next": "a1e30420cda60a3a8c606a7bde66b602ce607ca2"
}
