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 7, 2023
1 parent 401a384 commit 009d3b3
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion Library/Homebrew/dev-cmd/bottle.rb
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ def self.sudo_purge

def self.setup_tar_and_args!(args, mtime)
# Without --only-json-tab bottles are never reproducible
default_tar_args = ["tar", [].freeze].freeze
default_tar_args = ["tar", ["--no-mac-metadata", "--no-acls", "--no-xattrs"].freeze].freeze
return default_tar_args unless args.only_json_tab?

# Ensure tar is set up for reproducibility.
Expand Down

0 comments on commit 009d3b3

Please sign in to comment.