On Mon, Jun 10, 2002 at 01:44:05AM -0700, David Mankin wrote: >... > I configured and built svn with the --enable-maintainer-mode and > --disable-shared. >... > However, I think there might also be a bug (or several) in Subversion. > I compiled with --disable-shared, and yet subversion is still trying to > load a dynamic library. I'm trying to do an HTTP checkout, and yet it's > trying to load a dynamic library for RA local. Both of these seem like > they might be problems.
Not a problem, actually. The RA layer knows that ra_dav was linked in, and that ra_local is *not* linked in. Thus, it attempts to load it dynamically since the DSO facilities are available in APR. The --disable-shared switch controls whether shared libraries are *built*. It doesn't control whether SVN will attempt to find RA modules that were not linked into the app. > (And even with my patch to APR, I still get a > warning, about not being able to load libsvn_ra_local.so, every time I > do anything with the client. Maybe my patch should throw away the error > instead of printing it?) Hmm? What is printing that warning? I don't see any code in ra_loader.c that would do that. > [A fourth thing that may be an issue: when I modified dso.c and then > re-ran make from the top-level svn makefile, it didn't re-link the svn > binary, even though the apr.la (?) library had changed. I had to touch > clients/cmdline/main.c in order to force make to rebuild svn.] Hmm. That does seem to be a problem. Could you file an issue about that? >... > +/* > + * Under Darwin, we need to have a linkEdit error handler, or else if > + * NSAddLibrary() fails, it will exit the whole program. This function > prints > + * the same message that the OS would, but does not exit the program. > + */ > +#if defined(DSO_USE_DYLD) > +APR_DECLARE(void) apr_dso_load_linkEdit_errorhander(NSLinkEditErrors > errorClass, > + int errorNumber, > + const char *filename, > + const char *errorString) > +{ > + if (errorString != NULL) { > + fprintf(stderr, "%s", errorString); > + } else { > + fprintf(stderr, "LinkEdit error! errorno = %d\n", errorNumber); > + } The APR library is not allowed to use stderr. The only thing you can do is return errors. Cheers, -g -- Greg Stein, http://www.lyra.org/