Project

General

Profile

Actions

Bug #3051

closed

psych is too osx-specifc

Added by skandragon (Michael Graff) over 14 years ago. Updated over 13 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 1.9.2dev (2010-03-26 trunk 27055) [i386-netbsdelf5.0.]
Backport:
[ruby-core:29118]

Description

=begin
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.)

Additionally, the message displayed is very OSX specific.
=end

Actions #1

Updated by naruse (Yui NARUSE) over 14 years ago

=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. Try 'port install libyaml +universal' " +
  •    "or 'yum install libyaml-devel'"
    
  • 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

=end

Actions #2

Updated by Anonymous over 14 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

=begin
This issue was solved with changeset r27100.
Michael, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.

=end

Actions

Also available in: Atom PDF

Like0
Like0Like0