diff options
| author | Xu Cheng | 2016-02-10 19:29:40 +0800 |
|---|---|---|
| committer | Xu Cheng | 2016-02-10 21:01:12 +0800 |
| commit | e5b6f79b221ecf539ff9ade285667ca729e6c7da (patch) | |
| tree | 992c9bd49480029c9fc085558a67682b37203c8a /Library/Homebrew/cmd | |
| parent | 2facb5166cec53ed6c45ce20f7e61c03aacb8765 (diff) | |
| download | brew-e5b6f79b221ecf539ff9ade285667ca729e6c7da.tar.bz2 | |
bottle: do not follow symlink when setting mtime
Also set atime to mtime, which seems to be a more common practice.
Fixes Homebrew/homebrew#49007
Closes Homebrew/homebrew#49027.
Signed-off-by: Xu Cheng <xucheng@me.com>
Diffstat (limited to 'Library/Homebrew/cmd')
| -rw-r--r-- | Library/Homebrew/cmd/bottle.rb | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/Library/Homebrew/cmd/bottle.rb b/Library/Homebrew/cmd/bottle.rb index 594058df6..59e122f41 100644 --- a/Library/Homebrew/cmd/bottle.rb +++ b/Library/Homebrew/cmd/bottle.rb @@ -209,11 +209,20 @@ module Homebrew tab.time = nil tab.write - keg.find {|k| File.utime(File.atime(k), tab.source_modified_time, k) } + keg.find do |file| + if file.symlink? + # Ruby does not support `File.lutime` yet. + # Shellout using `touch` to change modified time of symlink itself. + system "/usr/bin/touch", "-h", + "-t", tab.source_modified_time.strftime("%Y%m%d%H%M.%S"), file + else + file.utime(tab.source_modified_time, tab.source_modified_time) + end + end cd cellar do safe_system "tar", "cf", tar_path, "#{f.name}/#{f.pkg_version}" - File.utime(File.atime(tar_path), tab.source_modified_time, tar_path) + tar_path.utime(tab.source_modified_time, tab.source_modified_time) relocatable_tar_path = "#{f}-bottle.tar" mv tar_path, relocatable_tar_path # Use gzip, faster to compress than bzip2, faster to uncompress than bzip2 |
