Re: [Fink-devel] dlopen symbol not found

2007-12-03 Thread Peter O'Gorman
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

2007-12-03 Thread Koen van der Drift
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

2007-12-03 Thread Koen van der Drift

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

2007-12-03 Thread Daniel Macks
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

2007-12-03 Thread Daniel Macks
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