Forum: Ruby Building 1.9.1 as universal binary on OS X

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
669b7046f02e5dfc4bda4421f1069731?d=identicon&s=25 Alex Fenton (Guest)
on 2009-02-05 21:35
(Received via mailing list)
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/tn2137.html
http://lists.apple.com/archives/Xcode-users/2007/O...

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
Eacf5ed623e72db0b87707baabd6f21a?d=identicon&s=25 Adam Gardner (adamgardner)
on 2009-02-06 00:40
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
669b7046f02e5dfc4bda4421f1069731?d=identicon&s=25 Alex Fenton (Guest)
on 2009-02-06 01:30
(Received via mailing list)
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
F1d6cc2b735bfd82c8773172da2aeab9?d=identicon&s=25 Nobuyoshi Nakada (nobu)
on 2009-02-06 05:18
(Received via mailing list)
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.

> 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.
Eacf5ed623e72db0b87707baabd6f21a?d=identicon&s=25 Adam Gardner (adamgardner)
on 2009-02-20 23:10
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
This topic is locked and can not be replied to.