apr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Greg Stein <gst...@lyra.org>
Subject Re: [APR PATCH] Bootstrapping problem on Mac OS X
Date Tue, 11 Jun 2002 05:34:09 GMT
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/

Mime
View raw message