Camellia is ‘an open source Image Processing & Computer Vision library’ that can do some interesting stuff directly from Ruby.

Unfortunately, the Ruby library for Camellia is only available as a RubyGem in two flavours, i386-mswin32 and i486-linux, neither of which is much use if you’re on Mac OS X.

Fortunately, with a bit of work, you can get it to compile. I’ll assume in these instructions that you’re using Ruby from MacPorts. I also can’t guarantee that this works on PowerPC Macs: I’ve only tried it on Intel.

The first prerequisite is the Camellia library itself; that’s a straightforward case of downloading the source (use the ‘Unix/Linux’ distribution), expanding the archive and doing the usual incantation:

./configure && make && sudo make install

For the gem itself, it’s a bit more complicated. There’s no source distribution as such, but it’s easy enough to pick apart the file once you’ve downloaded it (go for the i486-linux gem).

mkdir camellia-gem
cd camellia-gem
tar xvf ../camellia-2.5.10-i486-linux.gem
tar zxvf data.tar.gz
cd ext

The only thing that stops the gem compiling out of the box is a couple of linker settings; change the line in extconf.rb that reads

CONFIG['LDSHARED'] = "g++ -shared -lCamellia"

to

CONFIG['LDSHARED'] = 
"g++ -lCamellia -bundle -flat_namespace -undefined suppress"

You can now build the extension:

ruby extconf.rb && make

You should now have a camellia.bundle file; check whether it has built correctly:

ruby -d -w -e 'require "camellia"'

If you get no errors, everything worked. You can copy camellia.bundle into your site_ruby directory so that it’s available to all programs:

sudo cp camellia.bundle /opt/local/lib/ruby/site_ruby/1.8/

That’s it! Now try some of the demo code ....