From: "Berger, Daniel" Date: 2005-02-12T01:31:00+09:00 Subject: Passing a block to methods in mkmf.rb Hi, I'm curious as to what the optional block is for in the mkmf.rb methods like have_header, etc. I thought it merely yielded back the C source that it was trying to compile behind the scenes to do the check. However, when I try to pass a block I get errors: # extconf.rb test have_header("windows.h"){ |code| p code } On Windows XP Pro: C:\eclipse\workspace\ruby-foo>ruby extconftest.rb checking for windows.h... c:/ruby/lib/ruby/1.8/fileutils.rb:687:in `unlink': Per mission denied - mkmftmp.log (Errno::EACCES) from c:/ruby/lib/ruby/1.8/fileutils.rb:687:in `remove_file' from c:/ruby/lib/ruby/1.8/fileutils.rb:618:in `rm' from c:/ruby/lib/ruby/1.8/fileutils.rb:617:in `each' from c:/ruby/lib/ruby/1.8/fileutils.rb:617:in `rm' from c:/ruby/lib/ruby/1.8/fileutils.rb:634:in `rm_f' from c:/ruby/lib/ruby/1.8/mkmf.rb:109:in `rm_f' from c:/ruby/lib/ruby/1.8/mkmf.rb:177:in `postpone' from c:/ruby/lib/ruby/1.8/mkmf.rb:168:in `open' from c:/ruby/lib/ruby/1.8/mkmf.rb:168:in `postpone' from c:/ruby/lib/ruby/1.8/mkmf.rb:467:in `checking_for' from c:/ruby/lib/ruby/1.8/mkmf.rb:528:in `have_header' from extconftest.rb:3 On Solaris 9: djberge@sp5wd-b1-/home/djberge/programming/ruby-534>ruby extconftest.rb checking for wait.h... /opt/lib/ruby/1.8/mkmf.rb:215:in `create_tmpsrc': private method `sub' called for nil:NilClass (NoMethodError) from /opt/lib/ruby/1.8/mkmf.rb:223:in `try_do' from /opt/lib/ruby/1.8/mkmf.rb:276:in `try_cpp' from /opt/lib/ruby/1.8/mkmf.rb:529:in `have_header' from /opt/lib/ruby/1.8/mkmf.rb:528:in `checking_for' from /opt/lib/ruby/1.8/mkmf.rb:467:in `postpone' from /opt/lib/ruby/1.8/mkmf.rb:172:in `open' from /opt/lib/ruby/1.8/mkmf.rb:172:in `postpone' from /opt/lib/ruby/1.8/mkmf.rb:168:in `open' from /opt/lib/ruby/1.8/mkmf.rb:168:in `postpone' from /opt/lib/ruby/1.8/mkmf.rb:467:in `checking_for' from /opt/lib/ruby/1.8/mkmf.rb:528:in `have_header' from extconftest.rb:3 If that's not what the block is for, then what is it for? And can someone provide an example? Or is this a bug? Regards, Dan