Rev 1240: Merge build improvements. in file:///data/jelmer/bzr-svn/svn-1.5/

Jelmer Vernooij jelmer at samba.org
Sun Jun 22 15:01:08 BST 2008


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

------------------------------------------------------------
revno: 1240
revision-id: jelmer at samba.org-20080622140106-1143ouptxiwik0p2
parent: jelmer at samba.org-20080622134730-epzeouzkor99n5b5
parent: jelmer at samba.org-20080622140033-us0bh43lcatmqh8o
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: svn-1.5
timestamp: Sun 2008-06-22 16:01:06 +0200
message:
  Merge build improvements.
modified:
  setup.py                       setup.py-20060502115218-86950492da22353f
    ------------------------------------------------------------
    revno: 1196.1.75
    revision-id: jelmer at samba.org-20080622140033-us0bh43lcatmqh8o
    parent: jelmer at samba.org-20080622134301-ipt7j95at288i3t3
    committer: Jelmer Vernooij <jelmer at samba.org>
    branch nick: 0.4
    timestamp: Sun 2008-06-22 16:00:33 +0200
    message:
      Make sure all the right flags are specified when compiling extensions.
    modified:
      setup.py                       setup.py-20060502115218-86950492da22353f
=== modified file 'setup.py'
--- a/setup.py	2008-06-22 08:45:53 +0000
+++ b/setup.py	2008-06-22 14:00:33 +0000
@@ -6,21 +6,36 @@
 from distutils.extension import Extension
 import os
 
-def apr_include_dir():
+def apr_build_data():
     """Determine the APR header file location."""
-    f = os.popen("apr-config --includedir")
-    dir = f.read().rstrip("\n")
-    if not os.path.isdir(dir):
+    def apr_config(arg):
+        f = os.popen("apr-config %s" % arg)
+        dir = f.read().rstrip("\n")
+        return dir
+    includedir = apr_config("--includedir")
+    if not os.path.isdir(includedir):
         raise Exception("APR development headers not found")
-    return dir
+    ldflags = apr_config("--ldflags")
+    return (includedir, ldflags)
 
-def svn_include_dir():
+def svn_build_data():
     """Determine the Subversion header file location."""
-    dirs = ["/usr/local/include/subversion-1", "/usr/include/subversion-1"]
-    for dir in dirs:
-        if os.path.isdir(dir):
-            return dir
-    raise Exception("Subversion development headers not found")
+    basedirs = ["/usr/local", "/usr"]
+    for basedir in basedirs:
+        includedir = os.path.join(basedir, "include/subversion-1")
+        if os.path.isdir(includedir):
+            return (includedir, os.path.join(basedir, "lib"))
+    raise Exception("Subversion development files not found")
+
+(apr_includedir, apr_ldflags) = apr_build_data()
+(svn_includedir, svn_libdir) = svn_build_data()
+
+def SvnExtension(*args, **kwargs):
+    kwargs["include_dirs"] = [apr_includedir, svn_includedir]
+    kwargs["library_dirs"] = [svn_libdir]
+    kwargs["extra_link_args"] = [apr_ldflags]
+    return Extension(*args, **kwargs)
+
 
 setup(name='bzr-svn',
       description='Support for Subversion branches in Bazaar',
@@ -42,14 +57,10 @@
                 'bzrlib.plugins.svn.mapping3', 
                 'bzrlib.plugins.svn.tests'],
       ext_modules=[
-          Extension("core", ["core.c", "util.c"], libraries=["svn_subr-1"], 
-                    include_dirs=[apr_include_dir(), svn_include_dir()]), 
-          Extension("client", ["client.c", "editor.c", "util.c", "ra.c", "wc.c"], libraries=["svn_client-1"], 
-                    include_dirs=[apr_include_dir(), svn_include_dir()]), 
-          Extension("ra", ["ra.c", "util.c", "editor.c"], libraries=["svn_ra-1"], 
-                    include_dirs=[apr_include_dir(), svn_include_dir()]), 
-          Extension("repos", ["repos.c", "util.c"], libraries=["svn_repos-1"], 
-                    include_dirs=[apr_include_dir(), svn_include_dir()]), 
-          Extension("wc", ["wc.c", "util.c", "editor.c"], libraries=["svn_wc-1"],
-                     include_dirs=[apr_include_dir(), svn_include_dir()])],
+          SvnExtension("core", ["core.c", "util.c"], libraries=["svn_subr-1"]), 
+          SvnExtension("client", ["client.c", "editor.c", "util.c", "ra.c", "wc.c"], libraries=["svn_client-1"]), 
+          SvnExtension("ra", ["ra.c", "util.c", "editor.c"], libraries=["svn_ra-1"]),
+          SvnExtension("repos", ["repos.c", "util.c"], libraries=["svn_repos-1"]),
+          SvnExtension("wc", ["wc.c", "util.c", "editor.c"], libraries=["svn_wc-1"]),
+          ]
       )




More information about the bazaar-commits mailing list