[MacRuby-devel] -twolevel_namespace issue?

Jeremy Hinegardner jeremy at hinegardner.org
Mon Sep 12 11:39:35 PDT 2011


Hey all,

I develop the Amalgalite gem[1] and it ships with its own copy of SQLite. 
It does this as it adds in additional compile-time features, and I try and
keep it as current as posssible.

The problem is that since MacRuby is linked to CoreServices etc, the sqlite
library that ships with OSX gets linked at runtime before the sqlite library
that is built into the amalgalite gem extension.  I've encountered this
before[2] with amalgalite, when it was loaded with my 'hitimes' gem (which on osx links
against -framework CoreServes).

I am wondering what the appropriate approach is here. I was able to fix this in
MRI by compiling MRI with -twolevel_namespace and I think there is an open ticket
with ruby-core to see if MRI on osx should be compiled with that flag.

I attempted to compile MacRuby with -twolevel_namespace to resolve this, and I
was unsuccessful. There appeared to be other flags that conflicted with it.

I would expect something like this may also affect the nokogiri gem as limxml2
is also a system library on osx, and may conflict with the version that nokogiri
expects.

Thoughts? Opinions? I'm sure this is a rare case, Amalgalite may be the only
project that could experience an issue like this. What is the best way to handle
this in the MacRuby ecosystem?

enjoy,

-jeremy

[1] - https://github.com/copiousfreetime/amalgalite
[2] - https://github.com/copiousfreetime/amalgalite/blob/master/lib/amalgalite/sqlite3/version.rb#L42-L56-54
-- 
========================================================================
 Jeremy Hinegardner                              jeremy at hinegardner.org 



More information about the MacRuby-devel mailing list