From b4974ff19b4c4c93dfe59ee80b73afce07e42570 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Thu, 30 Jul 2026 18:24:37 +0200 Subject: [PATCH 1/4] Add arm64 Linux support to prebuilt ripunzip The `ripunzip_archive` repository rule downloaded a prebuilt ripunzip for the host platform, but the Linux branch was hardcoded to the amd64 deb, so on an arm64 Linux host it would fetch an x86 binary. Switch on `repository_ctx.os.arch` (mirroring the macOS branch) to select the arm64 deb, which ripunzip publishes for the pinned version. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: c6404a7a-35d7-4294-b3b6-9231ca15ef25 --- MODULE.bazel | 1 + misc/ripunzip/ripunzip.bzl | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index 24260271ecad..57a43361a11a 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -327,6 +327,7 @@ ripunzip_archive = use_repo_rule("//misc/ripunzip:ripunzip.bzl", "ripunzip_archi ripunzip_archive( name = "ripunzip", sha256_linux = "71482d7a7e4ea9176d5596161c49250c34b136b157c45f632b1111323fbfc0de", + sha256_linux_arm = "a282740ef376ff8dc0de3c589b7457598db15cc045b7daa688f15531612e0bbe", sha256_macos_arm = "604194ab13f0aba3972995d995f11002b8fc285c8170401fcd46655065df20c9", sha256_macos_intel = "65367b94fd579d93d46f2d2595cc4c9a60cfcf497e3c824f9d1a7b80fa8bd38a", sha256_windows = "ac3874075def2b9e5074a3b5945005ab082cc6e689e1de658da8965bc23e643e", diff --git a/misc/ripunzip/ripunzip.bzl b/misc/ripunzip/ripunzip.bzl index 2e707c267e24..faf42fa8199f 100644 --- a/misc/ripunzip/ripunzip.bzl +++ b/misc/ripunzip/ripunzip.bzl @@ -3,12 +3,22 @@ def _ripunzip_archive_impl(repository_ctx): url_prefix = "https://github.com/GoogleChrome/ripunzip/releases/download/v%s" % version build_file = Label("//misc/ripunzip:BUILD.ripunzip.bazel") if "linux" in repository_ctx.os.name: + arch = repository_ctx.os.arch + if arch in ("aarch64", "arm64"): + deb_arch = "arm64" + sha256 = repository_ctx.attr.sha256_linux_arm + canonical_id = "ripunzip-linux-arm" + else: + deb_arch = "amd64" + sha256 = repository_ctx.attr.sha256_linux + canonical_id = "ripunzip-linux" + # ripunzip only provides a deb package for Linux: we fish the binary out of it # a deb archive contains a data.tar.xz one which contains the files to be installed under usr/bin repository_ctx.download_and_extract( - url = "%s/ripunzip_%s-1_amd64.deb" % (url_prefix, version), - sha256 = repository_ctx.attr.sha256_linux, - canonical_id = "ripunzip-linux", + url = "%s/ripunzip_%s-1_%s.deb" % (url_prefix, version, deb_arch), + sha256 = sha256, + canonical_id = canonical_id, output = "deb", ) repository_ctx.extract( @@ -52,6 +62,7 @@ ripunzip_archive = repository_rule( attrs = { "version": attr.string(mandatory = True), "sha256_linux": attr.string(mandatory = True), + "sha256_linux_arm": attr.string(mandatory = True), "sha256_windows": attr.string(mandatory = True), "sha256_macos_intel": attr.string(mandatory = True), "sha256_macos_arm": attr.string(mandatory = True), From 343a8db4dac125f23245cdd07d53f825d89f9475 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Thu, 30 Jul 2026 18:26:01 +0200 Subject: [PATCH 2/4] Match aarch64 only for Linux arch, per bazel os.arch MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit repository_ctx.os.arch reports the lower-cased Java os.arch property, which is "aarch64" on Linux arm64 — same as the macOS branch below. Drop the redundant "arm64" alternative. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: c6404a7a-35d7-4294-b3b6-9231ca15ef25 --- misc/ripunzip/ripunzip.bzl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/ripunzip/ripunzip.bzl b/misc/ripunzip/ripunzip.bzl index faf42fa8199f..148c4dfbc7fe 100644 --- a/misc/ripunzip/ripunzip.bzl +++ b/misc/ripunzip/ripunzip.bzl @@ -4,7 +4,7 @@ def _ripunzip_archive_impl(repository_ctx): build_file = Label("//misc/ripunzip:BUILD.ripunzip.bazel") if "linux" in repository_ctx.os.name: arch = repository_ctx.os.arch - if arch in ("aarch64", "arm64"): + if arch == "aarch64": deb_arch = "arm64" sha256 = repository_ctx.attr.sha256_linux_arm canonical_id = "ripunzip-linux-arm" From 9f272f24f133c9d4801ce81ab5b404b06f482bc5 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Thu, 30 Jul 2026 18:27:59 +0200 Subject: [PATCH 3/4] Use consistent x64/arm64 arch suffixes for ripunzip sha attrs Rename the sha256 attributes (and matching canonical_ids) to a single scheme across all platforms: _x64 / _arm64. This replaces the inconsistent sha256_linux (no suffix), sha256_macos_intel and sha256_macos_arm. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: c6404a7a-35d7-4294-b3b6-9231ca15ef25 --- MODULE.bazel | 10 +++++----- misc/ripunzip/ripunzip.bzl | 30 +++++++++++++++--------------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index 57a43361a11a..e8d49c11bcb4 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -326,11 +326,11 @@ ripunzip_archive = use_repo_rule("//misc/ripunzip:ripunzip.bzl", "ripunzip_archi # go to https://github.com/GoogleChrome/ripunzip/releases to find latest version and corresponding sha256s ripunzip_archive( name = "ripunzip", - sha256_linux = "71482d7a7e4ea9176d5596161c49250c34b136b157c45f632b1111323fbfc0de", - sha256_linux_arm = "a282740ef376ff8dc0de3c589b7457598db15cc045b7daa688f15531612e0bbe", - sha256_macos_arm = "604194ab13f0aba3972995d995f11002b8fc285c8170401fcd46655065df20c9", - sha256_macos_intel = "65367b94fd579d93d46f2d2595cc4c9a60cfcf497e3c824f9d1a7b80fa8bd38a", - sha256_windows = "ac3874075def2b9e5074a3b5945005ab082cc6e689e1de658da8965bc23e643e", + sha256_linux_arm64 = "a282740ef376ff8dc0de3c589b7457598db15cc045b7daa688f15531612e0bbe", + sha256_linux_x64 = "71482d7a7e4ea9176d5596161c49250c34b136b157c45f632b1111323fbfc0de", + sha256_macos_arm64 = "604194ab13f0aba3972995d995f11002b8fc285c8170401fcd46655065df20c9", + sha256_macos_x64 = "65367b94fd579d93d46f2d2595cc4c9a60cfcf497e3c824f9d1a7b80fa8bd38a", + sha256_windows_x64 = "ac3874075def2b9e5074a3b5945005ab082cc6e689e1de658da8965bc23e643e", version = "2.0.4", ) diff --git a/misc/ripunzip/ripunzip.bzl b/misc/ripunzip/ripunzip.bzl index 148c4dfbc7fe..53f22c53e0a3 100644 --- a/misc/ripunzip/ripunzip.bzl +++ b/misc/ripunzip/ripunzip.bzl @@ -6,12 +6,12 @@ def _ripunzip_archive_impl(repository_ctx): arch = repository_ctx.os.arch if arch == "aarch64": deb_arch = "arm64" - sha256 = repository_ctx.attr.sha256_linux_arm - canonical_id = "ripunzip-linux-arm" + sha256 = repository_ctx.attr.sha256_linux_arm64 + canonical_id = "ripunzip-linux-arm64" else: deb_arch = "amd64" - sha256 = repository_ctx.attr.sha256_linux - canonical_id = "ripunzip-linux" + sha256 = repository_ctx.attr.sha256_linux_x64 + canonical_id = "ripunzip-linux-x64" # ripunzip only provides a deb package for Linux: we fish the binary out of it # a deb archive contains a data.tar.xz one which contains the files to be installed under usr/bin @@ -29,20 +29,20 @@ def _ripunzip_archive_impl(repository_ctx): elif "windows" in repository_ctx.os.name: repository_ctx.download_and_extract( url = "%s/ripunzip_v%s_x86_64-pc-windows-msvc.zip" % (url_prefix, version), - canonical_id = "ripunzip-windows", - sha256 = repository_ctx.attr.sha256_windows, + canonical_id = "ripunzip-windows-x64", + sha256 = repository_ctx.attr.sha256_windows_x64, output = "bin", ) elif "mac os" in repository_ctx.os.name: arch = repository_ctx.os.arch if arch == "x86_64": suffix = "x86_64-apple-darwin" - sha256 = repository_ctx.attr.sha256_macos_intel - canonical_id = "ripunzip-macos-intel" + sha256 = repository_ctx.attr.sha256_macos_x64 + canonical_id = "ripunzip-macos-x64" elif arch == "aarch64": suffix = "aarch64-apple-darwin" - sha256 = repository_ctx.attr.sha256_macos_arm - canonical_id = "ripunzip-macos-arm" + sha256 = repository_ctx.attr.sha256_macos_arm64 + canonical_id = "ripunzip-macos-arm64" else: fail("Unsupported macOS architecture: %s" % arch) repository_ctx.download_and_extract( @@ -61,10 +61,10 @@ ripunzip_archive = repository_rule( doc = "Downloads a prebuilt ripunzip binary for the host platform from https://github.com/GoogleChrome/ripunzip/releases", attrs = { "version": attr.string(mandatory = True), - "sha256_linux": attr.string(mandatory = True), - "sha256_linux_arm": attr.string(mandatory = True), - "sha256_windows": attr.string(mandatory = True), - "sha256_macos_intel": attr.string(mandatory = True), - "sha256_macos_arm": attr.string(mandatory = True), + "sha256_linux_x64": attr.string(mandatory = True), + "sha256_linux_arm64": attr.string(mandatory = True), + "sha256_windows_x64": attr.string(mandatory = True), + "sha256_macos_x64": attr.string(mandatory = True), + "sha256_macos_arm64": attr.string(mandatory = True), }, ) From 8aff07cdcf9eb8ace3dd71f1c0be759393a33312 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Thu, 30 Jul 2026 18:32:25 +0200 Subject: [PATCH 4/4] Fail explicitly on unsupported Linux architectures for ripunzip Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: c6404a7a-35d7-4294-b3b6-9231ca15ef25 --- misc/ripunzip/ripunzip.bzl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/misc/ripunzip/ripunzip.bzl b/misc/ripunzip/ripunzip.bzl index 53f22c53e0a3..5b049d901273 100644 --- a/misc/ripunzip/ripunzip.bzl +++ b/misc/ripunzip/ripunzip.bzl @@ -8,10 +8,12 @@ def _ripunzip_archive_impl(repository_ctx): deb_arch = "arm64" sha256 = repository_ctx.attr.sha256_linux_arm64 canonical_id = "ripunzip-linux-arm64" - else: + elif arch in ("x86_64", "amd64"): deb_arch = "amd64" sha256 = repository_ctx.attr.sha256_linux_x64 canonical_id = "ripunzip-linux-x64" + else: + fail("Unsupported Linux architecture: %s" % arch) # ripunzip only provides a deb package for Linux: we fish the binary out of it # a deb archive contains a data.tar.xz one which contains the files to be installed under usr/bin