Skip to content

Commit

Permalink
Don't save mac metadata/extended attributes for brew bottle
Browse files Browse the repository at this point in the history
This commit includes `--no-mac-metadata` `--no-acls` and `--no-xattrs`
in `default_tar_args` for `brew bottle` command.

Although `default_tar_args` is only active when `--only-json-tab` is
not passed, in which case we don't require reproducible bottles, it is
nonetheless beneficial to "regularize" tarball creation. In
particular, this resolves a sporadic `brew tests
--only=dev-cmd/bottle:20` failure (see
https://github.com/orgs/Homebrew/discussions/4376 and
Homebrew#14997).

Furthermore, with `gnu tar`, `--no-acls` and `--no-xattrs` are default
flags. As for "mac metadata", although I couldn't find official
documentation, this post (https://superuser.com/a/61188) shares some
info:
- Resource forks (resource forks have been extended attributes since 10.4)
  - Custom icons set in Finder and the images of Icon\r files
  - Metadata in PSD files
  - Objects stored in scpt files, AppleScript Editor window state, descriptions of scripts
- Information about aliases (aliases stop working if extended attributes are removed)
- Quarantine status or source URLs of files downloaded from the internet
- Spotlight comments
- Encoding of files saved with TextEdit
- Caret position of files opened with TextMate
- Skim notes

None of these is supposed to be in the bottle I believe.
  • Loading branch information
ywwry66 committed Apr 10, 2023
1 parent 7ea4726 commit dff5839
Showing 1 changed file with 4 additions and 1 deletion.
5 changes: 4 additions & 1 deletion Library/Homebrew/dev-cmd/bottle.rb
Original file line number Diff line number Diff line change
Expand Up @@ -232,8 +232,11 @@ def self.sudo_purge
end

def self.setup_tar_and_args!(args, mtime)
# TODO: Refactor and move to extend/os
# Without --only-json-tab bottles are never reproducible
default_tar_args = ["tar", [].freeze].freeze
tar_args =
OS.mac? ? ["--no-mac-metadata", "--no-acls", "--no-xattrs"].freeze : ["--no-acls", "--no-xattrs"].freeze # rubocop:disable Homebrew/MoveToExtendOS
default_tar_args = ["tar", tar_args].freeze
return default_tar_args unless args.only_json_tab?

# Ensure tar is set up for reproducibility.
Expand Down

0 comments on commit dff5839

Please sign in to comment.