=begin
(2010/03/30 6:19), Aaron Patterson wrote:
On Tue, Mar 30, 2010 at 06:04:59AM +0900, Michael Graff wrote:
Bug #3051: psych is too osx-specifc
http://redmine.ruby-lang.org/issues/show/3051
Author: Michael Graff
Status: Open, Priority: Normal
ruby -v: ruby 1.9.2dev (2010-03-26 trunk 27055) [i386-netbsdelf5.0.]
ext/psych/extconf.rb only looks in Macports' directories for libyaml, and will not look in places other OSs may use (such as /usr/pkg for NetBSD.)
I can't make the extconf look in every directory for every system. If
it can't be found under /opt/local, it will look under system paths. Do
you have a suggestion for a fix?
You can give additional search path
./configure --with-opt-dir=/usr/pkg
This also applied to /opt/local for macports.
So following patch seems correct for bundled psych:
diff --git a/ext/psych/extconf.rb b/ext/psych/extconf.rb
index 673b950..cb74776 100644
--- a/ext/psych/extconf.rb
+++ b/ext/psych/extconf.rb
@@ -2,16 +2,10 @@ require 'mkmf'
:stopdoc:¶
-RbConfig::MAKEFILE_CONFIG['CC'] = ENV['CC'] if ENV['CC']¶
-INCLUDEDIR = Config::CONFIG['includedir']
-LIBDIR = Config::CONFIG['libdir']
-LIB_DIRS = ['/opt/local/lib', '/usr/local/lib', LIBDIR, '/usr/lib']
-libyaml = dir_config 'libyaml', '/opt/local/include', '/opt/local/lib'
+dir_config('libyaml')
def asplode missing
- abort "#{missing} is missing. libyaml required."
end
asplode('yaml.h') unless find_header 'yaml.h'
Additionally, the message displayed is very OSX specific.
The error message displays installation instructions to use macports or
yum. Again, I don't know every packaging system for every operating
system. Should I make the message more generic, and in my opinion less
helpful?
Other bundled libraries doesn't show such specific message.
So psych should follow them.
Note that this cannot apply to psych gem; Ruby is usually installed
through packages and its dependency is manged.
Users who install Ruby from source should know how to install
the dependency until the name of the library is given.
--
NARUSE, Yui naruse@airemix.jp
=end