diff options
| author | Mike McQuaid | 2016-06-01 08:46:33 +0100 |
|---|---|---|
| committer | Mike McQuaid | 2016-06-01 08:46:33 +0100 |
| commit | a9abbab9175379d990d49d06341c14579db92bb2 (patch) | |
| tree | e5fc53015f52da7bb065ba838cb1b7f04c116add /Library/Homebrew/cmd | |
| parent | 8486f6e04d46323e3e17a71c4c8b3ce948d35bae (diff) | |
| download | brew-a9abbab9175379d990d49d06341c14579db92bb2.tar.bz2 | |
Move HOMEBREW_CACHE to ~/Library/Caches (#292)
* cleanup: accept cache as an argument.
* config: move default HOMEBREW_CACHE to ~/Library.
* brew.1: document new default Homebrew cache.
* update-report: migrate legacy Homebrew cache.
Diffstat (limited to 'Library/Homebrew/cmd')
| -rw-r--r-- | Library/Homebrew/cmd/update-report.rb | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/Library/Homebrew/cmd/update-report.rb b/Library/Homebrew/cmd/update-report.rb index 9339a63d9..e11cd647b 100644 --- a/Library/Homebrew/cmd/update-report.rb +++ b/Library/Homebrew/cmd/update-report.rb @@ -2,6 +2,7 @@ require "formula_versions" require "migrator" require "formulary" require "descriptions" +require "cleanup" module Homebrew def update_preinstall_header @@ -69,6 +70,8 @@ module Homebrew updated = true end + migrate_legacy_cache_if_necessary + if !updated if !ARGV.include?("--preinstall") && !ENV["HOMEBREW_UPDATE_FAILED"] puts "Already up-to-date." @@ -101,6 +104,52 @@ module Homebrew ENV["HOMEBREW_UPDATE_BEFORE_HOMEBREW_HOMEBREW_CORE"] = revision ENV["HOMEBREW_UPDATE_AFTER_HOMEBREW_HOMEBREW_CORE"] = revision end + + def migrate_legacy_cache_if_necessary + legacy_cache = Pathname.new "/Library/Caches/Homebrew" + return if HOMEBREW_CACHE.to_s == legacy_cache.to_s + return unless legacy_cache.directory? + return unless legacy_cache.readable_real? + + migration_attempted_file = legacy_cache/".migration_attempted" + return if migration_attempted_file.exist? + + return unless legacy_cache.writable_real? + FileUtils.touch migration_attempted_file + + # Cleanup to avoid copying files unnecessarily + ohai "Cleaning up #{legacy_cache}..." + Cleanup.cleanup_cache legacy_cache + + # This directory could have been compromised if it's world-writable/ + # a symlink/owned by another user so don't copy files in those cases. + return if legacy_cache.world_writable? + return if legacy_cache.symlink? + return if !legacy_cache.owned? && legacy_cache.lstat.uid != 0 + + ohai "Migrating #{legacy_cache} to #{HOMEBREW_CACHE}..." + HOMEBREW_CACHE.mkpath + legacy_cache.cd do + legacy_cache.entries.each do |f| + next if [".", "..", ".migration_attempted"].include? "#{f}" + begin + FileUtils.cp_r f, HOMEBREW_CACHE + rescue + @migration_failed ||= true + end + end + end + + if @migration_failed + opoo <<-EOS.undent + Failed to migrate #{legacy_cache} to + #{HOMEBREW_CACHE}. Please do so manually. + EOS + else + ohai "Deleting #{legacy_cache}..." + FileUtils.rm_rf legacy_cache + end + end end class Reporter |
