require "rake/tasklib"
require "rake/clean"
require "yaml"
-require "tempfile"
require "fileutils"
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 255
- ensure
- tf.close
end
end
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
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