aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorMike McQuaid2016-11-06 17:58:24 +0000
committerMike McQuaid2016-11-06 17:58:24 +0000
commitb8647778ee2d9ea7bc5a6c3cd7a5812c7d7ea9c8 (patch)
tree03c9d0e2b04d42501a66455ce24d34fbfb835583 /Library
parentf46e0032bffffece8e72ffffdb28ac0b1ea7c014 (diff)
parentce2b11fd656e85a2cd73f45b4ac25fd34b1599cf (diff)
downloadbrew-b8647778ee2d9ea7bc5a6c3cd7a5812c7d7ea9c8.tar.bz2
Merge remote-tracking branch 'origin/master' into HEAD
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/brew.sh19
-rw-r--r--Library/Homebrew/cmd/install.rb23
-rw-r--r--Library/Homebrew/cmd/update-report.rb4
-rw-r--r--Library/Homebrew/dev-cmd/bottle.rb2
-rw-r--r--Library/Homebrew/diagnostic.rb10
-rw-r--r--Library/Homebrew/exceptions.rb58
-rw-r--r--Library/Homebrew/extend/os/mac/diagnostic.rb54
-rw-r--r--Library/Homebrew/extend/os/mac/utils/bottles.rb1
-rw-r--r--Library/Homebrew/formulary.rb20
-rw-r--r--Library/Homebrew/os.rb5
-rw-r--r--Library/Homebrew/os/mac/xcode.rb22
-rw-r--r--Library/Homebrew/software_spec.rb2
12 files changed, 162 insertions, 58 deletions
diff --git a/Library/Homebrew/brew.sh b/Library/Homebrew/brew.sh
index f3bb605bb..8a6ceff8f 100644
--- a/Library/Homebrew/brew.sh
+++ b/Library/Homebrew/brew.sh
@@ -296,6 +296,13 @@ source "$HOMEBREW_LIBRARY/Homebrew/utils/analytics.sh"
setup-analytics
report-analytics-screenview-command
+# Let user know we're still updating Homebrew if brew update --preinstall
+# exceeds 3 seconds.
+update-preinstall-timer() {
+ sleep 3
+ echo 'Updating Homebrew...' >&2
+}
+
update-preinstall() {
[[ -z "$HOMEBREW_HELP" ]] || return
[[ -z "$HOMEBREW_NO_AUTO_UPDATE" ]] || return
@@ -306,7 +313,19 @@ update-preinstall() {
if [[ "$HOMEBREW_COMMAND" = "install" || "$HOMEBREW_COMMAND" = "upgrade" || "$HOMEBREW_COMMAND" = "tap" ]]
then
+ if [[ -z "$HOMEBREW_VERBOSE" ]]
+ then
+ update-preinstall-timer &
+ timer_pid=$!
+ fi
+
brew update --preinstall
+
+ if [[ -n "$timer_pid" ]]
+ then
+ kill "$timer_pid" 2>/dev/null
+ wait "$timer_pid" 2>/dev/null
+ fi
fi
# If brew update --preinstall did a migration then export the new locations.
diff --git a/Library/Homebrew/cmd/install.rb b/Library/Homebrew/cmd/install.rb
index 0867e893a..16639c4aa 100644
--- a/Library/Homebrew/cmd/install.rb
+++ b/Library/Homebrew/cmd/install.rb
@@ -142,6 +142,7 @@ module Homebrew
msg = "#{current.full_name}-#{current.installed_version} already installed"
unless current.linked_keg.symlink? || current.keg_only?
msg << ", it's just not linked"
+ puts "You can link formula with `brew link #{f}`"
end
opoo msg
elsif f.migration_needed? && !ARGV.force?
@@ -222,25 +223,12 @@ module Homebrew
def check_development_tools
checks = Diagnostic::Checks.new
- all_development_tools_checks = checks.development_tools_checks +
- checks.fatal_development_tools_checks
- all_development_tools_checks.each do |check|
+ checks.fatal_development_tools_checks.each do |check|
out = checks.send(check)
next if out.nil?
- if checks.fatal_development_tools_checks.include?(check)
- odie out
- else
- opoo out
- end
+ ofail out
end
- end
-
- def check_macports
- return if MacOS.macports_or_fink.empty?
-
- opoo "It appears you have MacPorts or Fink installed."
- puts "Software installed with other package managers causes known problems for"
- puts "Homebrew. If a formula fails to build, uninstall MacPorts/Fink and try again."
+ exit 1 if Homebrew.failed?
end
def check_cellar
@@ -282,8 +270,5 @@ module Homebrew
# another formula. In that case, don't generate an error, just move on.
rescue CannotInstallFormulaError => e
ofail e.message
- rescue BuildError
- check_macports
- raise
end
end
diff --git a/Library/Homebrew/cmd/update-report.rb b/Library/Homebrew/cmd/update-report.rb
index 72dcc293d..9d096c4cb 100644
--- a/Library/Homebrew/cmd/update-report.rb
+++ b/Library/Homebrew/cmd/update-report.rb
@@ -415,7 +415,7 @@ class Reporter
# This means it is a Cask
if report[:DC].include? full_name
- next unless (HOMEBREW_REPOSITORY/"Caskroom"/name).exist?
+ next unless (HOMEBREW_PREFIX/"Caskroom"/name).exist?
new_tap = Tap.fetch(new_tap_name)
new_tap.install unless new_tap.installed?
ohai "#{name} has been moved to Homebrew.", <<-EOS.undent
@@ -442,7 +442,7 @@ class Reporter
new_tap = Tap.fetch(new_tap_name)
# For formulae migrated to cask: Auto-install cask or provide install instructions.
if new_tap_name == "caskroom/cask"
- if new_tap.installed? && (HOMEBREW_REPOSITORY/"Caskroom").directory?
+ if new_tap.installed? && (HOMEBREW_PREFIX/"Caskroom").directory?
ohai "#{name} has been moved to Homebrew-Cask."
ohai "brew uninstall --force #{name}"
system HOMEBREW_BREW_FILE, "uninstall", "--force", name
diff --git a/Library/Homebrew/dev-cmd/bottle.rb b/Library/Homebrew/dev-cmd/bottle.rb
index b1a3ebb43..7e98f2ebb 100644
--- a/Library/Homebrew/dev-cmd/bottle.rb
+++ b/Library/Homebrew/dev-cmd/bottle.rb
@@ -251,6 +251,8 @@ module Homebrew
relocatable = false if keg_contain?(cellar, keg, ignores)
if prefix != prefix_check
relocatable = false if keg_contain_absolute_symlink_starting_with?(prefix, keg)
+ relocatable = false if keg_contain?("#{prefix}/etc", keg, ignores)
+ relocatable = false if keg_contain?("#{prefix}/var", keg, ignores)
end
skip_relocation = relocatable && !keg.require_relocation?
end
diff --git a/Library/Homebrew/diagnostic.rb b/Library/Homebrew/diagnostic.rb
index fbc10fe20..e499c4d3b 100644
--- a/Library/Homebrew/diagnostic.rb
+++ b/Library/Homebrew/diagnostic.rb
@@ -86,12 +86,17 @@ module Homebrew
def development_tools_checks
%w[
check_for_installed_developer_tools
- ]
+ ].freeze
end
def fatal_development_tools_checks
%w[
- ]
+ ].freeze
+ end
+
+ def build_error_checks
+ (development_tools_checks + %w[
+ ]).freeze
end
def check_for_installed_developer_tools
@@ -172,6 +177,7 @@ module Homebrew
"libUFSDExtFS.dylib", # Paragon ExtFS
"libecomlodr.dylib", # Symantec Endpoint Protection
"libsymsea.*.dylib", # Symantec Endpoint Protection
+ "sentinel.dylib", # SentinelOne
]
__check_stray_files "/usr/local/lib", "*.dylib", white_list, <<-EOS.undent
diff --git a/Library/Homebrew/exceptions.rb b/Library/Homebrew/exceptions.rb
index 7aecbe494..3d9b24034 100644
--- a/Library/Homebrew/exceptions.rb
+++ b/Library/Homebrew/exceptions.rb
@@ -327,22 +327,9 @@ class BuildError < RuntimeError
end
def dump
- if !ARGV.verbose?
- puts
- puts Formatter.error(Formatter.url(OS::ISSUES_URL), label: "READ THIS")
- if formula.tap
- case formula.tap.name
- when "homebrew/boneyard"
- puts "#{formula} was moved to homebrew-boneyard because it has unfixable issues."
- puts "Please do not file any issues about this. Sorry!"
- else
- if issues_url = formula.tap.issues_url
- puts "If reporting this issue please do so at (not Homebrew/brew):"
- puts " #{Formatter.url(issues_url)}"
- end
- end
- end
- else
+ puts
+
+ if ARGV.verbose?
require "system_config"
require "build_environment"
@@ -360,15 +347,50 @@ class BuildError < RuntimeError
puts logs.map { |fn| " #{fn}" }.join("\n")
end
end
+
+ if formula.tap && formula.tap.name == "homebrew/boneyard"
+ onoe <<-EOS.undent
+ #{formula} was moved to homebrew-boneyard because it has unfixable issues.
+ Please do not file any issues about this. Sorry!
+ EOS
+ return
+ end
+
+ if formula.tap
+ if formula.tap.official?
+ puts Formatter.error(Formatter.url(OS::ISSUES_URL), label: "READ THIS")
+ elsif issues_url = formula.tap.issues_url
+ puts <<-EOS.undent
+ If reporting this issue please do so at (not Homebrew/brew or Homebrew/core):
+ #{Formatter.url(issues_url)}
+ EOS
+ else
+ puts <<-EOS.undent
+ If reporting this issue please do so to (not Homebrew/brew or Homebrew/core):
+ #{formula.tap}
+ EOS
+ end
+ else
+ puts <<-EOS.undent
+ Do not report this issue to Homebrew/brew or Homebrew/core!
+ EOS
+ end
+
puts
+
if issues && !issues.empty?
puts "These open issues may also help:"
puts issues.map { |i| "#{i["title"]} #{i["html_url"]}" }.join("\n")
end
require "diagnostic"
- unsupported_macos = Homebrew::Diagnostic::Checks.new.check_for_unsupported_macos
- opoo unsupported_macos if unsupported_macos
+ checks = Homebrew::Diagnostic::Checks.new
+ checks.build_error_checks.each do |check|
+ out = checks.send(check)
+ next if out.nil?
+ puts
+ ofail out
+ end
end
end
diff --git a/Library/Homebrew/extend/os/mac/diagnostic.rb b/Library/Homebrew/extend/os/mac/diagnostic.rb
index 0ac95bfd9..0f37e8af5 100644
--- a/Library/Homebrew/extend/os/mac/diagnostic.rb
+++ b/Library/Homebrew/extend/os/mac/diagnostic.rb
@@ -10,19 +10,23 @@ module Homebrew
check_xcode_license_approved
check_for_osx_gcc_installer
check_xcode_8_without_clt_on_el_capitan
- ]
+ check_xcode_up_to_date
+ check_clt_up_to_date
+ check_for_other_package_managers
+ ].freeze
end
def fatal_development_tools_checks
- if MacOS.version >= :sierra && ENV["CI"].nil?
- %w[
- check_xcode_up_to_date
- check_clt_up_to_date
- ]
- else
- %w[
- ]
- end
+ %w[
+ check_xcode_minimum_version
+ check_clt_minimum_version
+ ].freeze
+ end
+
+ def build_error_checks
+ (development_tools_checks + %w[
+ check_for_unsupported_macos
+ ]).freeze
end
def check_for_unsupported_macos
@@ -62,7 +66,8 @@ module Homebrew
end
def check_xcode_up_to_date
- return unless MacOS::Xcode.installed? && MacOS::Xcode.outdated?
+ return unless MacOS::Xcode.installed?
+ return unless MacOS::Xcode.outdated?
message = <<-EOS.undent
Your Xcode (#{MacOS::Xcode.version}) is outdated.
@@ -83,7 +88,8 @@ module Homebrew
end
def check_clt_up_to_date
- return unless MacOS::CLT.installed? && MacOS::CLT.outdated?
+ return unless MacOS::CLT.installed?
+ return unless MacOS::CLT.outdated?
<<-EOS.undent
A newer Command Line Tools release is available.
@@ -94,7 +100,8 @@ module Homebrew
def check_xcode_8_without_clt_on_el_capitan
return unless MacOS::Xcode.without_clt?
# Scope this to Xcode 8 on El Cap for now
- return unless MacOS.version == :el_capitan && MacOS::Xcode.version >= "8"
+ return unless MacOS.version == :el_capitan
+ return unless MacOS::Xcode.version >= "8"
<<-EOS.undent
You have Xcode 8 installed without the CLT;
@@ -104,6 +111,27 @@ module Homebrew
EOS
end
+ def check_xcode_minimum_version
+ return unless MacOS::Xcode.installed?
+ return unless MacOS::Xcode.minimum_version?
+
+ <<-EOS.undent
+ Your Xcode (#{MacOS::Xcode.version}) is too outdated.
+ Please update to Xcode #{MacOS::Xcode.latest_version} (or delete it).
+ #{MacOS::Xcode.update_instructions}
+ EOS
+ end
+
+ def check_clt_minimum_version
+ return unless MacOS::CLT.installed?
+ return unless MacOS::CLT.minimum_version?
+
+ <<-EOS.undent
+ Your Command Line Tools are too outdated.
+ #{MacOS::CLT.update_instructions}
+ EOS
+ end
+
def check_for_osx_gcc_installer
return unless MacOS.version < "10.7" || ((MacOS::Xcode.version || "0") > "4.1")
return unless DevelopmentTools.clang_version == "2.1"
diff --git a/Library/Homebrew/extend/os/mac/utils/bottles.rb b/Library/Homebrew/extend/os/mac/utils/bottles.rb
index 0dd7341ea..18312c9fa 100644
--- a/Library/Homebrew/extend/os/mac/utils/bottles.rb
+++ b/Library/Homebrew/extend/os/mac/utils/bottles.rb
@@ -38,7 +38,6 @@ module Utils
# Allows a bottle tag to specify a specific OS or later,
# so the same bottle can target multiple OSs.
- # Not used in core, used in taps.
def find_or_later_tag(tag)
begin
tag_version = MacOS::Version.from_symbol(tag)
diff --git a/Library/Homebrew/formulary.rb b/Library/Homebrew/formulary.rb
index 5ce09f6ba..4d6832e44 100644
--- a/Library/Homebrew/formulary.rb
+++ b/Library/Homebrew/formulary.rb
@@ -159,6 +159,11 @@ class Formulary
attr_reader :tap
def initialize(tapped_name)
+ name, path = formula_name_path(tapped_name)
+ super name, path
+ end
+
+ def formula_name_path(tapped_name, warn: true)
user, repo, name = tapped_name.split("/", 3).map(&:downcase)
@tap = Tap.fetch user, repo
formula_dir = @tap.formula_dir || @tap.path
@@ -170,12 +175,25 @@ class Formulary
name = path.basename(".rb").to_s
elsif (new_name = @tap.formula_renames[name]) &&
(new_path = formula_dir/"#{new_name}.rb").file?
+ old_name = name
path = new_path
name = new_name
+ new_name = @tap.core_tap? ? name : "#{@tap}/#{name}"
+ elsif (new_tap_name = @tap.tap_migrations[name])
+ new_tap = Tap.fetch new_tap_name
+ new_tap.install unless new_tap.installed?
+ new_tapped_name = "#{new_tap_name}/#{name}"
+ name, path = formula_name_path(new_tapped_name, warn: false)
+ old_name = tapped_name
+ new_name = new_tap.core_tap? ? name : new_tapped_name
+ end
+
+ if warn && old_name && new_name
+ opoo "Use #{new_name} instead of deprecated #{old_name}"
end
end
- super name, path
+ [name, path]
end
def get_formula(spec, alias_path: nil)
diff --git a/Library/Homebrew/os.rb b/Library/Homebrew/os.rb
index b49bbff64..f6fe1eb81 100644
--- a/Library/Homebrew/os.rb
+++ b/Library/Homebrew/os.rb
@@ -13,7 +13,10 @@ module OS
if OS.mac?
require "os/mac"
- ISSUES_URL = "https://git.io/brew-troubleshooting".freeze
+ # Don't tell people to report issues on unsupported versions of macOS.
+ if !OS::Mac.prerelease? && !OS::Mac.outdated_release?
+ ISSUES_URL = "https://git.io/brew-troubleshooting".freeze
+ end
PATH_OPEN = "/usr/bin/open".freeze
# compatibility
::MACOS_FULL_VERSION = OS::Mac.full_version.to_s.freeze
diff --git a/Library/Homebrew/os/mac/xcode.rb b/Library/Homebrew/os/mac/xcode.rb
index 9f49162d5..f081d4382 100644
--- a/Library/Homebrew/os/mac/xcode.rb
+++ b/Library/Homebrew/os/mac/xcode.rb
@@ -25,6 +25,17 @@ module OS
end
end
+ def minimum_version
+ case MacOS.version
+ when "10.12" then "8.0"
+ else "2.0"
+ end
+ end
+
+ def minimum_version?
+ version < minimum_version
+ end
+
def prerelease?
# TODO: bump to version >= "8.3" after Xcode 8.2 is stable.
version >= "8.2"
@@ -205,6 +216,17 @@ module OS
end
end
+ def minimum_version
+ case MacOS.version
+ when "10.12" then "8.0.0"
+ else "4.0.0"
+ end
+ end
+
+ def minimum_version?
+ version < minimum_version
+ end
+
def outdated?
if MacOS.version >= :mavericks
version = Utils.popen_read("#{MAVERICKS_PKG_PATH}/usr/bin/clang --version")
diff --git a/Library/Homebrew/software_spec.rb b/Library/Homebrew/software_spec.rb
index bb432e2dd..f368c59b5 100644
--- a/Library/Homebrew/software_spec.rb
+++ b/Library/Homebrew/software_spec.rb
@@ -221,7 +221,7 @@ class Bottle
def initialize(name, version, tag, rebuild)
@name = name
@version = version
- @tag = tag
+ @tag = tag.to_s.gsub(/_or_later$/, "")
@rebuild = rebuild
end