On 9/12/14 11:54 AM, Branko Čibej wrote: > On 12.09.2014 20:37, Philip Martin wrote: >> Philip Martin <philip.mar...@wandisco.com> writes: >> >>> Alexey Neyman <sti...@att.net> writes: >>> >>>> Rather, I think, it is that the libsvn_swig_perl-1.so.0 does not list the >>>> _Core.so as a dependency: >>> I don't think that's the way it works. When Perl uses a module such as >>> SVN::Repos then Perl itself knows to uses SVN::Core as a dependency. >>> That causes the shared objects _Repos.so and _Core.so to be loaded. You >>> should see that _Core.so has libsvn_swig_perl-1.so as a dependency. >> After a bit of testing on my machine it appears that loading SVN::Repos >> doesn't load SVN::Core automatically. I can reproduce your error on my >> system, and I can solve it by adding 'use SVN::Core' to the script. > > All our Perl bindings tests explicitly load SVN::Core. I'm not sure what > the intent of the packaging was initially, but it appears that the > cross-module dependencies aren't exposed to the module loader; so > loading SVN::Core is pretty much required in any script that uses our > Perl bindings. > > I think this is more of a mess than a bug. :)
The Perl bindings have a different layout that breaks what most other bindings refer to as core into two libraries. SVN::Base (which is the raw symbols that the created by swig and is needed by every module in order to bootstrap, specifically it loads the _Module.so libraries that Alexey and Philip are talking about above.). SVN::Core (which handles some initialization and wrapping of our basic types e.g. streams and pools). SVN::Client and SVN::Wc both load SVN::Core for you. Other modules do not and their examples in their documentation show you loading SVN::Core. I'd bet that I'm the one that added the loading of SVN::Core to SVN::Client and SVN::Wc since I was trying to make them friendly to use. The other modules have never really been made friendly to users. We've done something really weird with svn_swig_pl_get_current_pool() that I haven't quiet wrapped my head around yet. But yes I agree this is a mess.