Merge pull request #15173 from ywwry66/fix-brew-tests-tar
Don't save mac metadata/extended attributes for `brew bottle`
This commit is contained in:
commit
0d749b5db0
@ -231,23 +231,29 @@ module Homebrew
|
||||
system "/usr/bin/sudo", "--non-interactive", "/usr/sbin/purge"
|
||||
end
|
||||
|
||||
def self.setup_tar_and_args!(args, mtime)
|
||||
# Without --only-json-tab bottles are never reproducible
|
||||
default_tar_args = ["tar", [].freeze].freeze
|
||||
return default_tar_args unless args.only_json_tab?
|
||||
sig { returns(T::Array[String]) }
|
||||
def self.tar_args
|
||||
[].freeze
|
||||
end
|
||||
|
||||
# Ensure tar is set up for reproducibility.
|
||||
sig { params(mtime: String).returns(T::Array[String]) }
|
||||
def self.reproducible_gnutar_args(mtime)
|
||||
# Ensure gnu tar is set up for reproducibility.
|
||||
# https://reproducible-builds.org/docs/archives/
|
||||
gnutar_args = [
|
||||
[
|
||||
"--format", "pax", "--owner", "0", "--group", "0", "--sort", "name", "--mtime=#{mtime}",
|
||||
# Set exthdr names to exclude PID (for GNU tar <1.33). Also don't store atime and ctime.
|
||||
"--pax-option", "globexthdr.name=/GlobalHead.%n,exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime"
|
||||
].freeze
|
||||
end
|
||||
|
||||
# TODO: Refactor and move to extend/os
|
||||
return ["tar", gnutar_args].freeze if OS.linux? # rubocop:disable Homebrew/MoveToExtendOS
|
||||
sig { params(args: T.untyped, mtime: String).returns([String, T::Array[String]]) }
|
||||
def self.setup_tar_and_args!(args, mtime)
|
||||
# Without --only-json-tab bottles are never reproducible
|
||||
default_tar_args = ["tar", tar_args].freeze
|
||||
return default_tar_args unless args.only_json_tab?
|
||||
|
||||
# Use gnu-tar on macOS as it can be set up for reproducibility better than libarchive.
|
||||
# Use gnu-tar as it can be set up for reproducibility better than libarchive.
|
||||
begin
|
||||
gnu_tar = Formula["gnu-tar"]
|
||||
rescue FormulaUnavailableError
|
||||
@ -256,7 +262,7 @@ module Homebrew
|
||||
|
||||
ensure_formula_installed!(gnu_tar, reason: "bottling")
|
||||
|
||||
["#{gnu_tar.opt_bin}/gtar", gnutar_args].freeze
|
||||
["#{gnu_tar.opt_bin}/gtar", reproducible_gnutar_args(mtime)].freeze
|
||||
end
|
||||
|
||||
def self.formula_ignores(formula)
|
||||
@ -799,3 +805,5 @@ module Homebrew
|
||||
checksums
|
||||
end
|
||||
end
|
||||
|
||||
require "extend/os/dev-cmd/bottle"
|
||||
|
8
Library/Homebrew/extend/os/dev-cmd/bottle.rb
Normal file
8
Library/Homebrew/extend/os/dev-cmd/bottle.rb
Normal file
@ -0,0 +1,8 @@
|
||||
# typed: strict
|
||||
# frozen_string_literal: true
|
||||
|
||||
if OS.mac?
|
||||
require "extend/os/mac/dev-cmd/bottle"
|
||||
elsif OS.linux?
|
||||
require "extend/os/linux/dev-cmd/bottle"
|
||||
end
|
12
Library/Homebrew/extend/os/linux/dev-cmd/bottle.rb
Normal file
12
Library/Homebrew/extend/os/linux/dev-cmd/bottle.rb
Normal file
@ -0,0 +1,12 @@
|
||||
# typed: true
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Homebrew
|
||||
sig { params(args: T.untyped, mtime: String).returns([String, T::Array[String]]) }
|
||||
def self.setup_tar_and_args!(args, mtime)
|
||||
# Without --only-json-tab bottles are never reproducible
|
||||
return ["tar", tar_args].freeze unless args.only_json_tab?
|
||||
|
||||
["tar", reproducible_gnutar_args(mtime)].freeze
|
||||
end
|
||||
end
|
9
Library/Homebrew/extend/os/mac/dev-cmd/bottle.rb
Normal file
9
Library/Homebrew/extend/os/mac/dev-cmd/bottle.rb
Normal file
@ -0,0 +1,9 @@
|
||||
# typed: true
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Homebrew
|
||||
sig { returns(T::Array[String]) }
|
||||
def self.tar_args
|
||||
["--no-mac-metadata", "--no-acls", "--no-xattrs"].freeze
|
||||
end
|
||||
end
|
Loading…
x
Reference in New Issue
Block a user