unicorn 4 does not compile on Joyent (SmartOS/Solaris) due to raindrops dependency
normalperson at yhbt.net
Wed May 9 07:02:29 UTC 2012
Konstantin Gredeskoul <kig at wanelo.com> wrote:
> However, the raindrops dependency introduced in 4.0 breaks raindrops
> (and therefore unicorn 4) on SmartOS.
> The fact that the compilation breaks in the file named
> "linux_inet_diag.c" makes me believe that perhaps the authors may not
> have anticipated usage beyond Linux, or there may be some other
That file is Linux-specific, but the rest of raindrops (and unicorn)
works on FreeBSD, OpenBSD and probably others. I have every expectation
it'd work on SmartOS
> > uname -a
> SunOS demo001.dev 5.11 joyent_XXXX i86pc i386 i86pc Solaris
> > file .rvm/rubies/ruby-1.9.3-p194/bin/ruby
> .rvm/rubies/ruby-1.9.3-p194/bin/ruby: ELF 64-bit LSB executable
> AMD64 Version 1, dynamically linked, not stripped
Are you running a mixed 32-bit/64-bit installation?
Can you check the build system isn't picking the wrong compiler
or compiler flags?
> compiling linux_inet_diag.c
> linux_inet_diag.c:1:0: error: CPU you selected does not support x86-64
> instruction set
That's odd, the first line is just #include <ruby.h>
You can try emptying/removing that file completely? (maybe
Your env shouldn't define the __linux__ macro. The linux_* files is
wrapped with an #ifdef __linux__, so those files shouldn't even
be compiled on other OSes.
The portable part of raindrops does use CPU-specific atomics
(which GCC or libatomic_ops provides). Ruby 1.9.3 itself uses
these instructions, too.
 - SmartOS seems to be Free Software, so I can actually support it :)
More information about the mongrel-unicorn