X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=rake%2Fconfiguretask.rb;h=b673c84a8b45fa770a75b23fc999443a76b1d24a;hb=ab5421339ffad5eb5c910f709354872fda7c34b3;hp=9a20f794f59c7ed0445e40ccd9e13c67766b0961;hpb=310e91e26bebf168b6081e91da123b4a8cfb9b67;p=ruby-vorbistagger.git diff --git a/rake/configuretask.rb b/rake/configuretask.rb index 9a20f79..b673c84 100644 --- a/rake/configuretask.rb +++ b/rake/configuretask.rb @@ -23,7 +23,6 @@ require "rake/tasklib" require "rake/clean" require "yaml" -require "tempfile" require "fileutils" module Rake @@ -140,20 +139,19 @@ module Rake protected def can_exec_binary?(bin) fork do - tf = Tempfile.open("configuretask") - STDOUT.reopen(tf) - STDERR.reopen(tf) + STDOUT.reopen("/dev/null") + STDERR.reopen("/dev/null") begin exec(bin) rescue SystemCallError - exit 0xb00bface + exit 255 end end Process.wait - $?.exitstatus != 0xb00bface + $?.exitstatus != 255 end end @@ -180,17 +178,23 @@ module Rake def invoke return false unless can_exec_command? - [:version, :cflags, :libs].each do |f| - @result[f] = lookup_flags(f) + begin + [:version, :cflags, :libs].each do |f| + @result[f] = lookup_flags(f) + end + rescue Exception + @result.clear end - true + !@result.empty? end protected def lookup_flags(f) tmp = `#{@command} --#{f}`.strip - $?.exitstatus.zero? ? tmp : nil + + raise unless $?.exitstatus.zero? + tmp end private @@ -203,15 +207,18 @@ module Rake def initialize(name, opts = {}) super - @command = "pkg-config --silence-errors" + @command = "pkg-config" end protected def lookup_flags(f) f = :modversion if f == :version - tmp = `#{@command} --#{f} #{@name}`.strip.tr("\n", "/") - $?.exitstatus.zero? ? tmp : nil + tmp = `#{@command} --silence-errors --#{f} #{@name}`. + strip.tr("\n", "/") + + raise unless $?.exitstatus.zero? + tmp end end