Need separate Mach-O ActivePerl 5.14 builds to make DBD-Oracle

Posted by jlholt on 2011-11-30 12:16
Forums: PPM | OS: OS X 10.7 (Lion)

It's possible that this problem does not exist prior to Lion but it sure is a problem now.

I'd like to build DBD-Oracle but can't because the oracle instance client library is incompatible with ActivePerl universal binaries.

The oracle instance client library is only "Mach-O dynamically linked shared library i386" but the ActivePerl universal binary is both "Mach-O executable i386" and "Mach-O 64-bit executable x86_64".

Clearly, this problem can easily be fixed if you provide 3 packages: universal, i386, and x86_64.

In fact, not only will this fix the DBD-Oracle problem but all problems of this type.

jlholt | Wed, 2011-11-30 12:17

Sorry, make that "instant", not "instance".

jlholt | Wed, 2011-11-30 12:41

I found an instant client download that has a client library that is solely "Mach-O 64-bit dynamically linked shared library x86_64". This might be sufficient for me to proceed but it's not ideal.

I have at least been able to proceed with make test beyond the loading of the bundle (i.e., without getting the dreaded "wrong architecture" error). To be just, I'll log a request at Oracle to provide also a universal binary.

jlholt | Wed, 2011-11-30 12:46

Ah, rats. The 64 bit instant client has bugs. If you try to run sqlplus from that version, it dies immediately due to signal 11.

So, this is once again a mess.

Please provide an i386 build.

jlholt | Wed, 2011-11-30 12:59

I'll bet that the 64 bit client works before upgrading to Lion. And the chances of Oracle uploading a Lion compatible version of their 10.2 instant client (free mind you) anytime soon is very unlikely.

jlholt | Wed, 2011-11-30 21:44

I downloaded the Perl source from http://www.cpan.org/src/5.0/perl-5.14.2.tar.gz. I configured it with:

export PATH=/Developer/usr/bin:$PATH
export AP=/usr/local
export SDK=/Developer/SDKs/MacOSX10.7.sdk

./Configure -ders -Dcc=gcc -Dusethreads -Duseithreads -Uinstallusrbinperl -Ulocincpth= -Uloclibpth= -Ud_poll -Ui_poll -Ui_libutil \
-Aldflags=-Wl,-search_paths_first \
-Alddlflags=-Wl,-search_paths_first \
-Accflags="-arch i386" \
-Aldflags="-arch i386" \
-Alddlflags="-arch i386" \
-Aldflags="-Wl,-syslibroot,$SDK -mmacosx-version-min=10.7" \
-Alddlflags="-Wl,-syslibroot,$SDK -mmacosx-version-min=10.7" \
-Accflags="-DUSE_SITECUSTOMIZE -Duselargefiles" \
-Accflags=-DPERL_RELOCATABLE_INCPUSH \
-Accflags="-fno-merge-constants -Dprefix=$AP -Dprivlib=$AP/lib -Darchlib=$AP/lib -Dsiteprefix=$AP/site -Dsitelib=$AP/site/lib -Dsitearch=$AP/site/lib -Dsed=/usr/bin/sed -Duseshrplib'

Then I successfully made perl with "make" and "make test" and "make install".

Then I was able to install DBI with "perl -MCPAN -e shell" and then I was able to install DBD-Oracle 1.34 from source after pointing ORACLE_HOME to the 32 bit instant client.

I now have to try to reinstall PDK, while pointing to the newly build perl, and have it make self standing executables.

Man, this is a mess.

jlholt | Wed, 2011-11-30 23:05

Well, it looks like PDK is forcing universal binaries. So, it won't build a self standing executable from the perl I built. Bummer.

It's either ActiveState that needs to provide ActivePerl and PDK as i386 and x86_64 distributions in addition to their universal distributions or Oracle will have to provide also a universal distribution (and one that actually does not core dump).

Yes, a mess.

jlholt | Tue, 2011-12-06 09:44

According to Oracle support note 742060.1, dated 01-DEC-2011, they will release an Instant Client 11.2.0.3 between 01-JAN-2012 and 31-MAR-2012. There's no indication of which architectures they'll provide but if they do what they've done in the past, then they'll offer a 32 bit client and a separate 64 bit client.

Oracle's history on keeping their schedules is questionable and therefore I would still like for someone to release a 32 bit perl for Mac OS X Lion.