diff options
Diffstat (limited to 'Library/Homebrew/extend')
| -rw-r--r-- | Library/Homebrew/extend/ARGV.rb | 2 | ||||
| -rw-r--r-- | Library/Homebrew/extend/ENV/std.rb | 4 | ||||
| -rw-r--r-- | Library/Homebrew/extend/os/extend/ENV/std.rb | 6 | ||||
| -rw-r--r-- | Library/Homebrew/extend/os/linux/extend/ENV/std.rb | 7 | ||||
| -rw-r--r-- | Library/Homebrew/extend/os/mac/diagnostic.rb | 71 | ||||
| -rw-r--r-- | Library/Homebrew/extend/os/mac/extend/ENV/std.rb | 2 | ||||
| -rw-r--r-- | Library/Homebrew/extend/os/mac/keg_relocate.rb | 6 | ||||
| -rw-r--r-- | Library/Homebrew/extend/pathname.rb | 16 | ||||
| -rw-r--r-- | Library/Homebrew/extend/string.rb | 4 |
9 files changed, 103 insertions, 15 deletions
diff --git a/Library/Homebrew/extend/ARGV.rb b/Library/Homebrew/extend/ARGV.rb index 8cc2ccbc0..c6cb54f5d 100644 --- a/Library/Homebrew/extend/ARGV.rb +++ b/Library/Homebrew/extend/ARGV.rb @@ -138,7 +138,7 @@ module HomebrewArgvExtension end def next - at(@n+1) || raise(UsageError) + at(@n + 1) || raise(UsageError) end def value(name) diff --git a/Library/Homebrew/extend/ENV/std.rb b/Library/Homebrew/extend/ENV/std.rb index c4cc0985f..4a871f9bb 100644 --- a/Library/Homebrew/extend/ENV/std.rb +++ b/Library/Homebrew/extend/ENV/std.rb @@ -98,7 +98,7 @@ module Stdenv # @private def determine_cxx dir, base = determine_cc.split - dir / base.to_s.sub("gcc", "g++").sub("clang", "clang++") + dir/base.to_s.sub("gcc", "g++").sub("clang", "clang++") end def gcc_4_0 @@ -210,6 +210,8 @@ module Stdenv end alias generic_set_cpu_flags set_cpu_flags + def x11; end + # @private def effective_arch if ARGV.build_bottle? diff --git a/Library/Homebrew/extend/os/extend/ENV/std.rb b/Library/Homebrew/extend/os/extend/ENV/std.rb index 8e6b13a61..18ede5b9e 100644 --- a/Library/Homebrew/extend/os/extend/ENV/std.rb +++ b/Library/Homebrew/extend/os/extend/ENV/std.rb @@ -1,2 +1,6 @@ require "extend/ENV/std" -require "extend/os/mac/extend/ENV/std" if OS.mac? +if OS.mac? + require "extend/os/mac/extend/ENV/std" +elsif OS.linux? + require "extend/os/linux/extend/ENV/std" +end diff --git a/Library/Homebrew/extend/os/linux/extend/ENV/std.rb b/Library/Homebrew/extend/os/linux/extend/ENV/std.rb new file mode 100644 index 000000000..ed19d2495 --- /dev/null +++ b/Library/Homebrew/extend/os/linux/extend/ENV/std.rb @@ -0,0 +1,7 @@ +module Stdenv + def libxml2 + append "CPPFLAGS", "-I#{Formula["libxml2"].include/"libxml2"}" + rescue FormulaUnavailableError + nil + end +end diff --git a/Library/Homebrew/extend/os/mac/diagnostic.rb b/Library/Homebrew/extend/os/mac/diagnostic.rb index ff936c75a..58d8c633d 100644 --- a/Library/Homebrew/extend/os/mac/diagnostic.rb +++ b/Library/Homebrew/extend/os/mac/diagnostic.rb @@ -307,6 +307,77 @@ module Homebrew We recommend only installing stable releases of XQuartz. EOS end + + def check_filesystem_case_sensitive + dirs_to_check = [ + HOMEBREW_PREFIX, + HOMEBREW_REPOSITORY, + HOMEBREW_CELLAR, + HOMEBREW_TEMP, + ] + case_sensitive_dirs = dirs_to_check.select do |dir| + # We select the dir as being case-sensitive if either the UPCASED or the + # downcased variant is missing. + # Of course, on a case-insensitive fs, both exist because the os reports so. + # In the rare situation when the user has indeed a downcased and an upcased + # dir (e.g. /TMP and /tmp) this check falsely thinks it is case-insensitive + # but we don't care because: 1. there is more than one dir checked, 2. the + # check is not vital and 3. we would have to touch files otherwise. + upcased = Pathname.new(dir.to_s.upcase) + downcased = Pathname.new(dir.to_s.downcase) + dir.exist? && !(upcased.exist? && downcased.exist?) + end + return if case_sensitive_dirs.empty? + + volumes = Volumes.new + case_sensitive_vols = case_sensitive_dirs.map do |case_sensitive_dir| + volumes.get_mounts(case_sensitive_dir) + end + case_sensitive_vols.uniq! + + <<-EOS.undent + The filesystem on #{case_sensitive_vols.join(",")} appears to be case-sensitive. + The default macOS filesystem is case-insensitive. Please report any apparent problems. + EOS + end + + def check_homebrew_prefix + return if HOMEBREW_PREFIX.to_s == "/usr/local" + + <<-EOS.undent + Your Homebrew's prefix is not /usr/local. + You can install Homebrew anywhere you want but some bottles (binary packages) + can only be used with a /usr/local prefix and some formulae (packages) + may not build correctly with a non-/usr/local prefix. + EOS + end + + def check_which_pkg_config + binary = which "pkg-config" + return if binary.nil? + + mono_config = Pathname.new("/usr/bin/pkg-config") + if mono_config.exist? && mono_config.realpath.to_s.include?("Mono.framework") + <<-EOS.undent + You have a non-Homebrew 'pkg-config' in your PATH: + /usr/bin/pkg-config => #{mono_config.realpath} + + This was most likely created by the Mono installer. `./configure` may + have problems finding brew-installed packages using this other pkg-config. + + Mono no longer installs this file as of 3.0.4. You should + `sudo rm /usr/bin/pkg-config` and upgrade to the latest version of Mono. + EOS + elsif binary.to_s != "#{HOMEBREW_PREFIX}/bin/pkg-config" + <<-EOS.undent + You have a non-Homebrew 'pkg-config' in your PATH: + #{binary} + + `./configure` may have problems finding brew-installed packages using + this other pkg-config. + EOS + end + end end end end diff --git a/Library/Homebrew/extend/os/mac/extend/ENV/std.rb b/Library/Homebrew/extend/os/mac/extend/ENV/std.rb index 4853ecf0c..dd273cfbc 100644 --- a/Library/Homebrew/extend/os/mac/extend/ENV/std.rb +++ b/Library/Homebrew/extend/os/mac/extend/ENV/std.rb @@ -7,7 +7,7 @@ module Stdenv # Mountain Lion's sed is stricter, and errors out when # it encounters files with mixed character sets delete("LC_ALL") - self["LC_CTYPE"]="C" + self["LC_CTYPE"] = "C" end # Add lib and include etc. from the current macosxsdk to compiler flags: diff --git a/Library/Homebrew/extend/os/mac/keg_relocate.rb b/Library/Homebrew/extend/os/mac/keg_relocate.rb index 0b2ecd1c9..707710be6 100644 --- a/Library/Homebrew/extend/os/mac/keg_relocate.rb +++ b/Library/Homebrew/extend/os/mac/keg_relocate.rb @@ -63,9 +63,9 @@ class Keg # expensive recursive search if possible. def fixed_name(file, bad_name) if bad_name.start_with? PREFIX_PLACEHOLDER - bad_name.sub(PREFIX_PLACEHOLDER, HOMEBREW_PREFIX.to_s) + bad_name.sub(PREFIX_PLACEHOLDER, HOMEBREW_PREFIX) elsif bad_name.start_with? CELLAR_PLACEHOLDER - bad_name.sub(CELLAR_PLACEHOLDER, HOMEBREW_CELLAR.to_s) + bad_name.sub(CELLAR_PLACEHOLDER, HOMEBREW_CELLAR) elsif (file.dylib? || file.mach_o_bundle?) && (file.parent + bad_name).exist? "@loader_path/#{bad_name}" elsif file.mach_o_executable? && (lib + bad_name).exist? @@ -89,7 +89,7 @@ class Keg # the basename of the file itself. basename = File.basename(file.dylib_id) relative_dirname = file.dirname.relative_path_from(path) - opt_record.join(relative_dirname, basename).to_s + (opt_record/relative_dirname/basename).to_s end # Matches framework references like `XXX.framework/Versions/YYY/XXX` and diff --git a/Library/Homebrew/extend/pathname.rb b/Library/Homebrew/extend/pathname.rb index c413e9e94..767d83ff9 100644 --- a/Library/Homebrew/extend/pathname.rb +++ b/Library/Homebrew/extend/pathname.rb @@ -246,7 +246,7 @@ class Pathname rmdir true rescue Errno::ENOTEMPTY - if (ds_store = self+".DS_Store").exist? && children.length == 1 + if (ds_store = join(".DS_Store")).exist? && children.length == 1 ds_store.unlink retry else @@ -322,7 +322,7 @@ class Pathname def sha256 require "digest/sha2" - incremental_hash(Digest::SHA2) + incremental_hash(Digest::SHA256) end def verify_checksum(expected) @@ -343,7 +343,7 @@ class Pathname # @private def resolved_path - symlink? ? dirname+readlink : self + symlink? ? dirname.join(readlink) : self end # @private @@ -353,7 +353,7 @@ class Pathname # The link target contains NUL bytes false else - (dirname+link).exist? + dirname.join(link).exist? end # @private @@ -367,7 +367,7 @@ class Pathname if !other.respond_to?(:to_str) && !other.respond_to?(:to_path) odeprecated "Pathname#/ with #{other.class}", "a String or a Pathname" end - self + other.to_s + join(other.to_s) end end @@ -403,7 +403,7 @@ class Pathname mkpath targets.each do |target| target = Pathname.new(target) # allow pathnames or strings - (self+target.basename).write <<-EOS.undent + join(target.basename).write <<-EOS.undent #!/bin/bash exec "#{target}" "$@" EOS @@ -427,7 +427,7 @@ class Pathname Pathname.glob("#{self}/*") do |file| next if file.directory? dst.install(file) - new_file = dst+file.basename + new_file = dst.join(file.basename) file.write_env_script(new_file, env) end end @@ -435,7 +435,7 @@ class Pathname # Writes an exec script that invokes a java jar def write_jar_script(target_jar, script_name, java_opts = "") mkpath - (self+script_name).write <<-EOS.undent + join(script_name).write <<-EOS.undent #!/bin/bash exec java #{java_opts} -jar #{target_jar} "$@" EOS diff --git a/Library/Homebrew/extend/string.rb b/Library/Homebrew/extend/string.rb index 162666d2d..ae7a209db 100644 --- a/Library/Homebrew/extend/string.rb +++ b/Library/Homebrew/extend/string.rb @@ -1,7 +1,11 @@ +# Contains backports from newer versions of Ruby +require_relative "../vendor/backports/string" + class String def undent gsub(/^[ \t]{#{(slice(/^[ \t]+/) || '').length}}/, "") end + alias unindent undent # eg: # if foo then <<-EOS.undent_________________________________________________________72 |
