diff options
| -rwxr-xr-x | Library/Contributions/examples/brew-fetch.rb | 1 | ||||
| -rw-r--r-- | Library/Homebrew/cleaner.rb | 22 | ||||
| -rwxr-xr-x | Library/Homebrew/cmd/audit.rb | 46 | ||||
| -rw-r--r-- | Library/Homebrew/cmd/doctor.rb | 86 | ||||
| -rw-r--r-- | Library/Homebrew/cmd/install.rb | 14 | ||||
| -rw-r--r-- | Library/Homebrew/extend/ARGV.rb | 2 | ||||
| -rw-r--r-- | Library/Homebrew/global.rb | 12 | ||||
| -rwxr-xr-x | Library/Homebrew/install.rb | 8 | ||||
| -rw-r--r-- | Library/Homebrew/test/test_bucket.rb | 2 | ||||
| -rw-r--r-- | Library/Homebrew/utils.rb | 25 | ||||
| -rwxr-xr-x | bin/brew | 13 |
11 files changed, 115 insertions, 116 deletions
diff --git a/Library/Contributions/examples/brew-fetch.rb b/Library/Contributions/examples/brew-fetch.rb index 28606e3fd..336dc839f 100755 --- a/Library/Contributions/examples/brew-fetch.rb +++ b/Library/Contributions/examples/brew-fetch.rb @@ -17,7 +17,6 @@ ARGV.formulae.each do |f| puts "MD5: #{the_tarball.md5}" puts "SHA1: #{the_tarball.sha1}" - puts unless previous_md5.nil? or the_tarball.md5 == previous_md5 opoo "Formula reports different MD5: #{previous_md5}" diff --git a/Library/Homebrew/cleaner.rb b/Library/Homebrew/cleaner.rb index f19efc23b..070f35b81 100644 --- a/Library/Homebrew/cleaner.rb +++ b/Library/Homebrew/cleaner.rb @@ -1,7 +1,7 @@ class Cleaner def initialize f - @f=f - [f.bin, f.sbin, f.lib].select{|d|d.exist?}.each{|d|clean_dir d} + @f = Formula.factory f + [f.bin, f.sbin, f.lib].select{ |d| d.exist? }.each{ |d| clean_dir d } unless ENV['HOMEBREW_KEEP_INFO'].nil? f.info.rmtree if f.info.directory? and not f.skip_clean? f.info @@ -23,7 +23,8 @@ class Cleaner end end -private + private + def strip path, args='' return if @f.skip_clean? path puts "strip #{path}" if ARGV.verbose? @@ -46,18 +47,17 @@ private end def clean_file path - perms=0444 + perms = 0444 case `file -h '#{path}'` when /Mach-O dynamically linked shared library/ - # Stripping libraries is causing no end of trouble - # Lets just give up, and try to do it manually in instances where it - # makes sense + # Stripping libraries is causing no end of trouble. Lets just give up, + # and try to do it manually in instances where it makes sense. #strip path, '-SxX' when /Mach-O [^ ]* ?executable/ strip path - perms=0555 + perms = 0555 when /script text executable/ - perms=0555 + perms = 0555 end path.chmod perms end @@ -68,9 +68,9 @@ private Find.prune if @f.skip_clean? path elsif not path.file? next - elsif path.extname == '.la' and not @f.skip_clean? path + elsif path.extname == '.la' # *.la files are stupid - path.unlink + path.unlink unless @f.skip_clean? path elsif not path.symlink? clean_file path end diff --git a/Library/Homebrew/cmd/audit.rb b/Library/Homebrew/cmd/audit.rb index 4096ebff8..5580eaeeb 100755 --- a/Library/Homebrew/cmd/audit.rb +++ b/Library/Homebrew/cmd/audit.rb @@ -206,33 +206,33 @@ def audit_formula_instance f end module Homebrew extend self -def audit - ff.each do |f| - problems = [] - problems += audit_formula_instance f - problems += audit_formula_urls f - - text = "" - File.open(f.path, "r") { |afile| text = afile.read } - - # DATA with no __END__ - if (text =~ /\bDATA\b/) and not (text =~ /^\s*__END__\s*$/) - problems << " * 'DATA' was found, but no '__END__'" - end + def audit + ff.each do |f| + problems = [] + problems += audit_formula_instance f + problems += audit_formula_urls f + + text = "" + File.open(f.path, "r") { |afile| text = afile.read } - problems += [' * invalid or missing version'] if f.version.to_s.empty? + # DATA with no __END__ + if (text =~ /\bDATA\b/) and not (text =~ /^\s*__END__\s*$/) + problems << " * 'DATA' was found, but no '__END__'" + end - # Don't try remaining audits on text in __END__ - text_without_patch = (text.split("__END__")[0]).strip() + problems += [' * invalid or missing version'] if f.version.to_s.empty? - problems += audit_formula_text(text_without_patch) - problems += audit_formula_options(f, text_without_patch) + # Don't try remaining audits on text in __END__ + text_without_patch = (text.split("__END__")[0]).strip() - unless problems.empty? - puts "#{f.name}:" - puts problems * "\n" - puts + problems += audit_formula_text(text_without_patch) + problems += audit_formula_options(f, text_without_patch) + + unless problems.empty? + puts "#{f.name}:" + puts problems * "\n" + puts + end end end end -end diff --git a/Library/Homebrew/cmd/doctor.rb b/Library/Homebrew/cmd/doctor.rb index bad3a5dc0..7ea616d76 100644 --- a/Library/Homebrew/cmd/doctor.rb +++ b/Library/Homebrew/cmd/doctor.rb @@ -584,50 +584,50 @@ def check_for_other_vars end module Homebrew extend self -def doctor - read, write = IO.pipe - - if fork == nil - read.close - $stdout.reopen write - - check_usr_bin_ruby - check_homebrew_prefix - check_for_macgpg2 - check_for_stray_dylibs - check_gcc_versions - check_cc_symlink - check_for_other_package_managers - check_for_x11 - check_for_nonstandard_x11 - check_access_share_locale - check_access_share_man - check_access_include - check_access_etc - check_user_path - check_which_pkg_config - check_pkg_config_paths - check_access_pkgconfig - check_for_gettext - check_for_config_scripts - check_for_dyld_vars - check_for_other_vars - check_for_symlinked_cellar - check_for_multiple_volumes - check_for_git - check_for_autoconf - check_for_linked_kegonly_brews - - exit! 0 - else - write.close - - unless (out = read.read).chomp.empty? - puts out + def doctor + read, write = IO.pipe + + if fork == nil + read.close + $stdout.reopen write + + check_usr_bin_ruby + check_homebrew_prefix + check_for_macgpg2 + check_for_stray_dylibs + check_gcc_versions + check_cc_symlink + check_for_other_package_managers + check_for_x11 + check_for_nonstandard_x11 + check_access_share_locale + check_access_share_man + check_access_include + check_access_etc + check_user_path + check_which_pkg_config + check_pkg_config_paths + check_access_pkgconfig + check_for_gettext + check_for_config_scripts + check_for_dyld_vars + check_for_other_vars + check_for_symlinked_cellar + check_for_multiple_volumes + check_for_git + check_for_autoconf + check_for_linked_kegonly_brews + + exit! 0 else - puts "Your OS X is ripe for brewing." - puts "Any troubles you may be experiencing are likely purely psychosomatic." + write.close + + unless (out = read.read).chomp.empty? + puts out + else + puts "Your OS X is ripe for brewing." + puts "Any troubles you may be experiencing are likely purely psychosomatic." + end end end end -end diff --git a/Library/Homebrew/cmd/install.rb b/Library/Homebrew/cmd/install.rb index 2102d2182..d1b4519c6 100644 --- a/Library/Homebrew/cmd/install.rb +++ b/Library/Homebrew/cmd/install.rb @@ -13,15 +13,17 @@ module Homebrew extend self end def check_ppc - case Hardware.cpu_type when :ppc, :dunno - abort "Sorry, Homebrew does not support your computer's CPU architecture.\n"+ - "For PPC support, see: http://github.com/sceaga/homebrew/tree/powerpc" - end + case Hardware.cpu_type when :ppc, :dunno + abort <<-EOS.undent + Sorry, Homebrew does not support your computer's CPU architecture. + For PPC support, see: http://github.com/sceaga/homebrew/tree/powerpc + EOS + end end def check_writable_install_location - raise "Cannot write to #{HOMEBREW_CELLAR}" if HOMEBREW_CELLAR.exist? and not HOMEBREW_CELLAR.writable? - raise "Cannot write to #{HOMEBREW_PREFIX}" unless HOMEBREW_PREFIX.writable? + raise "Cannot write to #{HOMEBREW_CELLAR}" if HOMEBREW_CELLAR.exist? and not HOMEBREW_CELLAR.writable? + raise "Cannot write to #{HOMEBREW_PREFIX}" unless HOMEBREW_PREFIX.writable? end def check_cc diff --git a/Library/Homebrew/extend/ARGV.rb b/Library/Homebrew/extend/ARGV.rb index 76776c94c..370035ea6 100644 --- a/Library/Homebrew/extend/ARGV.rb +++ b/Library/Homebrew/extend/ARGV.rb @@ -18,7 +18,7 @@ module HomebrewArgvExtension require 'keg' require 'formula' @kegs ||= downcased_unique_named.collect do |name| - d = HOMEBREW_CELLAR + Formula.resolve_alias(name) + d = HOMEBREW_CELLAR/Formula.resolve_alias(name) dirs = d.children.select{ |pn| pn.directory? } rescue [] raise NoSuchKegError.new(name) if not d.directory? or dirs.length == 0 raise MultipleVersionsInstalledError.new(name) if dirs.length > 1 diff --git a/Library/Homebrew/global.rb b/Library/Homebrew/global.rb index 3cc1024e7..56e4ad4ea 100644 --- a/Library/Homebrew/global.rb +++ b/Library/Homebrew/global.rb @@ -10,12 +10,12 @@ ARGV.extend(HomebrewArgvExtension) HOMEBREW_VERSION = '0.7.1' HOMEBREW_WWW = 'http://mxcl.github.com/homebrew/' -if Process.uid == 0 +HOMEBREW_CACHE = if Process.uid == 0 # technically this is not the correct place, this cache is for *all users* # so in that case, maybe we should always use it, root or not? - HOMEBREW_CACHE=Pathname.new("/Library/Caches/Homebrew") + Pathname.new("/Library/Caches/Homebrew") else - HOMEBREW_CACHE=Pathname.new("~/Library/Caches/Homebrew").expand_path + Pathname.new("~/Library/Caches/Homebrew").expand_path end if not defined? HOMEBREW_BREW_FILE @@ -27,10 +27,10 @@ HOMEBREW_REPOSITORY = Pathname.new(HOMEBREW_BREW_FILE).realpath.dirname.parent # # Where we store built products; /usr/local/Cellar if it exists, # otherwise a Cellar relative to the Repository. -if (HOMEBREW_PREFIX+'Cellar').exist? - HOMEBREW_CELLAR = HOMEBREW_PREFIX+'Cellar' +HOMEBREW_CELLAR = if (HOMEBREW_PREFIX/"Cellar").exist? + HOMEBREW_PREFIX/"Cellar" else - HOMEBREW_CELLAR = HOMEBREW_REPOSITORY+'Cellar' + HOMEBREW_REPOSITORY/"Cellar" end MACOS_FULL_VERSION = `/usr/bin/sw_vers -productVersion`.chomp diff --git a/Library/Homebrew/install.rb b/Library/Homebrew/install.rb index 6b338ea83..880d9081f 100755 --- a/Library/Homebrew/install.rb +++ b/Library/Homebrew/install.rb @@ -10,7 +10,7 @@ def text_for_keg_only_formula f rationale = "The formula didn't provide any rationale for this." end <<-EOS -This formula is keg-only, so it is not symlinked into Homebrew's prefix. +This formula is keg-only. This means it is not symlinked into #{HOMEBREW_PREFIX}. #{rationale} Generally there are no consequences of this for you, however if you build @@ -137,10 +137,10 @@ def install f show_summary_heading = true else # warn the user if stuff was installed outside of their PATH - paths = ENV['PATH'].split(':').collect{|p| File.expand_path p} + paths = ENV['PATH'].split(':').map{ |p| File.expand_path p } [f.bin, f.sbin].each do |bin| if bin.directory? - rootbin = (HOMEBREW_PREFIX+bin.basename).to_s + rootbin = (HOMEBREW_PREFIX/bin.basename).to_s bin = File.expand_path bin unless paths.include? rootbin opoo "#{rootbin} is not in your PATH" @@ -151,7 +151,7 @@ def install f end # Check for man pages that aren't in share/man - if (f.prefix+'man').exist? + if (f.prefix/:man).exist? opoo 'A top-level "man" folder was found.' puts "Homebrew requires that man pages live under share." puts 'This can often be fixed by passing "--mandir=#{man}" to configure.' diff --git a/Library/Homebrew/test/test_bucket.rb b/Library/Homebrew/test/test_bucket.rb index 086297dd2..010c06761 100644 --- a/Library/Homebrew/test/test_bucket.rb +++ b/Library/Homebrew/test/test_bucket.rb @@ -173,7 +173,7 @@ class BeerTasting < Test::Unit::TestCase end def test_pathname_properties - foo1=HOMEBREW_CACHE+'foo-0.1.tar.gz' + foo1 = HOMEBREW_CACHE/'foo-0.1.tar.gz' assert_equal '.tar.gz', foo1.extname assert_equal 'foo-0.1', foo1.stem diff --git a/Library/Homebrew/utils.rb b/Library/Homebrew/utils.rb index e478670fb..f1d62ffe1 100644 --- a/Library/Homebrew/utils.rb +++ b/Library/Homebrew/utils.rb @@ -1,4 +1,3 @@ - class Tty class <<self def blue; bold 34; end @@ -41,6 +40,7 @@ def onoe error puts lines unless lines.empty? end + def pretty_duration s return "2 seconds" if s < 3 # avoids the plural problem ;) return "#{s.to_i} seconds" if s < 120 @@ -115,28 +115,25 @@ end def exec_editor *args editor = ENV['HOMEBREW_EDITOR'] || ENV['EDITOR'] if editor.nil? - if system "/usr/bin/which -s mate" - # TextMate - editor='mate' + editor = if system "/usr/bin/which -s mate" + 'mate' elsif system "/usr/bin/which -s edit" - # BBEdit / TextWrangler - editor='edit' + 'edit' # BBEdit / TextWrangler else - # Default to vim - editor='/usr/bin/vim' + '/usr/bin/vim' # Default to vim end end # we split the editor because especially on mac "mate -w" is common # but we still want to use the comma-delimited version of exec because then # we don't have to escape args, and escaping 100% is tricky - exec(*(editor.split+args)) + exec *(editor.split + args) unless args.empty? end -# GZips the given path, and returns the gzipped file +# GZips the given paths, and returns the gzipped paths def gzip *paths paths.collect do |path| system "/usr/bin/gzip", path - Pathname.new(path+".gz") + Pathname.new("#{path}.gz") end end @@ -242,9 +239,9 @@ module MacOS extend self end end -def x11_installed? - Pathname.new('/usr/X11/lib/libpng.dylib').exist? -end + def x11_installed? + Pathname.new('/usr/X11/lib/libpng.dylib').exist? + end def macports_or_fink_installed? # See these issues for some history: @@ -8,7 +8,7 @@ Dir.getwd rescue abort "The current working directory doesn't exist, cannot proc HOMEBREW_BREW_FILE = ENV['HOMEBREW_BREW_FILE'] = File.expand_path(__FILE__) require 'pathname' -HOMEBREW_LIBRARY_PATH = (Pathname.new(__FILE__).realpath.dirname.parent+"Library/Homebrew").to_s +HOMEBREW_LIBRARY_PATH = Pathname.new(__FILE__).realpath.dirname.parent.join("Library/Homebrew").to_s $:.unshift(HOMEBREW_LIBRARY_PATH) require 'global' @@ -35,7 +35,10 @@ case HOMEBREW_PREFIX.to_s when '/', '/usr' abort "Cowardly refusing to continue at this prefix: #{HOMEBREW_PREFIX}" end if MACOS_VERSION < 10.5 - abort "Homebrew requires Leopard or higher. For Tiger support, see:\nhttp://github.com/sceaga/homebrew/tree/tiger" + abort <<-EOABORT.undent + Homebrew requires Leopard or higher. For Tiger support, see: + http://github.com/sceaga/homebrew/tree/tiger + EOABORT end def require? path @@ -104,15 +107,13 @@ rescue BuildError => e formula_name = $1 error_line = $2 - puts "Exit status: #{e.exit_status}" - puts + ohai "Exit Status: #{e.exit_status}" puts "http://github.com/mxcl/homebrew/blob/master/Library/Formula/#{formula_name}.rb#L#{error_line}" - puts ohai "Environment" puts Homebrew.config_s - puts ohai "Build Flags" Homebrew.dump_build_env e.env + puts onoe e puts PLEASE_REPORT_BUG # this feature can be slow (depends on network conditions and if github is up) |
