[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: [PATCH] show help even if some RA modules fail to load

From: Kalle Olavi Niemitalo <kon_at_iki.fi>
Date: 2005-10-25 22:43:39 CEST

Julian Foad <julianfoad@btopenworld.com> writes:

> For "svn help" or "svn diff --help", I don't see how your patch can affect the
> behaviour at all, because you have only patched the svn_ra_print_modules()
> function which isn't used by "help".

It is used in subversion/clients/cmdline/help-cmd.c (svn_cl__help):

  version_footer = svn_stringbuf_create (ra_desc_start, pool);
  SVN_ERR (svn_ra_print_modules (version_footer, pool));

The result always goes as an argument to svn_opt_print_help,
even though it will only be output if --version was given.

>> * ra_dav
>> - Version mismatch in 'svn_delta': found 1.4.0-dev, expected 1.2.0
>> - Version mismatch in 'svn_subr': found 1.4.0-dev, expected 1.2.0
>
> It appears to me that in this example the RA loader found an old (1.2.0)
> version of libra_dav, tried to initialise it, and got told that ra_dav wasn't
> happy with its dependencies.

Yes.

> Can't we raise this checking up a level and make the ra_loader say:
>
> Version mismatch in 'ra_dav': found 1.2.0, expected 1.4.0-dev

libsvn_ra/ra_loader.c (check_ra_version) attempts to check this.
However, it gets the version number of the RA module from the
vtable that the initialization function provides. If the
initialization function fails because the RA module uses other
libraries whose versions don't match, then libsvn_ra cannot
access the vtable and doesn't know the version number of the RA
module.

(I don't quite understand the compatibility requirements there:
if the versions of libsvn_ra and the RA module must match exactly,
then what is the point in having compatibility initfunctions like
svn_ra_dav_init?)

> ~/src/subversion> svn --version
> /home/julianfoad/build/subversion/subversion/clients/cmdline/.libs/lt-svn:
> symbol lookup error:
> /home/julianfoad/build/subversion/subversion/libsvn_ra/.libs/libsvn_ra-1.so.0:
> undefined symbol: svn_ra_dav__init

That error looks like it occurs during process startup, rather than
later when apr_dso_sym is called and the error could be handled.
If I understand correctly, this means ra_loader.c was compiled with
SVN_LIBSVN_CLIENT_LINKS_RA_DAV defined in svn_private_config.h;
perhaps you did not configure with --enable-dso.

(I did not configure with --enable-dso either, but then again I
did not even build libsvn_ra_dav, so the macro was not defined.)

  • application/pgp-signature attachment: stored
Received on Tue Oct 25 22:39:17 2005

This is an archived mail posted to the Subversion Dev mailing list.