Fix ZIP volume label specs on macOS 27 #24313

Closed
p-linnane opened 8:58am on October 21, 2026 wanted to merge 50 Ξ” into homebrew/brew main from
zip-volume-label-specs

Pull Request Overview

  • Opened on October 21, 2026
  • Status Closed
  • Commit count 1 with first commit October 21, 2026

Total Delta

50 Total Diff Delta

Open Days

Open 15 weekdays

Test Delta

0 Diff Delta in Test Files
Breakdown by Phase

How long has this pull request spent in each phase of its lifecycle?

Fraction of total time Business days Phase
 
0 days Authoring 1 commit before pull request opened for review
 
0 days Awaiting first review

Total time for pull request 0 business days from first commit to closed PR

Author avatar

Fix ZIP volume label specs on macOS 27

macOS 27's unzip refuses to extract a symlink member whose target is absolute or escapes the destination and exits 2, so the volume label examples that archived such a symlink fail there before reaching the fallback they test. Plant the same-named symlink in unpack_dir instead so both examples keep guarding the move by basename and the symlink unlink on every macOS version. brew tests --only=unpack_strategy/zip on macOS 27 reproduces the failures.



  • [x] Have you followed our Contributing guidelines?

  • [x] Have you checked for other open Pull Requests for the same change?

  • [x] Have you explained what your changes do? Performance claims (e.g. "this is faster") must include brew benchmark results.

  • [x] Have you explained why you'd like these changes included, not just what they do?

  • [x] For bug fixes, have you given step-by-step brew commands to reproduce the bug?

  • [ ] Have you written new tests (excluding integration tests)? Here's an example.

  • [x] Have you successfully run brew lgtm (style, typechecking and tests) locally?



  • [x] I did not use AI/LLM to create this PR, or I disclosed the tool/model below and reviewed its output; I did not attribute commits to AI and will answer maintainer questions and review comments myself without AI/LLM.

Claude Code (Opus 5.5) found the cause by running scratch ZIP fixtures through /usr/bin/unzip, ditto and a direct symlinkat call, then wrote the change. It checked that both examples fail on main and pass with the change, that they still fail when either protection in extend/os/mac/unpack_strategy/zip.rb is removed and that brew lgtm passes.


Comments Threads Pending Resolution

MikeMcQuaid reviewed and approved this work on October 21, 2026
MikeMcQuaid left a comment

Thanks!

Resolved Comment Threads

No resolved comments have been left on this PR.