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$