Re: [Fink-devel] dlopen symbol not found
Koen van der Drift wrote: > First of all, thanks for all the help and suggestions. Little by little > I am undestanding more of the whole building process. > > Now for the results :) > Unfortunately, I still get the same error: > > t/1Can't load > '/sw/src/fink.build/bio-emboss-pm588-5.0.0.1-1/Bio-Emboss-5.0.0.1/blib/arch/auto/Bio/Emboss/Emboss.bundle' > for module Bio::Emboss: > dlopen(/sw/src/fink.build/bio-emboss-pm588-5.0.0.1-1/Bio-Emboss-5.0.0.1/blib/arch/auto/Bio/Emboss/Emboss.bundle, > 1): Symbol not found: _XS_Bio__Emboss_ajStrTokenCount > Actually, if I *do* comment out that line, the error changes to: > dlopen(/sw/src/fink.build/bio-emboss-pm588-5.0.0.1-1/Bio-Emboss-5.0.0.1/blib/arch/auto/Bio/Emboss/Emboss.bundle, > 2): Symbol not found: _XS_Bio__Emboss_ajStrTokenCount > Note the 2) instead of the 1) > That's fine, commenting out that line changed the call to dlopen(). With it there perl does dlopen("/path/to/bundle",RTLD_LAZY); with it commented out it does dlopen("/path/to/bundle",RTLD_NOW); You can see the #defines for these in /usr/include/dlfcn.h. So, it looks like I had it backwards before, I misread the perl and figured it was setting PERL_DL_NONLAZY, but of course it is unsetting it :( Which probably means that the upstream author is aware of the linking issues and is trying to cover them up :( > > That seems ok to me, since ajStrTokenCount is part of libajax. > Yes, but the loader is not looking for ajStrTokenCount, it is looking for XS_Bio__Emboss_ajStrTokenCount. And that is undefined. Did you do jfm's magic on Emboss.bundle? Peter -- Peter O'Gorman http://pogma.com - SF.Net email is sponsored by: The Future of Linux Business White Paper from Novell. From the desktop to the data center, Linux is going mainstream. Let it simplify your IT future. http://altfarm.mediaplex.com/ad/ck/8857-50307-18918-4 ___ Fink-devel mailing list Fink-devel@lists.sourceforge.net http://news.gmane.org/gmane.os.apple.fink.devel
Re: [Fink-devel] dlopen symbol not found
First of all, thanks for all the help and suggestions. Little by little I am undestanding more of the whole building process. Now for the results :) Using JF's test, I don't see any errors, ie nm doesn't print any symbol names. (BTW, could that script be useful in the validation code of fink?) Using oTool -L on all the libs, I now see, with Dan's patch that much more libs are linked. But not for libajax and libnucleus: libajax.5.0.0.dylib: /sw/lib/EMBOSS/libajax.5.dylib (compatibility version 6.0.0, current version 6.0.0) /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.0.0) libnucleus.5.0.0.dylib: /sw/lib/EMBOSS/libnucleus.5.dylib (compatibility version 6.0.0, current version 6.0.0) /sw/lib/EMBOSS/libajax.5.dylib (compatibility version 6.0.0, current version 6.0.0) /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.0.0) Not sure if that is a problem. Unfortunately, I still get the same error: t/1Can't load '/sw/src/fink.build/bio-emboss-pm588-5.0.0.1-1/Bio- Emboss-5.0.0.1/blib/arch/auto/Bio/Emboss/Emboss.bundle' for module Bio::Emboss: dlopen(/sw/src/fink.build/bio-emboss-pm588-5.0.0.1-1/Bio- Emboss-5.0.0.1/blib/arch/auto/Bio/Emboss/Emboss.bundle, 1): Symbol not found: _XS_Bio__Emboss_ajStrTokenCount Referenced from: /sw/src/fink.build/bio-emboss-pm588-5.0.0.1-1/Bio- Emboss-5.0.0.1/blib/arch/auto/Bio/Emboss/Emboss.bundle Expected in: dynamic lookup This is with the line BEGIN { delete $ENV{PERL_DL_NONLAZY}; }; NOT commented out (the code as is). And based on Peter's comment, that means that there is still something missing: > Yes, this makes it pass RTLD_NOW to dlopen() which is similar to > setting > DYLD_BIND_AT_LAUNCH. It should work with this set, if it does not it > means there is a missing lib or symbol when linking the loadable > bundle. Actually, if I *do* comment out that line, the error changes to: t/1Can't load '/sw/src/fink.build/bio-emboss-pm588-5.0.0.1-1/Bio- Emboss-5.0.0.1/blib/arch/auto/Bio/Emboss/Emboss.bundle' for module Bio::Emboss: dlopen(/sw/src/fink.build/bio-emboss-pm588-5.0.0.1-1/Bio- Emboss-5.0.0.1/blib/arch/auto/Bio/Emboss/Emboss.bundle, 2): Symbol not found: _XS_Bio__Emboss_ajStrTokenCount Referenced from: /sw/src/fink.build/bio-emboss-pm588-5.0.0.1-1/Bio- Emboss-5.0.0.1/blib/arch/auto/Bio/Emboss/Emboss.bundle Expected in: dynamic lookup at t/1.t line 11 Note the 2) instead of the 1) So then I thought, maybe there are symbols or libs missing in Emboss.bundle? oTool -L on that file shows: /sw/src/fink.build/bio-emboss-pm588-5.0.0.1-1/Bio-Emboss-5.0.0.1/blib/ arch/auto/Bio/Emboss/Emboss.bundle: /sw/lib/EMBOSS/libnucleus.5.dylib (compatibility version 6.0.0, current version 6.0.0) /sw/lib/EMBOSS/libajax.5.dylib (compatibility version 6.0.0, current version 6.0.0) /sw/lib/EMBOSS/libajaxg.5.dylib (compatibility version 6.0.0, current version 6.0.0) /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.0.0) That seems ok to me, since ajStrTokenCount is part of libajax. Of course, disabling testing solves the building error, but not the errors above. cheers, - Koen (still struggling) - SF.Net email is sponsored by: The Future of Linux Business White Paper from Novell. From the desktop to the data center, Linux is going mainstream. Let it simplify your IT future. http://altfarm.mediaplex.com/ad/ck/8857-50307-18918-4 ___ Fink-devel mailing list Fink-devel@lists.sourceforge.net http://news.gmane.org/gmane.os.apple.fink.devel
Re: [Fink-devel] dlopen symbol not found
On Dec 3, 2007, at 10:01 PM, Peter O'Gorman wrote: > Yes, but the loader is not looking for ajStrTokenCount, it is looking > for XS_Bio__Emboss_ajStrTokenCount. And that is undefined. > > Did you do jfm's magic on Emboss.bundle? that gives: Macintosh:Emboss koen$ nm -mgu Emboss.bundle | fgrep -v ' (from ' | grep ajStrTokenCount (undefined) external _XS_Bio__Emboss_ajStrTokenCount (dynamically looked up) (undefined) external _XS_Bio__Emboss_ajStrTokenCountR (dynamically looked up) - Koen. - SF.Net email is sponsored by: The Future of Linux Business White Paper from Novell. From the desktop to the data center, Linux is going mainstream. Let it simplify your IT future. http://altfarm.mediaplex.com/ad/ck/8857-50307-18918-4 ___ Fink-devel mailing list Fink-devel@lists.sourceforge.net http://news.gmane.org/gmane.os.apple.fink.devel
Re: [Fink-devel] dlopen symbol not found
On Mon, Dec 03, 2007 at 09:43:51PM -0500, Koen van der Drift wrote: > First of all, thanks for all the help and suggestions. Little by > little I am undestanding more of the whole building process. > > Now for the results :) > > Using JF's test, I don't see any errors, ie nm doesn't print any > symbol names. (BTW, could that script be useful in the validation code > of fink?) Using oTool -L on all the libs, I now see, with Dan's patch > that much more libs are linked. [...] > Unfortunately, I still get the same error: > > t/1Can't load '/sw/src/fink.build/bio-emboss-pm588-5.0.0.1-1/Bio- > Emboss-5.0.0.1/blib/arch/auto/Bio/Emboss/Emboss.bundle' for module > Bio::Emboss: dlopen(/sw/src/fink.build/bio-emboss-pm588-5.0.0.1-1/Bio- > Emboss-5.0.0.1/blib/arch/auto/Bio/Emboss/Emboss.bundle, 1): Symbol not > found: _XS_Bio__Emboss_ajStrTokenCount >Referenced from: /sw/src/fink.build/bio-emboss-pm588-5.0.0.1-1/Bio- > Emboss-5.0.0.1/blib/arch/auto/Bio/Emboss/Emboss.bundle >Expected in: dynamic lookup > > This is with the line > > BEGIN { delete $ENV{PERL_DL_NONLAZY}; }; > > NOT commented out (the code as is). And based on Peter's comment, that > means that there is still something missing [...] > Actually, if I *do* comment out that line, the error changes to: > > t/1Can't load '/sw/src/fink.build/bio-emboss-pm588-5.0.0.1-1/Bio- > Emboss-5.0.0.1/blib/arch/auto/Bio/Emboss/Emboss.bundle' for module > Bio::Emboss: dlopen(/sw/src/fink.build/bio-emboss-pm588-5.0.0.1-1/Bio- > Emboss-5.0.0.1/blib/arch/auto/Bio/Emboss/Emboss.bundle, 2): Symbol not > found: _XS_Bio__Emboss_ajStrTokenCount >Referenced from: /sw/src/fink.build/bio-emboss-pm588-5.0.0.1-1/Bio- > Emboss-5.0.0.1/blib/arch/auto/Bio/Emboss/Emboss.bundle >Expected in: dynamic lookup > at t/1.t line 11 > > Note the 2) instead of the 1) > > So then I thought, maybe there are symbols or libs missing in > Emboss.bundle? oTool -L on that file shows: > > /sw/src/fink.build/bio-emboss-pm588-5.0.0.1-1/Bio-Emboss-5.0.0.1/blib/ > arch/auto/Bio/Emboss/Emboss.bundle: > /sw/lib/EMBOSS/libnucleus.5.dylib (compatibility version 6.0.0, > current version 6.0.0) > /sw/lib/EMBOSS/libajax.5.dylib (compatibility version 6.0.0, current > version 6.0.0) > /sw/lib/EMBOSS/libajaxg.5.dylib (compatibility version 6.0.0, current > version 6.0.0) > /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current > version 1.0.0) > /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current > version 111.0.0) > > That seems ok to me, since ajStrTokenCount is part of libajax. Careful...the missing symbol is _XS_Bio__Emboss_ajStrTokenCount not just ajStrTokenCount. "XS" are symbols from compiled perl modules themselves, not the libs they link. On my 10.3 machine (to which I back-ported the 10.4/5 emboss packages and added my emboss.patch hacks but did not change the PERL_DL_NONLAZY line), bio-emboss-pm586 passes all its tests. That symbol is defined within the Emboss.bundle (one of the results of 'nm Emboss.bundle | grep _XS_Bio__Emboss_ajStrTokenCount' lists it as "T"). In particular, it's supplied by the deprecated_Emboss_str.o file in the bio-emboss-pm586 build dir ("nm" on that file reports it as "T"). Do you have that .o file at all? In the actual compiler command that creates the Emboss.bundle file (a few lines before the tests are run), is that .o included in the list of .o files? Bug that doesn't affect anything: in the bio-emboss-pm.patch, $EMB_EXT_LIBS should be "[EMAIL PROTECTED]@/lib" (need to pass the actual linker flag, not just the pathname where the libs are). dan -- Daniel Macks [EMAIL PROTECTED] http://www.netspace.org/~dmacks - SF.Net email is sponsored by: The Future of Linux Business White Paper from Novell. From the desktop to the data center, Linux is going mainstream. Let it simplify your IT future. http://altfarm.mediaplex.com/ad/ck/8857-50307-18918-4 ___ Fink-devel mailing list Fink-devel@lists.sourceforge.net http://news.gmane.org/gmane.os.apple.fink.devel
Re: [Fink-devel] dlopen symbol not found
On Tue, Dec 04, 2007 at 01:07:42AM -0500, Daniel Macks wrote: > Bug that doesn't affect anything: in the bio-emboss-pm.patch, > $EMB_EXT_LIBS should be "[EMAIL PROTECTED]@/lib" (need to pass the actual > linker flag, not just the pathname where the libs are). Or actually, don't need to pass anything there at all? Seems like this variable is used *in addition to* the default LDFLAGS, which already has fink's normal lib dir. dan -- Daniel Macks [EMAIL PROTECTED] http://www.netspace.org/~dmacks - SF.Net email is sponsored by: The Future of Linux Business White Paper from Novell. From the desktop to the data center, Linux is going mainstream. Let it simplify your IT future. http://altfarm.mediaplex.com/ad/ck/8857-50307-18918-4 ___ Fink-devel mailing list Fink-devel@lists.sourceforge.net http://news.gmane.org/gmane.os.apple.fink.devel