[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Duplicity-talk] Can't find _librsync?
From: |
Scott Hannahs |
Subject: |
Re: [Duplicity-talk] Can't find _librsync? |
Date: |
Sun, 22 Nov 2009 23:32:09 -0500 |
On Nov 22, 2009, at 7:29 PM, Kenneth Loafman wrote:
> Scott Hannahs wrote:
>> On Nov 22, 2009, at 5:48 PM, Kenneth Loafman wrote:
>>
>>> Scott Hannahs wrote:
>>>> Mac OS X 10.6 and Python 2.6
> <snip>
>> So it seems that python can find the file after all, but the missing
>> routine error is causing it to skip the load step and continue on in
>> the try/fail flow structure with librsync.py
>>
>> I am using version 0.9.7-1003 of librsync. Is this a problem?
>
> It should not be, however, librsync has some dependencies listed:
>
> "Depends: libbz2-1.0, libc6 (>= 2.4), libpopt0 (>= 1.14),
> zlib1g (>= 1:1.1.4)".
>
> Replace the try/except with a straight import in the librsync.py module
> and lets's see if we can get some more info. The pythonpath with the
> full list is the one you'll need to use, so stay with that one. That
> list does include the other libraries above, right?
I have all the dependencies satisfied by fink. That was one reason I installed
it.
I have libpopt and libbz2 installed in the /sw/lib directory as needed.
If I remove the try/except structure and just leave the "import librsync"
command in, I get the ImportError.
Traceback (most recent call last):
File "/usr/local/bin/duplicity", line 41, in <module>
from duplicity import collections
File "/usr/local/lib/python2.6/site-packages/duplicity/collections.py", line
29, in <module>
from duplicity import path
File "/usr/local/lib/python2.6/site-packages/duplicity/path.py", line 33, in
<module>
from duplicity import librsync
File "/usr/local/lib/python2.6/site-packages/duplicity/librsync.py", line 31,
in <module>
import _librsync
ImportError:
dlopen(/usr/local/lib/python2.6/site-packages/duplicity/_librsync.so, 2):
Symbol not found: _rs_file_copy_cb
Referenced from: /usr/local/lib/python2.6/site-packages/duplicity/_librsync.so
Expected in: flat namespace
in /usr/local/lib/python2.6/site-packages/duplicity/_librsync.so
To me this implies that the function rs_file_copy_cb defined in the librsync.h
header file is never actually implemented in the librsync library???!! But if
I inspect the library with the unix "nm" command I find that it is a "T" symbol
and hence defined in either librsync.a or librsync.dylib.
If I dump the symbols in _librsync.so as created by duplicity installer I find
that this along with several others is "undefined"
% nm /usr/local/lib/python2.6/site-packages/duplicity/_librsync.so | grep _rs_
U _rs_build_hash_table
U _rs_delta_begin
U _rs_file_copy_cb
U _rs_free_sumset
U _rs_job_free
U _rs_job_iter
U _rs_loadsig_begin
U _rs_patch_begin
U _rs_sig_begin
Ahhh! I think I have it. My librsync is a 32 bit compile which is
incompatible with the 64 bit python. Thus the link succeeded for only one
architecture and failed for the other two?
More when I reinstall all my libraries...
-Scott