During the Subversion 1.8 upgrade I accidentally broke gnome
keyring support. Specifically, the libsvn_auth_gnome_keyring
library fails to dlopen() because the ports infrastructure
appends a custom version to the soname, while Subversion expects
a different name. Patch Subversion to look for the right name.

Register the -gnome-keyring subpackage as a test dependency to
make auth-tests pass (which check for this exact problem).

Also, move SUBST_CMD execution into post-patch so the result
of 'make patch' matches what will be conigured/compiled.

ok?

Index: Makefile
===================================================================
RCS file: /cvs/ports/devel/subversion/Makefile,v
retrieving revision 1.129
diff -u -p -r1.129 Makefile
--- Makefile    25 Nov 2013 17:08:06 -0000      1.129
+++ Makefile    20 Jan 2014 13:17:21 -0000
@@ -9,6 +9,7 @@ COMMENT-gnome-keyring=  GNOME keyring sup
 
 VERSION=               1.8.5
 DISTNAME=              subversion-${VERSION}
+REVISION-main =        0
 PKGNAME-main=          ${DISTNAME}
 FULLPKGNAME-perl=      p5-SVN-${VERSION}
 FULLPKGPATH-perl=      devel/subversion,-perl
@@ -175,14 +176,17 @@ CONFIGURE_ARGS+=--without-apxs
 .endif
 
 TEST_DEPENDS=${MODPY_RUN_DEPENDS}
-SUBST_VARS+=   LOCALBASE
+TEST_DEPENDS+= ${FULLPKGNAME-gnome-keyring}:${BUILD_PKGPATH},-gnome-keyring
+SUBST_VARS+=   LOCALBASE SO_VERSION
 
 pre-patch:
        @ln -s ${MODPY_BIN} ${WRKDIR}/bin/python
 
-pre-configure:
+post-patch:
        @${SUBST_CMD} ${WRKSRC}/Makefile.in ${WRKSRC}/configure.ac \
                ${WRKSRC}/subversion/libsvn_subr/auth.c
+
+pre-configure:
        @cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} \
                AUTOCONF_VERSION=${AUTOCONF_VERSION} ./autogen.sh
 
Index: patches/patch-subversion_libsvn_subr_auth_c
===================================================================
RCS file: patches/patch-subversion_libsvn_subr_auth_c
diff -N patches/patch-subversion_libsvn_subr_auth_c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-subversion_libsvn_subr_auth_c 20 Jan 2014 13:11:21 -0000
@@ -0,0 +1,15 @@
+$OpenBSD$
+--- subversion/libsvn_subr/auth.c.orig Mon Jan 20 14:02:33 2014
++++ subversion/libsvn_subr/auth.c      Mon Jan 20 14:11:07 2014
+@@ -454,9 +454,9 @@ svn_auth_get_platform_specific_provider(svn_auth_provi
+       const char *library_label, *library_name;
+       const char *provider_function_name, *version_function_name;
+       library_name = apr_psprintf(pool,
+-                                  "libsvn_auth_%s-%d.so.%d",
++                                  "libsvn_auth_%s-%d.so.%s",
+                                   provider_name,
+-                                  SVN_VER_MAJOR, SVN_SOVERSION);
++                                  SVN_VER_MAJOR, "${SO_VERSION}");
+       library_label = apr_psprintf(pool, "svn_%s", provider_name);
+       provider_function_name = apr_psprintf(pool,
+                                             "svn_auth_get_%s_%s_provider",

Reply via email to