[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Building 1.9.1 as universal binary on OS X

Alex Fenton

2/5/2009 8:33:00 PM

Hi

I'd like to build the recently released Ruby 1.9.1 as a universal binary
on OS X. I'm on an Intel 10.5, but want the ruby to be runnable on 10.4
or 10.5, Intel or PPC.

Following this tech note and advice:
http://developer.apple.com/technotes/tn2005/t...
http://lists.apple.com/archives/Xcode-users/2007/Oct/msg...

I did:

Abaddon:ruby-1.9.1-p0 alex$ export CFLAGS="-O3 -g -isysroot
/Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc
-mmacosx-version-min=10.4"
Abaddon:ruby-1.9.1-p0 alex$ export LDFLAGS="-arch i386 -arch ppc"
Abaddon:ruby-1.9.1-p0 alex$ ./configure --prefix=~/bleed

However, the resultant ruby isn't marked as universal:

Abaddon:ruby-1.9.1-p0 alex$ ~/bleed/bin/ruby -v
ruby 1.9.1p0 (2009-01-30 revision 21907) [i386-darwin9.6.0]
^^^^^^^^^^^^^^^^
Unlike the standard 10.5 install of ruby 1.8.6:

Abaddon:~ alex$ ruby -v
ruby 1.8.6 (2008-03-03 patchlevel 114) [universal-darwin9.0]
^^^^^^^^^^^^^^^^^^^
Can anyone offer any advice here please?

alex





4 Answers

Adam Gardner

2/5/2009 11:40:00 PM

0

Alex Fenton wrote:
> Abaddon:ruby-1.9.1-p0 alex$ export CFLAGS="-O3 -g -isysroot
> /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc
> -mmacosx-version-min=10.4"
> Abaddon:ruby-1.9.1-p0 alex$ export LDFLAGS="-arch i386 -arch ppc"
> Abaddon:ruby-1.9.1-p0 alex$ ./configure --prefix=~/bleed
>
> However, the resultant ruby isn't marked as universal:
>
> Abaddon:ruby-1.9.1-p0 alex$ ~/bleed/bin/ruby -v
> ruby 1.9.1p0 (2009-01-30 revision 21907) [i386-darwin9.6.0]
> ^^^^^^^^^^^^^^^^
> Unlike the standard 10.5 install of ruby 1.8.6:
>
> Abaddon:~ alex$ ruby -v
> ruby 1.8.6 (2008-03-03 patchlevel 114) [universal-darwin9.0]
> ^^^^^^^^^^^^^^^^^^^
> Can anyone offer any advice here please?
>
> alex

More importantly, what's the output of these commands?
$ file ~/bleed/bin/ruby
$ file ~/bleed/lib/libruby.1.9.1.dylib
--
Posted via http://www.ruby-....

Alex Fenton

2/6/2009 12:29:00 AM

0

Adam Gardner wrote:

> More importantly, what's the output of these commands?
> $ file ~/bleed/bin/ruby
> $ file ~/bleed/lib/libruby.1.9.1.dylib

Abaddon:ruby-1.9.1-p0 alex$ file ~/bleed/bin/ruby
/Users/alex/bleed/bin/ruby: Mach-O universal binary with 2 architectures
/Users/alex/bleed/bin/ruby (for architecture i386): Mach-O executable i386
/Users/alex/bleed/bin/ruby (for architecture ppc): Mach-O executable ppc
Abaddon:ruby-1.9.1-p0 alex$ file ~/bleed/lib/libruby-static.a
/Users/alex/bleed/lib/libruby-static.a: Mach-O universal binary with 2
architectures
/Users/alex/bleed/lib/libruby-static.a (for architecture i386): current
ar archive random library
/Users/alex/bleed/lib/libruby-static.a (for architecture ppc): current
ar archive random library

alex

Nobuyoshi Nakada

2/6/2009 4:17:00 AM

0

Hi,

At Fri, 6 Feb 2009 05:34:27 +0900,
Alex Fenton wrote in [ruby-talk:327034]:
> I'd like to build the recently released Ruby 1.9.1 as a universal binary
> on OS X. I'm on an Intel 10.5, but want the ruby to be runnable on 10.4
> or 10.5, Intel or PPC.

Universal binary support was very incomplete and has been dropped.
Not only it'd confused autoconf and fallen into disaster, x86 and ppc
platforms behave differently in some points.

> Following this tech note and advice:
> http://developer.apple.com/technotes/tn2005/t...
> http://lists.apple.com/archives/Xcode-users/2007/Oct/msg...
>
> I did:
>
> Abaddon:ruby-1.9.1-p0 alex$ export CFLAGS="-O3 -g -isysroot
> /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc
> -mmacosx-version-min=10.4"
> Abaddon:ruby-1.9.1-p0 alex$ export LDFLAGS="-arch i386 -arch ppc"
> Abaddon:ruby-1.9.1-p0 alex$ ./configure --prefix=~/bleed

Do NOT use -arch option multiple times.

Instead, build for each archs and bind them with lipo command.

--
Nobu Nakada

Adam Gardner

2/20/2009 10:10:00 PM

0

Alex Fenton wrote:
> Adam Gardner wrote:
>
>> More importantly, what's the output of these commands?
>> $ file ~/bleed/bin/ruby
>> $ file ~/bleed/lib/libruby.1.9.1.dylib
>
> Abaddon:ruby-1.9.1-p0 alex$ file ~/bleed/bin/ruby
> /Users/alex/bleed/bin/ruby: Mach-O universal binary with 2 architectures
> /Users/alex/bleed/bin/ruby (for architecture i386): Mach-O executable
> i386
> /Users/alex/bleed/bin/ruby (for architecture ppc): Mach-O executable
> ppc
> Abaddon:ruby-1.9.1-p0 alex$ file ~/bleed/lib/libruby-static.a
> /Users/alex/bleed/lib/libruby-static.a: Mach-O universal binary with 2
> architectures
> /Users/alex/bleed/lib/libruby-static.a (for architecture i386): current
> ar archive random library
> /Users/alex/bleed/lib/libruby-static.a (for architecture ppc): current
> ar archive random library
>
> alex

Sorry, it took me so long to respond to this. If the 'file' command
reports that it's a Mach-O universal binary with 2 architectures, then
you *did* build ruby as universal. Whether it works or not is an open
question, but it's a universal binary either way. The ruby version
string (in particular, the 'i386-darwin9.0' bit) is just an
informational text string stored in rbconfig.rb, generated at some point
during the build process. You could open rbconfig.rb and change the
platform string to 'my-little-pony' and it probably wouldn't change a
thing (until you try to run a script that checks that value to determine
what platform-specific code to run, I guess).

- Adam
--
Posted via http://www.ruby-....