From: Dave Howell on

On Jun 17, 2010, at 12:29 , Dave Howell wrote:
>
> $ gem install nokogiri
> zlib is missing. please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help with installing dependencies.
>
> Reinstall zlib as +universal
>
> $ gem install nokogiri
> libxml2 is missing. please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help with installing dependencies.
>

Oh, of course.

Nokogiri is desperately trying to build a 32-bit version of itself. It can't 'find' libxml2 because I built a 64-bit only version.

[bangs nokogiri on tablej]


From: Ben Bleything on
On Thu, Jun 17, 2010 at 12:16 PM, Dave Howell
<groups.2009a(a)grandfenwick.net> wrote:
> Um, it's COMPLETELY SnowLeopard's fault. I *am* using the stock Ruby,
> which changed from 32-bit in Leopard to 64-bit in SnowLeopard.

Ah, okay. So you did an upgrade install, and are now surprised that
sweeping architectural changes affected software you already had
installed.

> Thus rendering every single Ruby program I had non-functional, since
> all my gems were 32-bit. And my PostgreSQL. And lots and lots of other
> stuff. Including a bunch of system OSAXen that Apple didn't upgrade to
> 64-bit.

Upgrade installs aren't worth it, particularly from 10.5 -> 10.6. I
know that sucks to hear, but doing a clean install *will* fix your
problems.

> I had to actually go back and pull my own Ruby off my backups so that
> I had a 32-bit Ruby just so I could get work done.

Perhaps an expedient solution, but not a very clean one.

From your other post:

> $ file /opt/local/lib/libz.dylib
> libz.dylib: Mach-O 64-bit dynamically linked shared library x86_64
> So I have a 64-bit libz.dylib. Gem is ignoring my /opt tree.

Why are you using macports for this? Every additional piece you add is
making solving your problem so much more complicated. You already have a
universal libz:

$ file /Developer/SDKs/MacOSX10.6.sdk/usr/lib/libz.dylib
/Developer/SDKs/MacOSX10.6.sdk/usr/lib/libz.dylib: Mach-O universal
binary with 3 architectures
/Developer/SDKs/MacOSX10.6.sdk/usr/lib/libz.dylib (for architecture
x86_64): Mach-O 64-bit dynamically linked shared library stub x86_64
/Developer/SDKs/MacOSX10.6.sdk/usr/lib/libz.dylib (for architecture
i386): Mach-O dynamically linked shared library stub i386
/Developer/SDKs/MacOSX10.6.sdk/usr/lib/libz.dylib (for architecture
ppc7400): Mach-O dynamically linked shared library stub ppc

Bottom line is, your environment is broken. Based on all of the screwing
around you've done to fix the situation, I don't know how to recommend
you clean it up other than suggesting you do a clean install... which
again, I know sucks. But these things *do* work fine on Snow Leopard,
using the stock ruby, without macports. You just need to start from a
clean spot, which you didn't do when you did the in-place upgrade.

Ben

From: Florian Gilcher on

On Jun 17, 2010, at 9:34 PM, Ben Bleything wrote:

> On Thu, Jun 17, 2010 at 12:16 PM, Dave Howell
> <groups.2009a(a)grandfenwick.net> wrote:
>> Um, it's COMPLETELY SnowLeopard's fault. I *am* using the stock Ruby,
>> which changed from 32-bit in Leopard to 64-bit in SnowLeopard.
>
> Ah, okay. So you did an upgrade install, and are now surprised that
> sweeping architectural changes affected software you already had
> installed.
>
>> Thus rendering every single Ruby program I had non-functional, since
>> all my gems were 32-bit. And my PostgreSQL. And lots and lots of other
>> stuff. Including a bunch of system OSAXen that Apple didn't upgrade to
>> 64-bit.
>
> Upgrade installs aren't worth it, particularly from 10.5 -> 10.6. I
> know that sucks to hear, but doing a clean install *will* fix your
> problems.

I had no problem doing an upgrade install since 2 OS X releases. What I
had to do, though: wipe macports of the disk and recompile everything
with a +universal flag.

Alternatively, try this:

http://trac.macports.org/wiki/Migration

Regards,
Florian

--
Florian Gilcher

smtp: flo(a)andersground.net
jabber: Skade(a)jabber.ccc.de
gpg: 533148E2


From: Dave Howell on

On Jun 17, 2010, at 12:34 , Ben Bleything wrote:

> Upgrade installs aren't worth it, particularly from 10.5 -> 10.6. I
> know that sucks to hear, but doing a clean install *will* fix your
> problems.

Actually, this WAS a clean install. It took me over a month to get all my tools re-installed. However, not all of the installers correctly installed 64-bit versions. Postgres was a particular nightmare. Because it stuffed 32-bit libraries all over the place, everything that linked to it automatically degraded to 32-bit, and I ended up with all kinds of stuff that didn't work.

>> I had to actually go back and pull my own Ruby off my backups so that
>> I had a 32-bit Ruby just so I could get work done.
>
> Perhaps an expedient solution, but not a very clean one.

That's why I've been trying to get everything moved back up to 64-bit.

> From your other post:
>
>> $ file /opt/local/lib/libz.dylib
>> libz.dylib: Mach-O 64-bit dynamically linked shared library x86_64
>> So I have a 64-bit libz.dylib. Gem is ignoring my /opt tree.
>
> Why are you using macports for this? Every additional piece you add is
> making solving your problem so much more complicated.

Oh, I know, I know. I HATE MacPorts. I hate hate hate having to install something that is already on my system, but is 'too old' or the 'wrong version,' because I have wasted many hours chasing down problems from my command line using one version and XCode-developed apps using another.

> You already have a
> universal libz:
>
> $ file /Developer/SDKs/MacOSX10.6.sdk/usr/lib/libz.dylib
> /Developer/SDKs/MacOSX10.6.sdk/usr/lib/libz.dylib: Mach-O universal
> binary with 3 architectures

> But these things *do* work fine on Snow Leopard,
> using the stock ruby, without macports. You just need to start from a
> clean spot, which you didn't do when you did the in-place upgrade.

See above.

In fact, it was impossible to get all this fixed without MacPorts, because that was the only way I could get a 64-bit version of Postgres. The packaged binary installer gave me 32-bit. I tried recompiling from the source version I had already, and it blew up in every direction with unfulfilled dependencies.

I suspect zlib and libxml were dependencies of Postgres, and, of course, MacPorts would never link to the existing system libraries. Ewww. {roll eyes}

But that certainly suggests a possible solution. "Erase" the MacPorts tree.

$ mv /opt /non-opt
$ gem install nokogiri
Building native extensions. This could take a while...
Successfully installed nokogiri-1.4.2
1 gem installed
$ file .../lib/nokogiri/nokogiri.bundle
lib/nokogiri/nokogiri.bundle: Mach-O universal binary with 2 architectures
lib/nokogiri/nokogiri.bundle (for architecture i386): Mach-O bundle i386
lib/nokogiri/nokogiri.bundle (for architecture x86_64): Mach-O 64-bit bundle x86_64

Bloody hell. Thanks, Ben, you rock.


Note to self: when Gem says "blahblahblah is missing" it's probably lying. Missing != wrong architecture.
From: Shashank Tiwari on
[Note: parts of this message were removed to make it a legal post.]

As a first step reinstall your macports for the right architecture and
uninstall your 32 bit ports and then install all 64 bit ports. Then install
the zlib port and then go from there. Read
http://trac.macports.org/wiki/Migration to reinstall macports and the
installed ports.

If you built Ruby from source then after upgrading to Snow Leopard, please
uninstall all gems and reinstall them as well, to be on the safe side. This
is specially relevant for all gems that rely on native extensions, which are
OS architecture dependent.

Hope this helps. For a developer, the Snow Leopard upgrade as most OS
upgrades is full of mess!

Thanks, Shashank

************************************************
Shashank Tiwari
web: www.shanky.org | www.treasuryofideas.com | blog:
http://www.oreillynet.com/pub/au/2799
Twitter : tshanky


On Thu, Jun 17, 2010 at 3:34 PM, Ben Bleything <ben(a)bleything.net> wrote:

> On Thu, Jun 17, 2010 at 12:16 PM, Dave Howell
> <groups.2009a(a)grandfenwick.net> wrote:
> > Um, it's COMPLETELY SnowLeopard's fault. I *am* using the stock Ruby,
> > which changed from 32-bit in Leopard to 64-bit in SnowLeopard.
>
> Ah, okay. So you did an upgrade install, and are now surprised that
> sweeping architectural changes affected software you already had
> installed.
>
> > Thus rendering every single Ruby program I had non-functional, since
> > all my gems were 32-bit. And my PostgreSQL. And lots and lots of other
> > stuff. Including a bunch of system OSAXen that Apple didn't upgrade to
> > 64-bit.
>
> Upgrade installs aren't worth it, particularly from 10.5 -> 10.6. I
> know that sucks to hear, but doing a clean install *will* fix your
> problems.
>
> > I had to actually go back and pull my own Ruby off my backups so that
> > I had a 32-bit Ruby just so I could get work done.
>
> Perhaps an expedient solution, but not a very clean one.
>
> From your other post:
>
> > $ file /opt/local/lib/libz.dylib
> > libz.dylib: Mach-O 64-bit dynamically linked shared library x86_64
> > So I have a 64-bit libz.dylib. Gem is ignoring my /opt tree.
>
> Why are you using macports for this? Every additional piece you add is
> making solving your problem so much more complicated. You already have a
> universal libz:
>
> $ file /Developer/SDKs/MacOSX10.6.sdk/usr/lib/libz.dylib
> /Developer/SDKs/MacOSX10.6.sdk/usr/lib/libz.dylib: Mach-O universal
> binary with 3 architectures
> /Developer/SDKs/MacOSX10.6.sdk/usr/lib/libz.dylib (for architecture
> x86_64): Mach-O 64-bit dynamically linked shared library stub x86_64
> /Developer/SDKs/MacOSX10.6.sdk/usr/lib/libz.dylib (for architecture
> i386): Mach-O dynamically linked shared library stub i386
> /Developer/SDKs/MacOSX10.6.sdk/usr/lib/libz.dylib (for architecture
> ppc7400): Mach-O dynamically linked shared library stub ppc
>
> Bottom line is, your environment is broken. Based on all of the screwing
> around you've done to fix the situation, I don't know how to recommend
> you clean it up other than suggesting you do a clean install... which
> again, I know sucks. But these things *do* work fine on Snow Leopard,
> using the stock ruby, without macports. You just need to start from a
> clean spot, which you didn't do when you did the in-place upgrade.
>
> Ben
>
>