gem update libxml-ruby on Leopard

So I’m updating my laptop to reflect the same environment as my servers - which means getting rid of macports. Part of the process was to update all the rubygems we’ve got installed. I tried to ‘gem up libxml-ruby’ and was disappointed to see

[rts-mbp:~] ryan$ sudo gem up libxml-ruby
Updating installed gems
Updating libxml-ruby
Building native extensions.  This could take a while...
ERROR:  While executing gem ... (Gem::Installer::ExtensionBuildError)
    ERROR: Failed to build gem native extension.

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb up
checking for socket() in -lsocket... no
checking for gethostbyname() in -lnsl... no
checking for atan() in -lm... no
checking for atan() in -lm... yes
checking for inflate() in -lz... yes
checking for iconv_open() in -liconv... yes
checking for xmlParseDoc() in -lxml2... yes
checking for libxml/xmlversion.h... yes
checking for xmlDocFormatDump()... yes
checking for docbCreateFileParserCtxt()... yes
creating extconf.h
creating Makefile

make
gcc -I. -I. -I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin9.0 \
-I. -DRUBY_EXTCONF_H=\"extconf.h\"  -fno-common -arch ppc -arch i386 -Os -pipe -fno-common -I. \
 -I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin9.0 -I.  -c cbg.c
cbg.c:2:26: error: libxml/xmlIO.h: No such file or directory
cbg.c:2:26: error: libxml/xmlIO.h: No such file or directory
cbg.c: In function ‘deb_Match’:
cbg.c:28: error: ‘BAD_CAST’ undeclared (first use in this function)
cbg.c:28: error: (Each undeclared identifier is reported only once
cbg.c:28: error: for each function it appears in.)
cbg.c:28: error: syntax error before ‘filename’
cbg.c: In function ‘deb_Match’:
cbg.c:28: error: ‘BAD_CAST’ undeclared (first use in this function)
cbg.c:28: error: (Each undeclared identifier is reported only once
cbg.c:28: error: for each function it appears in.)
cbg.c:28: error: syntax error before ‘filename’
lipo: can't open input file: /var/tmp//ccpl6OUz.out (No such file or directory)
make: *** [cbg.o] Error 1

Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/libxml-ruby-0.5.4 for inspection.
Results logged to /Library/Ruby/Gems/1.8/gems/libxml-ruby-0.5.4/ext/libxml/gem_make.out
[rts-mbp:~] ryan$

Turns out after a bit of digging around in the Makefile that the INCPATH doesn’t include the correct path to xmlIO.h, which is /usr/include/libxml2/libxml/xmlIO.h.

ln to the rescue. Just do

sudo ln -s /usr/include/libxml2/libxml /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin9.0/libxml

and libxml-ruby will build fine!

[rts-mbp:~] ryan$ sudo gem up libxml-ruby
Updating installed gems
Updating libxml-ruby
Building native extensions.  This could take a while...
Successfully installed libxml-ruby-0.5.4
Gems updated: libxml-ruby
[rts-mbp:~] ryan$

1 Responses to “gem update libxml-ruby on Leopard”


Leave a Reply