Rev 1916: Merge keychain improvements. in file:///data/jelmer/bzr-svn/trunk/

Jelmer Vernooij jelmer at samba.org
Sun Sep 21 23:19:48 BST 2008


At file:///data/jelmer/bzr-svn/trunk/

------------------------------------------------------------
revno: 1916
revision-id: jelmer at samba.org-20080921221936-zd6rmu2mkno82bvm
parent: jelmer at samba.org-20080921135104-x10559n0jryl35es
parent: jelmer at samba.org-20080921221845-cjr9vjqsy3tf99nh
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: trunk
timestamp: Mon 2008-09-22 00:19:36 +0200
message:
  Merge keychain improvements.
modified:
  AUTHORS                        AUTHORS-20060508114718-4c90c0062645106d
  ra.c                           ra.pyx-20080313140933-qybkqaxe3m4mcll7-1
  setup.py                       setup.py-20060502115218-86950492da22353f
    ------------------------------------------------------------
    revno: 1669.1.48
    revision-id: jelmer at samba.org-20080921221845-cjr9vjqsy3tf99nh
    parent: jelmer at samba.org-20080921221814-uoa6x7yy40axzo3e
    committer: Jelmer Vernooij <jelmer at samba.org>
    branch nick: 0.4
    timestamp: Mon 2008-09-22 00:18:45 +0200
    message:
      Remove unnecessary check.
    modified:
      setup.py                       setup.py-20060502115218-86950492da22353f
    ------------------------------------------------------------
    revno: 1669.1.47
    revision-id: jelmer at samba.org-20080921221814-uoa6x7yy40axzo3e
    parent: jelmer at samba.org-20080921130529-vdziwdvh5emt7jof
    parent: bahamut at macstorm.org-20080921220000-tboft1k0cm9d3j6o
    committer: Jelmer Vernooij <jelmer at samba.org>
    branch nick: 0.4
    timestamp: Mon 2008-09-22 00:18:14 +0200
    message:
      Merge check for keychain provider, simplified a bit.
    modified:
      AUTHORS                        AUTHORS-20060508114718-4c90c0062645106d
      ra.c                           ra.pyx-20080313140933-qybkqaxe3m4mcll7-1
      setup.py                       setup.py-20060502115218-86950492da22353f
    ------------------------------------------------------------
    revno: 1669.5.2
    revision-id: bahamut at macstorm.org-20080921220000-tboft1k0cm9d3j6o
    parent: bahamut at macstorm.org-20080921215522-ig0y802bltge8y32
    committer: Jean-Francois Roy <bahamut at macstorm.org>
    branch nick: keychain-check
    timestamp: Sun 2008-09-21 15:00:00 -0700
    message:
      - Fixed a function doc comment error.
    modified:
      setup.py                       setup.py-20060502115218-86950492da22353f
    ------------------------------------------------------------
    revno: 1669.5.1
    revision-id: bahamut at macstorm.org-20080921215522-ig0y802bltge8y32
    parent: jelmer at samba.org-20080921130529-vdziwdvh5emt7jof
    committer: Jean-Francois Roy <bahamut at macstorm.org>
    branch nick: keychain-check
    timestamp: Sun 2008-09-21 14:55:22 -0700
    message:
      - Added a built-time check for availability of the Keychain authentication provider on Mac OS X.
    added:
      keychain_provider_check.c      keychain_provider_ch-20080921215437-sw04velxau7v3fp8-1
    modified:
      ra.c                           ra.pyx-20080313140933-qybkqaxe3m4mcll7-1
      setup.py                       setup.py-20060502115218-86950492da22353f
=== modified file 'AUTHORS'
--- a/AUTHORS	2008-08-31 18:31:05 +0000
+++ b/AUTHORS	2008-09-21 22:18:14 +0000
@@ -37,6 +37,7 @@
 Gustavo Niemeyer
 Martin Pool
 Garrett Rooney
+Jean-Francois Roy
 Johan Rydberg
 Peter Samuelson
 Mark Shuttleworth

=== modified file 'ra.c'
--- a/ra.c	2008-09-21 13:31:05 +0000
+++ b/ra.c	2008-09-21 22:19:36 +0000
@@ -2785,7 +2785,7 @@
 #endif
 #endif
 
-#if defined(DARWIN)
+#if defined(SVN_KEYCHAIN_PROVIDER_AVAILABLE)
 static PyObject *get_keychain_simple_provider(PyObject* self)
 {
 	AuthProviderObject *auth = PyObject_New(AuthProviderObject, &AuthProvider_Type);
@@ -2809,7 +2809,7 @@
 	{ "get_windows_ssl_server_trust_provider", (PyCFunction)get_windows_ssl_server_trust_provider, METH_NOARGS, NULL },
 #endif
 #endif
-#if defined(DARWIN)
+#if defined(SVN_KEYCHAIN_PROVIDER_AVAILABLE)
 	{ "get_keychain_simple_provider", (PyCFunction)get_keychain_simple_provider, METH_NOARGS, NULL },
 #endif
 	{ "get_username_prompt_provider", (PyCFunction)get_username_prompt_provider, METH_VARARGS, NULL },

=== modified file 'setup.py'
--- a/setup.py	2008-09-21 13:51:04 +0000
+++ b/setup.py	2008-09-21 22:19:36 +0000
@@ -106,6 +106,24 @@
     raise Exception("Subversion development files not found. "
                     "Please set SVN_PREFIX or (SVN_LIBRARY_PATH and SVN_HEADER_PATH) environment variable. ")
 
+def is_keychain_provider_available():
+    """
+    Checks for the availability of the Keychain simple authentication provider in Subversion by compiling a simple test program.
+    """
+    abd = apr_build_data()
+    sbd = svn_build_data()
+    gcc_command_args = ['gcc'] + ['-I' + inc for inc in sbd[0]] + ['-L' + lib for lib in sbd[1]] + ['-I' + abd[0], '-lsvn_subr-1', '-x', 'c', '-']
+    (gcc_in, gcc_out, gcc_err) = os.popen3(gcc_command_args)
+    gcc_in.write("""
+#include <svn_auth.h>
+int main(int argc, const char* arv[]) {
+    svn_auth_get_keychain_simple_provider(NULL, NULL);
+}
+""")
+    gcc_in.close()
+    gcc_out.read()
+    return (gcc_out.close() is None)
+
 class VersionQuery(object):
     def __init__(self, filename):
         self.filename = filename
@@ -218,6 +236,12 @@
         kwargs["libraries"] = extra_libs
         # APR needs WIN32 defined.
         kwargs["define_macros"] = [("WIN32", None)]
+    if sys.platform == 'darwin':
+        # on Mac OS X, we need to check for Keychain availability
+        if is_keychain_provider_available():
+            if "define_macros" not in kwargs:
+                kwargs["define_macros"] = []
+            kwargs["define_macros"].extend((('DARWIN', None), ('SVN_KEYCHAIN_PROVIDER_AVAILABLE', '1')))
     return Extension("bzrlib.plugins.svn.%s" % name, *args, **kwargs)
 
 




More information about the bazaar-commits mailing list