Author: stsp Date: Mon Jul 25 23:00:20 2011 New Revision: 1150950 URL: http://svn.apache.org/viewvc?rev=1150950&view=rev Log: Remove libsvn_auth_gpg_agent and move gpg-agent support into libsvn_subr.
There is no need to put gpg-agent support into a library loaded at runtime. The svn code talks to the GPG agent via a UNIX stream socket. There are no massive external library dependencies involved that we need to keep at a distance, as with GNOME or KDE. This should also fix the problem where svn fails to enable gpg-agent support on Mac OS X because of a filename mismatch (*.so vs. *.dylib). * subversion/include/svn_auth.h (svn_auth_gpg_agent_version): Remove declaration. A version function is only needed for DSOs. (svn_auth_get_gpg_agent_simple_provider): Declare this function on Darwin. Remove mention of libsvn_auth_gpg_agent from docstring. * subversion/libsvn_auth_gpg_agent, subversion/libsvn_auth_gpg_agent/version.c: Remove. * subversion/libsvn_auth_gpg_agent/gpg_agent.c: Move to ... * subversion/libsvn_subr/gpg_agent.c: ... here. Wrap all code into the SVN_HAVE_GPG_AGENT define. * subversion/libsvn_subr/auth.c (svn_auth_get_platform_specific_provider): Directly call svn_auth_get_gpg_agent_simple_provider() if SVN_HAVE_GPG_AGENT is defined instead of loading gpg-agent support as a DSO. * subversion/bindings/swig/core.i: Remove svn_auth_gpg_agent_version. * configure.ac, build.conf, build/generator/gen_make.py, build/generator/gen_win.py: Remove references to libsvn_auth_gpg_agent. Added: subversion/trunk/subversion/libsvn_subr/gpg_agent.c - copied, changed from r1150916, subversion/trunk/subversion/libsvn_auth_gpg_agent/gpg_agent.c Removed: subversion/trunk/subversion/libsvn_auth_gpg_agent/ Modified: subversion/trunk/build.conf subversion/trunk/build/generator/gen_make.py subversion/trunk/build/generator/gen_win.py subversion/trunk/configure.ac subversion/trunk/subversion/bindings/swig/core.i subversion/trunk/subversion/include/svn_auth.h subversion/trunk/subversion/libsvn_subr/auth.c Modified: subversion/trunk/build.conf URL: http://svn.apache.org/viewvc/subversion/trunk/build.conf?rev=1150950&r1=1150949&r2=1150950&view=diff ============================================================================== --- subversion/trunk/build.conf (original) +++ subversion/trunk/build.conf Mon Jul 25 23:00:20 2011 @@ -174,14 +174,6 @@ libs = libsvn_client libsvn_ra libsvn_re install = bin manpages = subversion/svnrdump/svnrdump.1 -# Support for GPG Agent -[libsvn_auth_gpg_agent]] -description = Subversion GPG Agent library -type = lib -install = gpg-agent-lib -path = subversion/libsvn_auth_gpg_agent -libs = apr libsvn_subr - # Support for GNOME Keyring [libsvn_auth_gnome_keyring] description = Subversion GNOME Keyring Library Modified: subversion/trunk/build/generator/gen_make.py URL: http://svn.apache.org/viewvc/subversion/trunk/build/generator/gen_make.py?rev=1150950&r1=1150949&r2=1150950&view=diff ============================================================================== --- subversion/trunk/build/generator/gen_make.py (original) +++ subversion/trunk/build/generator/gen_make.py Mon Jul 25 23:00:20 2011 @@ -531,8 +531,7 @@ DIR=`pwd` ''') libdep_cache = {} paths = {} - for lib in ('libsvn_auth_gnome_keyring', 'libsvn_auth_kwallet', - 'libsvn_auth_gpg_agent'): + for lib in ('libsvn_auth_gnome_keyring', 'libsvn_auth_kwallet'): paths[lib] = self.sections[lib].options.get('path') for target_ob in install_sources: if not isinstance(target_ob, gen_base.TargetExe): @@ -564,8 +563,7 @@ DIR=`pwd` for lib in self._get_all_lib_deps(lib_name, libdep_cache, paths): libs.add(lib) if target_name == 'libsvn_subr': - libs.update(('libsvn_auth_gnome_keyring', 'libsvn_auth_kwallet', - 'libsvn_auth_gpg_agent')) + libs.update(('libsvn_auth_gnome_keyring', 'libsvn_auth_kwallet')) libdep_cache[target_name] = sorted(libs) return libdep_cache[target_name] Modified: subversion/trunk/build/generator/gen_win.py URL: http://svn.apache.org/viewvc/subversion/trunk/build/generator/gen_win.py?rev=1150950&r1=1150949&r2=1150950&view=diff ============================================================================== --- subversion/trunk/build/generator/gen_win.py (original) +++ subversion/trunk/build/generator/gen_win.py Mon Jul 25 23:00:20 2011 @@ -91,8 +91,7 @@ class GeneratorBase(gen_base.GeneratorBa self.skip_sections = { 'mod_dav_svn': None, 'mod_authz_svn': None, 'libsvn_auth_kwallet': None, - 'libsvn_auth_gnome_keyring': None, - 'libsvn_auth_gpg_agent': None } + 'libsvn_auth_gnome_keyring': None } # Instrumentation options self.disable_shared = None Modified: subversion/trunk/configure.ac URL: http://svn.apache.org/viewvc/subversion/trunk/configure.ac?rev=1150950&r1=1150949&r2=1150950&view=diff ============================================================================== --- subversion/trunk/configure.ac (original) +++ subversion/trunk/configure.ac Mon Jul 25 23:00:20 2011 @@ -820,12 +820,6 @@ if test "$with_gnome_keyring" = "yes"; t INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-gnome-keyring-lib" fi -if test "$with_gpg_agent" = "yes"; then - BUILD_RULES="$BUILD_RULES gpg-agent-lib" - INSTALL_RULES="`echo $INSTALL_RULES | sed 's/install-lib/install-lib install-gpg-agent-lib/'`" - INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-gpg-agent-lib" -fi - if test "$USE_NLS" = "yes"; then BUILD_RULES="$BUILD_RULES locale" INSTALL_RULES="$INSTALL_RULES install-locale" Modified: subversion/trunk/subversion/bindings/swig/core.i URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/swig/core.i?rev=1150950&r1=1150949&r2=1150950&view=diff ============================================================================== --- subversion/trunk/subversion/bindings/swig/core.i (original) +++ subversion/trunk/subversion/bindings/swig/core.i Mon Jul 25 23:00:20 2011 @@ -244,7 +244,6 @@ %ignore svn_auth_kwallet_version; %ignore svn_auth_get_kwallet_simple_provider; %ignore svn_auth_get_kwallet_ssl_client_cert_pw_provider; -%ignore svn_auth_gpg_agent_version; %ignore svn_auth_get_gpg_agent_simple_provider; /* bad pool convention */ Modified: subversion/trunk/subversion/include/svn_auth.h URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/include/svn_auth.h?rev=1150950&r1=1150949&r2=1150950&view=diff ============================================================================== --- subversion/trunk/subversion/include/svn_auth.h (original) +++ subversion/trunk/subversion/include/svn_auth.h Mon Jul 25 23:00:20 2011 @@ -1070,17 +1070,9 @@ void svn_auth_get_kwallet_ssl_client_cert_pw_provider( svn_auth_provider_object_t **provider, apr_pool_t *pool); +#endif /* (!DARWIN && !WIN32) || DOXYGEN */ - -/** - * Get libsvn_auth_gpg_agent version information. - * - * @since New in 1.8. - */ -const svn_version_t * -svn_auth_gpg_agent_version(void); - - +#if !defined(WIN32) || defined(DOXYGEN) /** * Set @a *provider to an authentication provider of type @c * svn_auth_cred_simple_t that gets/sets information from the user's @@ -1094,13 +1086,13 @@ svn_auth_gpg_agent_version(void); * * @since New in 1.8 * @note This function actually works only on systems with - * libsvn_auth_gpg_agent and GNU Privacy Guard installed. + * GNU Privacy Guard installed. */ void svn_auth_get_gpg_agent_simple_provider (svn_auth_provider_object_t **provider, apr_pool_t *pool); -#endif /* (!DARWIN && !WIN32) || DOXYGEN */ +#endif /* !defined(WIN32) || defined(DOXYGEN) */ /** Set @a *provider to an authentication provider of type @c Modified: subversion/trunk/subversion/libsvn_subr/auth.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/auth.c?rev=1150950&r1=1150949&r2=1150950&view=diff ============================================================================== --- subversion/trunk/subversion/libsvn_subr/auth.c (original) +++ subversion/trunk/subversion/libsvn_subr/auth.c Mon Jul 25 23:00:20 2011 @@ -391,12 +391,9 @@ svn_auth_get_platform_specific_provider *provider = NULL; if (apr_strnatcmp(provider_name, "gnome_keyring") == 0 || - apr_strnatcmp(provider_name, "kwallet") == 0 || - (apr_strnatcmp(provider_name, "gpg_agent") == 0 && - strcmp(provider_type, "simple") == 0)) + apr_strnatcmp(provider_name, "kwallet") == 0) { -#if defined(SVN_HAVE_GNOME_KEYRING) || defined(SVN_HAVE_KWALLET) || \ -defined(SVN_HAVE_GPG_AGENT) +#if defined(SVN_HAVE_GNOME_KEYRING) || defined(SVN_HAVE_KWALLET) apr_dso_handle_t *dso; apr_dso_handle_sym_t provider_function_symbol, version_function_symbol; const char *library_label, *library_name; @@ -450,6 +447,13 @@ defined(SVN_HAVE_GPG_AGENT) } else { +#if defined(SVN_HAVE_GPG_AGENT) + if (strcmp(provider_name, "gpg_agent") == 0 && + strcmp(provider_type, "simple") == 0) + { + svn_auth_get_gpg_agent_simple_provider(provider, pool); + } +#endif #ifdef SVN_HAVE_KEYCHAIN_SERVICES if (strcmp(provider_name, "keychain") == 0 && strcmp(provider_type, "simple") == 0) Copied: subversion/trunk/subversion/libsvn_subr/gpg_agent.c (from r1150916, subversion/trunk/subversion/libsvn_auth_gpg_agent/gpg_agent.c) URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/gpg_agent.c?p2=subversion/trunk/subversion/libsvn_subr/gpg_agent.c&p1=subversion/trunk/subversion/libsvn_auth_gpg_agent/gpg_agent.c&r1=1150916&r2=1150950&rev=1150950&view=diff ============================================================================== --- subversion/trunk/subversion/libsvn_auth_gpg_agent/gpg_agent.c (original) +++ subversion/trunk/subversion/libsvn_subr/gpg_agent.c Mon Jul 25 23:00:20 2011 @@ -45,6 +45,8 @@ #include "svn_private_config.h" +#ifdef SVN_HAVE_GPG_AGENT + #define BUFFER_SIZE 1024 /* Modify STR in-place such that blanks are escaped as required by the @@ -420,3 +422,5 @@ svn_auth_get_gpg_agent_simple_provider po->vtable = &gpg_agent_simple_provider; *provider = po; } + +#endif /* SVN_HAVE_GPG_AGENT */