)]}'
{
  "log": [
    {
      "commit": "01446201fd8e758267f4e1abd9727926655110b7",
      "tree": "a7e7870bb0fe6bc4cb6a7f94cf0b1dacd7781878",
      "parents": [
        "ad778d2f59b297486933936242cedbb0b5521d8d"
      ],
      "author": {
        "name": "Gerrit Renker",
        "email": "grrtrr@users.noreply.github.com",
        "time": "Wed Oct 14 13:53:21 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 13:53:21 2026 -0400"
      },
      "message": "[TarFile]: normalize also concatenated paths (#1072) (#1073)\n\n* [TarFile]: normalize also concatenated paths (#1072)\n\nThe result of `normalize_path()` may be a non-normalized path,\ncontaining e.g. `../`, as a result of prepending `self.directory`.\n\nAvoid the problem by using `normpath()` on the result.\nResolves #1072.\n\n* Fix merge errors\n\n* Fix merge noise\n\n* Include from previous commit\n\n* Address reviewer feedback - previous fix broke the case of leading \u0027./\u0027"
    },
    {
      "commit": "ad778d2f59b297486933936242cedbb0b5521d8d",
      "tree": "36cfcc6579f2303e0850e705f111c0234d342862",
      "parents": [
        "efd373d65fb61252dfa6843d76d8893e69527233",
        "d4999c711b8107af010ca7ffa27211a3b3868334"
      ],
      "author": {
        "name": "tonyaiuto",
        "email": "tony.aiuto@gmail.com",
        "time": "Fri Oct 09 22:37:36 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 09 22:37:36 2026 -0400"
      },
      "message": "fix(rpm): support rpmbuild 4.20+ per-package build directory (#1084)\n\nRPM 4.20 introduced a per-package build directory and redefined\n`%{_builddir}` accordingly (rpm-software-management/rpm#2885).\n\nAs a result, the paths generated by `rules_pkg` for `%install`, which\nwere relative to the previous working directory, no longer resolve:\n```text\ncp: cannot stat \u0027tests/testdata/a.ar\u0027: No such file or directory\n```\n\nThis change makes the generated paths independent of `rpmbuild`\u0027s\nworking directory:\n- `%install` copies inputs from `%{_topdir}/BUILD`, where `make_rpm.py`\nstages them,\n- `%files -f` receives an absolute path,\n- the same applies to regular files and tree artifact inputs.\n\nThis also removes the debuginfo-specific `../` path variant introduced\nin #1006, since the same paths now work across RPM versions.\n\nThe RPM test spec relied on the working directory as well and gets the\nsame anchor.\n\nRPM 4.20 also makes `buildsubdir .` usable again, while the `BUILD_SUB`\npath used for RPM 4.18 and 4.19 is no longer reachable from the new\nper-package build directory.\n\nDebuginfo autodetection therefore selects:\n- \"centos\" for RPM versions before 4.18 and from 4.20 onward,\n- \"fedora\" for RPM 4.18 and 4.19.\n\nValidated with `//tests/rpm/...`, `//toolchains/...`, and\n`//pkg/legacy/tests/rpm/...` against RPM 4.18.2 and 6.0.1, CI covering\nRPM 4.17.\n\nFixes #938."
    },
    {
      "commit": "efd373d65fb61252dfa6843d76d8893e69527233",
      "tree": "a080b45ef515af44d00f9ba7b22106950f8b8ce4",
      "parents": [
        "1b2295d38b60c4e1013a6d3ddf0e5c2be2f876f2",
        "ec4ee852f75b4709a0e2a5ac81cd4cf6750a2e12"
      ],
      "author": {
        "name": "tonyaiuto",
        "email": "tony.aiuto@gmail.com",
        "time": "Thu Oct 08 20:21:24 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 08 20:21:24 2026 -0400"
      },
      "message": "Do not write add / to .deb ar file names. (#1085)\n\nDo not write add / to .deb ar file names.\nThis makes it compatible with `dpkg-deb` and less incompatible with BSD\n`ar`.\n\n- The trailing / is the SysV/GNU ar way to end a name. GNU ar writes\nname/ padded with spaces. BSD ar writes name padded with spaces and has\nno terminator. The / lets SysV names contain spaces.\n- On macOS, ar is BSD ar, which doesn\u0027t know the SysV convention and\nprints the slash as part of the name. GNU `ar tv` on Linux should strip\nit and show debian-binary.\n- `dpkg` tolerates it, but doesn\u0027t write it. deb(5) says member names\nmay end in / and `dpkg` has accepted that since about 1.15.6. `dpkg-deb`\nitself writes names with no slash, so our output is not canonical."
    },
    {
      "commit": "ec4ee852f75b4709a0e2a5ac81cd4cf6750a2e12",
      "tree": "a080b45ef515af44d00f9ba7b22106950f8b8ce4",
      "parents": [
        "1b2295d38b60c4e1013a6d3ddf0e5c2be2f876f2"
      ],
      "author": {
        "name": "tonyaiuto",
        "email": "tony@aiuto.dev",
        "time": "Tue Oct 06 17:30:04 2026 -0400"
      },
      "committer": {
        "name": "tonyaiuto",
        "email": "tony@aiuto.dev",
        "time": "Tue Oct 06 17:30:04 2026 -0400"
      },
      "message": "do not write deb components with trailing /\n"
    },
    {
      "commit": "d4999c711b8107af010ca7ffa27211a3b3868334",
      "tree": "e395f3402f85fb012c6b58036feb74c6f69aa7de",
      "parents": [
        "1b2295d38b60c4e1013a6d3ddf0e5c2be2f876f2"
      ],
      "author": {
        "name": "Régis Desgroppes",
        "email": "rdesgroppes@gmail.com",
        "time": "Tue Oct 06 02:12:36 2026 +0200"
      },
      "committer": {
        "name": "Régis Desgroppes",
        "email": "rdesgroppes@gmail.com",
        "time": "Tue Oct 06 14:54:31 2026 +0200"
      },
      "message": "fix(rpm): support rpmbuild 4.20+ per-package build directory\n\nRPM 4.20 introduced a per-package build directory and redefined\n`%{_builddir}` accordingly (rpm-software-management/rpm#2885).\n\nAs a result, the paths generated by `rules_pkg` for `%install`, which\nwere relative to the previous working directory, no longer resolve:\n```text\ncp: cannot stat \u0027tests/testdata/a.ar\u0027: No such file or directory\n```\n\nThis change makes the generated paths independent of `rpmbuild`\u0027s\nworking directory:\n- `%install` copies inputs from `%{_topdir}/BUILD`, where `make_rpm.py`\n  stages them,\n- `%files -f` receives an absolute path,\n- the same applies to regular files and tree artifact inputs.\n\nThis also removes the debuginfo-specific `../` path variant introduced\nin #1006, since the same paths now work across RPM versions.\n\nThe legacy RPM test spec relied on the working directory as well and\ngets the same anchor.\n\nRPM 4.20 also makes `buildsubdir .` usable again, while the `BUILD_SUB`\npath used for RPM 4.18 and 4.19 is no longer reachable from the new\nper-package build directory.\n\nDebuginfo autodetection therefore selects:\n- \"centos\" for RPM versions before 4.18 and from 4.20 onward,\n- \"fedora\" for RPM 4.18 and 4.19.\n\nValidated with `//tests/rpm/...`, `//toolchains/...`, and\n`//pkg/legacy/tests/rpm/...` against RPM 4.18.2 and 6.0.1, CI covering\nRPM 4.17.\n\nFixes #938.\n"
    },
    {
      "commit": "1b2295d38b60c4e1013a6d3ddf0e5c2be2f876f2",
      "tree": "c10407df73406acd245b07209b21e8f77cdf91c8",
      "parents": [
        "4d04b6cb28e65c52af84a0e80808e883e581a43e"
      ],
      "author": {
        "name": "Joseph Gette",
        "email": "jgettepost@gmail.com",
        "time": "Thu Oct 01 16:31:09 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 10:31:09 2026 -0400"
      },
      "message": "fix(install): follow Windows runfiles junctions when copying files (#1076)\n\n* fix(install): follow Windows runfiles junctions when copying files\n\n--enable_runfiles on Windows creates directory junctions for file runfiles.\nJunctions cannot point at files, so shutil.copyfile fails with Permission denied.\nResolve the reparse point before copying.\n\n* Use os.path.realpath instead of platform-specific junction resolution\n\nSuggested by @alopezz: realpath resolves reparse points on Windows\nand symlinks on Unix, removing the need for sys.platform conditional\nand os.readlink try/except."
    },
    {
      "commit": "4d04b6cb28e65c52af84a0e80808e883e581a43e",
      "tree": "db371fe22afece5c7e0802a70fd04864eaffc0c6",
      "parents": [
        "3360acbff09bb48311d4bd20f8d9859432e44092"
      ],
      "author": {
        "name": "Ben Plotnick",
        "email": "bplotnick@netflix.com",
        "time": "Wed Sep 30 20:58:58 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 30 23:58:58 2026 -0400"
      },
      "message": "Add extra_control_file attr to pkg_deb (#1078)\n\n* Add extra_control_file attr to pkg_deb\n\n* Clarify extra control file syntax responsibility"
    },
    {
      "commit": "3360acbff09bb48311d4bd20f8d9859432e44092",
      "tree": "c040c1b2676e81364a90eaf68271d33ee0f23801",
      "parents": [
        "8871562aabc93a4b9e00557eecffb1fd87aa4a47"
      ],
      "author": {
        "name": "Hugo Beauzée-Luyssen",
        "email": "hugo.beauzee@datadoghq.com",
        "time": "Wed Sep 30 18:06:11 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 30 12:06:11 2026 -0400"
      },
      "message": "pkg_deb: add installed_size_file attribute (#1083)\n\nLets installed_size be supplied from a file, so callers can compute\nit themselves."
    },
    {
      "commit": "8871562aabc93a4b9e00557eecffb1fd87aa4a47",
      "tree": "79985bee97ed1f09b5cba71afcebfe43b3835e50",
      "parents": [
        "b6b085834416586521d8207cac30f92c0c51e09e"
      ],
      "author": {
        "name": "Tony Aiuto",
        "email": "tony.aiuto@datadoghq.com",
        "time": "Tue Aug 18 09:30:12 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 18 09:30:12 2026 -0400"
      },
      "message": "Drop centos7 from CI (#1077)\n\n* drop the centos test runs. No longer supported by buildkite"
    },
    {
      "commit": "b6b085834416586521d8207cac30f92c0c51e09e",
      "tree": "cc35a120020fbf503f3decd35630a8944b8283c8",
      "parents": [
        "091b29f816cfa494b424da73047ba999d27f2d0d"
      ],
      "author": {
        "name": "Jacob Shirley",
        "email": "s.jacob@matx.com",
        "time": "Tue Aug 18 04:23:27 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 17 23:23:27 2026 -0400"
      },
      "message": "pkg_install: make callable from a symbolic macro (#1069)\n\n`pkg_install` wires its internal `_pkg_install_script` rule to a\n`py_binary` via the script\u0027s *output filename*:\n\n    py_binary(\n        name \u003d name,\n        srcs \u003d [\":\" + name + \"_install_script\"],\n        main \u003d name + \"_install_script.py\",   # \u003c-- file-name-as-label\n        ...\n    )\n\n`_pkg_install_script` declared that file at analysis time via\n`ctx.actions.declare_file(...)`, so the file `\u003cname\u003e_install_script.py`\nexisted only as an artifact in the rule\u0027s `DefaultInfo` — no\nloading-time package label was ever registered for it. Legacy macros\ntolerated the file-name-as-label shortcut, but in a symbolic macro,\nlabel references must resolve to real loading-time targets in scope.\nBazel errors with:\n\n    no such target \u0027//pkg:\u003cname\u003e_install_script.py\u0027: target\n    \u0027\u003cname\u003e_install_script.py\u0027 not declared in package \u0027\u003cpkg\u003e\u0027\n    (did you mean \u003cname\u003e_install_script?)\n\nPromote the script file to a predeclared output via `attr.output()`.\nThe caller passes `out \u003d \u003cname\u003e_install_script.py`, which registers\n`//pkg:\u003cname\u003e_install_script.py` as a real package label at loading\ntime. `py_binary.main` can then resolve that label in any macro\nscope, and the rule impl reads the file through `ctx.outputs.out`\ninstead of `ctx.actions.declare_file`. No change to the user-facing\n`pkg_install` API."
    },
    {
      "commit": "091b29f816cfa494b424da73047ba999d27f2d0d",
      "tree": "9fdb0ee1ba7f68ac61d13939cda1fede36c0b46b",
      "parents": [
        "22b54a36730453bf03de28ec4ad4bf15eed3fb59"
      ],
      "author": {
        "name": "dandersson",
        "email": "dandersson@users.noreply.github.com",
        "time": "Tue Aug 18 05:21:26 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 17 23:21:26 2026 -0400"
      },
      "message": "pkg_deb: Add `installed_size` attribute (#1068)\n\n* docs: Update reference docs version to 1.3.0\n\n`docs/latest.md` seems to have not been regenerated when the version was\nbumped to 1.3.0 in `c62b199`. Regenerate to reflect the correct version\nnumber.\n\n* pkg_deb: Add `installed_size` attribute\n\nThe `Installed-Size` control field was supported by `make_deb.py` (via\nthe auto-generated --`installed_size` flag), but there was no\ncorresponding attribute on the `pkg_deb` Bazel rule to pass a value\nthrough.\n\nAdd an `installed_size` `attr.string` to `pkg_deb_impl` and emit\n`--installed_size` to the `make_deb` action args."
    },
    {
      "commit": "22b54a36730453bf03de28ec4ad4bf15eed3fb59",
      "tree": "843c9df8e406440986496cab1ec8c1ea7d5163e9",
      "parents": [
        "c5854cdd32673f62c848964ff3117cac5e6aa563"
      ],
      "author": {
        "name": "Xiaoyi",
        "email": "ashi009@users.noreply.github.com",
        "time": "Fri May 15 05:07:45 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 14 15:07:45 2026 -0600"
      },
      "message": "fix(tar): drop truthy-string default on store_true argparse flags (#1065)\n\nThe `--preserve_mode` and `--preserve_mtime` flags in\n`pkg/private/tar/build_tar.py` were declared with `default\u003d\u0027False\u0027` (a\nstring, which is truthy) combined with `action\u003d\u0027store_true\u0027`. When the\nflags are not passed on the command line, argparse uses the default\nverbatim instead of the boolean `False` that `store_true` would produce,\nso `options.preserve_mode` and `options.preserve_mtime` end up as the\nstring `\u0027False\u0027` — truthy under any natural truthy check.\n\nrules_pkg\u0027s own use happens to be safe because the check is\n`if self.preserve_mode is True`, but the typo is a foot-gun for anyone\ncopying the pattern.\n\nDrop the bogus default — `action\u003d\u0027store_true\u0027` already defaults to\nboolean `False`.\n\nFixes #1064"
    },
    {
      "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"
    }
  ],
  "next": "359ea4627a28704cb25ce8200c128b39b02868b0"
}
