[rubyosx] can't build extensions as universal binaries

H

hengist podd

Hi all,

I recently installed Ruby 1.8.6 on my PPC and i386 Macs using the Ruby
One-Click Installer for OSX (http://rubyosx.rubyforge.org/), replacing
my previous manually built architecture-specific Ruby 1.8.5
installations with rubyosx's universal binary Ruby 1.8.6. However, when
I try to install appscript (http://rb-appscript.rubyforge.org),
appscript's ae.bundle extension appears to build as i386-only on both
platforms. Here's what gcc says on the PPC system:

% make
gcc -I. -I/usr/local/lib/ruby/1.8/universal-darwin8.0
-I/usr/local/lib/ruby/1.8/universal-darwin8.0 -Isrc -fno-common -g -O2
-fno-common -pipe -fno-common -Wall -arch i386 -c src/rbae.c
gcc -I. -I/usr/local/lib/ruby/1.8/universal-darwin8.0
-I/usr/local/lib/ruby/1.8/universal-darwin8.0 -Isrc -fno-common -g -O2
-fno-common -pipe -fno-common -Wall -arch i386 -c src/SendThreadSafe.c
cc -dynamic -bundle -undefined suppress -flat_namespace -framework
Carbon -arch i386 -L"/usr/local/lib" -o ae.bundle rbae.o
SendThreadSafe.o -lruby -lpthread -ldl -lobjc
/usr/bin/ld: warning /System/Library/Frameworks/Carbon.framework/Carbon
cputype (18, architecture ppc) does not match cputype (7) for specified
-arch flag: i386 (file not loaded)
/usr/bin/ld: warning fat file:
/usr/lib/gcc/i686-apple-darwin8/4.0.1/../../../libpthread.dylib does not
contain an architecture that matches the specified -arch flag: i386
(file ignored)
/usr/bin/ld: warning fat file:
/usr/lib/gcc/i686-apple-darwin8/4.0.1/../../../libdl.dylib does not
contain an architecture that matches the specified -arch flag: i386
(file ignored)
/usr/bin/ld: warning
/usr/lib/gcc/i686-apple-darwin8/4.0.1/../../../libobjc.dylib cputype
(18, architecture ppc) does not match cputype (7) for specified -arch
flag: i386 (file not loaded)
/usr/bin/ld: warning fat file:
/usr/lib/gcc/i686-apple-darwin8/4.0.1/../../../libSystem.dylib does not
contain an architecture that matches the specified -arch flag: i386
(file ignored)
/usr/bin/ld: warning fat file: /usr/lib/libSystem.B.dylib does not
contain an architecture that matches the specified -arch flag: i386
(file ignored)


On i386 it seems to build and work ok (though it's not universal, as I
say), although I do get the following warning:

has% make
gcc -I. -I/usr/local/lib/ruby/1.8/universal-darwin8.0
-I/usr/local/lib/ruby/1.8/universal-darwin8.0 -Isrc -fno-common -g -O2
-fno-common -pipe -fno-common -Wall -arch i386 -c src/rbae.c
gcc -I. -I/usr/local/lib/ruby/1.8/universal-darwin8.0
-I/usr/local/lib/ruby/1.8/universal-darwin8.0 -Isrc -fno-common -g -O2
-fno-common -pipe -fno-common -Wall -arch i386 -c src/SendThreadSafe.c
cc -dynamic -bundle -undefined suppress -flat_namespace -framework
Carbon -arch i386 -L"/usr/local/lib" -o ae.bundle rbae.o
SendThreadSafe.o -lruby -lpthread -ldl -lobjc
/usr/bin/ld: warning multiple definitions of symbol _setregid
/usr/local/lib/libruby.dylib(process.o) definition of _setregid
/usr/lib/gcc/i686-apple-darwin8/4.0.1/../../../libpthread.dylib(setregid.So)
definition of _setregid
/usr/bin/ld: warning multiple definitions of symbol _setreuid
/usr/local/lib/libruby.dylib(process.o) definition of _setreuid
/usr/lib/gcc/i686-apple-darwin8/4.0.1/../../../libpthread.dylib(setreuid.So)
definition of _setreuid


I'd really appreciate any advice or suggestions anyone might have. As
you can imagine, it's a tad embarrassing not being able to use my own
software on my own machines :p, although at this point I don't know if
the problem lies with appscript, rubyosx, or some combination of the
two.

Many thanks,

has
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,901
Latest member
Noble71S45

Latest Threads

Top