On Tue, Sep 19, 2006 at 07:39:46AM +0200, Ralf S. Engelschall wrote:
> On Mon, Sep 18, 2006, Adam D. Morley wrote:
>
> > > [Core Features]
> > > - Test::More ...loaded. (0.62 >= 0.52)
> > > - DBD::SQLite ...missing.
> > > - DBI ...loaded. (1.51)
> > > - Want ...loaded. (0.10)
> > > - Encode ...loaded. (2.18)
> > > - Class::ReturnValue ...loaded. (0.53 >= 0.4)
> > > - Cache::MemoryCache ...loaded. (0)
> > > - Clone ...loaded. (0.20)
> > > ==> Auto-install the 1 mandatory module(s) from CPAN? [Y/n] y
> > > [Lower case API]
> > > - capitalization ...missing. (would need 0.03)
> > > ==> Auto-install the 1 optional module(s) from CPAN? [y/N] n
> > > [Schema generation]
> > > - DBIx::DBSchema ...loaded. (0.31)
> > > - Class::Accessor ...loaded. (0.25)
> > >
> > > But it seems perl-dbi built SQLLite fine? (see attached) And openpkg
> >
> > [...]
> > > I'm clearly doing something wrong here. Any ideas?
> > [...]
> > Writing Makefile for DBD::SQLite
> > ++ step 3: build
> > ++ building module via ExtUtils::MakeMaker environment
> > cp lib/DBD/SQLite.pm blib/lib/DBD/SQLite.pm
> > /opt/openpkg/RPM/TMP/adam-perl-openpkg-perl-dbi/perl.sh -p -e
> > "s/~DRIVER~/SQLite/g"
> > /opt/openpkg/RPM/TMP/perl-dbi-5.8.8-root/opt/openpkg/lib/perl/vendor_perl/5.8.8/sun4-solaris/auto/DBI/Driver.xst
> > > SQLite.xsi
> > /opt/openpkg/RPM/TMP/adam-perl-openpkg-perl-dbi/perl.sh
> > /opt/openpkg/lib/perl/5.8.8/ExtUtils/xsubpp -typemap
> > /opt/openpkg/lib/perl/5.8.8/ExtUtils/typemap SQLite.xs > SQLite.xsc && mv
> > SQLite.xsc SQLite.c
> > /opt/openpkg/bin/cc -c -I/opt/openpkg/include
> > -I/opt/openpkg/RPM/TMP/perl-dbi-5.8.8-root/opt/openpkg/lib/perl/vendor_perl/5.8.8/sun4-solaris/auto/DBI
> > -fno-strict-aliasing -pipe -Wdeclaration-after-statement
> > -I/opt/openpkg/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
> > -DPERL_USE_SAFE_PUTENV -O2 -DVERSION=\"1.12\" -DXS_VERSION=\"1.12\" -fPIC
> > "-I/opt/openpkg/lib/perl/5.8.8/sun4-solaris/CORE" -DNDEBUG=1
> > -DSQLITE_PTR_SZ=4 -DHAVE_USLEEP=1 SQLite.c
> > /opt/openpkg/bin/cc -c -I/opt/openpkg/include
> > -I/opt/openpkg/RPM/TMP/perl-dbi-5.8.8-root/opt/openpkg/lib/perl/vendor_perl/5.8.8/sun4-solaris/auto/DBI
> > -fno-strict-aliasing -pipe -Wdeclaration-after-statement
> > -I/opt/openpkg/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
> > -DPERL_USE_SAFE_PUTENV -O2 -DVERSION=\"1.12\" -DXS_VERSION=\"1.12\" -fPIC
> > "-I/opt/openpkg/lib/perl/5.8.8/sun4-solaris/CORE" -DNDEBUG=1
> > -DSQLITE_PTR_SZ=4 -DHAVE_USLEEP=1 dbdimp.c
> > Running Mkbootstrap for DBD::SQLite ()
> > chmod 644 SQLite.bs
> > rm -f blib/arch/auto/DBD/SQLite/SQLite.so
> > /opt/openpkg/bin/cc -Wl,-E -G -L/opt/openpkg/lib SQLite.o dbdimp.o -o
> > blib/arch/auto/DBD/SQLite/SQLite.so \
> > -L/opt/openpkg/lib -lsqlite3 \
> >
> > chmod 755 blib/arch/auto/DBD/SQLite/SQLite.so
> > cp SQLite.bs blib/arch/auto/DBD/SQLite/SQLite.bs
> > chmod 644 blib/arch/auto/DBD/SQLite/SQLite.bs
> > ++ step 4: install
> > ++ installing module via ExtUtils::MakeMaker environment
> > Installing
> > /opt/openpkg/RPM/TMP/perl-dbi-5.8.8-root/opt/openpkg/lib/perl/vendor_perl/5.8.8/sun4-solaris/auto/DBD/SQLite/SQLite.so
> > Installing
> > /opt/openpkg/RPM/TMP/perl-dbi-5.8.8-root/opt/openpkg/lib/perl/vendor_perl/5.8.8/sun4-solaris/auto/DBD/SQLite/SQLite.bs
> > Files found in blib/arch: installing files in blib/lib into architecture
> > dependent library tree
> > Installing
> > /opt/openpkg/RPM/TMP/perl-dbi-5.8.8-root/opt/openpkg/lib/perl/vendor_perl/5.8.8/sun4-solaris/DBD/SQLite.pm
> > Writing
> > /opt/openpkg/RPM/TMP/perl-dbi-5.8.8-root/opt/openpkg/lib/perl/vendor_perl/5.8.8/sun4-solaris/auto/DBD/SQLite/.packlist
> > [...]
>
> Hmmmm... this sounds all pretty good. DBD::SQLite is built and installed just
> fine.
> Whether it also _loads_ you can check manually with...
>
> $ /opt/openpkg/bin/perl -e 'use DBI; use DBD::SQLite;'
>
> ...just to make sure you are not confronted with some "undefined symbol"
> or similar run-time problems. So, as long as the above command really
> works, I've no more clue why the check in "perl-dbix" still fails for
> you.
Ah. At least I know my perl-dbi is broken:
[root perl-dbix]# /opt/openpkg/bin/perl -e 'use DBI; use
DBD::SQLite;'
Can't load
'/opt/openpkg/lib/perl/vendor_perl/5.8.8/sun4-solaris/auto/DBD/SQLite/SQLite.so'
for module DBD::SQLite: ld.so.1: perl: fatal: relocation error: file
/opt/openpkg/lib/perl/vendor_perl/5.8.8/sun4-solaris/auto/DBD/SQLite/SQLite.so:
symbol fdatasync: referenced symbol not found at
/opt/openpkg/lib/perl/5.8.8/sun4-solaris/DynaLoader.pm line 230.
at -e line 1
Compilation failed in require at -e line 1.
BEGIN failed--compilation aborted at -e line 1.
Details:
[root perl-dbix]# ls -l
/opt/openpkg/lib/perl/vendor_perl/5.8.8/sun4-solaris/auto/DBD/SQLite/SQLite.so
-r-xr-xr-x 1 opkg opkg 493827 Sep 18 16:40
/opt/openpkg/lib/perl/vendor_perl/5.8.8/sun4-solaris/auto/DBD/SQLite/SQLite.so
[root perl-dbix]# ldd
/opt/openpkg/lib/perl/vendor_perl/5.8.8/sun4-solaris/auto/DBD/SQLite/SQLite.so
libc.so.1 => /lib/libc.so.1
libm.so.2 => /lib/libm.so.2
/platform/SUNW,Sun-Fire-V240/lib/libc_psr.so.1
[root perl-dbix]# ls -l
/opt/openpkg/lib/perl/5.8.8/sun4-solaris/DynaLoader.pm
-r--r--r-- 1 opkg opkg 28125 Sep 15 23:04
/opt/openpkg/lib/perl/5.8.8/sun4-solaris/DynaLoader.pm
I lucked upon the following three items:
http://www.nntp.perl.org/group/perl.cpan.testers/281183
http://london.pm.org/pipermail/london.pm/Week-of-Mon-20060206/001201.html
http://london.pm.org/pipermail/london.pm/Week-of-Mon-20060206/001191.html
Which seem to describe the problem. The last one says,
"-lposix4 needs to be passed to the linker (LDDLFLAGS)" subject,
"DBD::SQLite failing on Solaris + fix"
I'd test, but I have no idea where lddlflags shows up in .spec files. I
know ldflags, and can usually whack that in to test things, but
lddlflags is new to me.
Thanks,
--
adam
______________________________________________________________________
The OpenPKG Project www.openpkg.org
User Communication List [email protected]