]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
pybind: use distutils.sysconfig for compiling flags
authorKefu Chai <kchai@redhat.com>
Mon, 8 Jul 2019 14:08:57 +0000 (22:08 +0800)
committerKefu Chai <kchai@redhat.com>
Mon, 8 Jul 2019 16:23:42 +0000 (00:23 +0800)
this allows maintainer to override the compiling flags when
cross-compiling Ceph.

Signed-off-by: Kefu Chai <kchai@redhat.com>
src/pybind/cephfs/setup.py
src/pybind/rados/setup.py
src/pybind/rbd/setup.py
src/pybind/rgw/setup.py

index 63858407374dd7118ec24241ffc0dfef053c56ff..a4374b1a48639247282674285c4ffee7db07c134 100755 (executable)
@@ -48,37 +48,16 @@ else:
 __version__ = '2.0.0'
 
 
-def get_python_flags():
-    cflags = {'I': [], 'extras': []}
-    ldflags = {'l': [], 'L': [], 'extras': []}
-
-    if os.environ.get('VIRTUAL_ENV', None):
-        python = "python"
-    else:
-        python = 'python' + str(sys.version_info.major) + '.' + str(sys.version_info.minor)
-
-    python_config = python + '-config'
-
-    for cflag in filter_unsupported_flags(subprocess.check_output(
-            [python_config, "--cflags"]).strip().decode('utf-8').split()):
-        if cflag.startswith('-I'):
-            cflags['I'].append(cflag.replace('-I', ''))
-        else:
-            cflags['extras'].append(cflag)
-
-    for ldflag in filter_unsupported_flags(subprocess.check_output(
-            [python_config, "--ldflags"]).strip().decode('utf-8').split()):
-        if ldflag.startswith('-l'):
-            ldflags['l'].append(ldflag.replace('-l', ''))
-        if ldflag.startswith('-L'):
-            ldflags['L'].append(ldflag.replace('-L', ''))
-        else:
-            ldflags['extras'].append(ldflag)
-
-    return {
-        'cflags': cflags,
-        'ldflags': ldflags
-    }
+def get_python_flags(libs):
+    py_libs = sum((libs.split() for libs in
+                   distutils.sysconfig.get_config_vars('LIBS', 'SYSLIBS')), [])
+    return dict(
+        include_dirs=[distutils.sysconfig.get_python_inc()],
+        library_dirs=distutils.sysconfig.get_config_vars('LIBDIR', 'LIBPL'),
+        libraries=libs + [lib.replace('-l', '') for lib in py_libs],
+        extra_compile_args=distutils.sysconfig.get_config_var('CFLAGS').split(),
+        extra_link_args=(distutils.sysconfig.get_config_var('LDFLAGS').split() +
+                         distutils.sysconfig.get_config_var('LINKFORSHARED').split()))
 
 
 def check_sanity():
@@ -178,8 +157,6 @@ if (len(sys.argv) >= 2 and
     def cythonize(x, **kwargs):
         return x
 
-flags = get_python_flags()
-
 setup(
     name='cephfs',
     version=__version__,
@@ -200,10 +177,7 @@ setup(
             Extension(
                 "cephfs",
                 [source],
-                include_dirs=flags['cflags']['I'],
-                library_dirs=flags['ldflags']['L'],
-                libraries=['cephfs'] + flags['ldflags']['l'],
-                extra_compile_args=flags['cflags']['extras'] + flags['ldflags']['extras'],
+                **get_python_flags(['cephfs'])
             )
         ],
         compiler_directives={'language_level': sys.version_info.major},
index 4f391703b3afc8a95972be48d5449a48336f1fdc..30d8718fa87d5dc5edb9df3bd7627795910adaf7 100755 (executable)
@@ -48,37 +48,16 @@ distutils.sysconfig.customize_compiler = monkey_with_compiler
 __version__ = '2.0.0'
 
 
-def get_python_flags():
-    cflags = {'I': [], 'extras': []}
-    ldflags = {'l': [], 'L': [], 'extras': []}
-
-    if os.environ.get('VIRTUAL_ENV', None):
-        python = "python"
-    else:
-        python = 'python' + str(sys.version_info.major) + '.' + str(sys.version_info.minor)
-
-    python_config = python + '-config'
-
-    for cflag in filter_unsupported_flags(subprocess.check_output(
-            [python_config, "--cflags"]).strip().decode('utf-8').split()):
-        if cflag.startswith('-I'):
-            cflags['I'].append(cflag.replace('-I', ''))
-        else:
-            cflags['extras'].append(cflag)
-
-    for ldflag in filter_unsupported_flags(subprocess.check_output(
-            [python_config, "--ldflags"]).strip().decode('utf-8').split()):
-        if ldflag.startswith('-l'):
-            ldflags['l'].append(ldflag.replace('-l', ''))
-        if ldflag.startswith('-L'):
-            ldflags['L'].append(ldflag.replace('-L', ''))
-        else:
-            ldflags['extras'].append(ldflag)
-
-    return {
-        'cflags': cflags,
-        'ldflags': ldflags
-    }
+def get_python_flags(libs):
+    py_libs = sum((libs.split() for libs in
+                   distutils.sysconfig.get_config_vars('LIBS', 'SYSLIBS')), [])
+    return dict(
+        include_dirs=[distutils.sysconfig.get_python_inc()],
+        library_dirs=distutils.sysconfig.get_config_vars('LIBDIR', 'LIBPL'),
+        libraries=libs + [lib.replace('-l', '') for lib in py_libs],
+        extra_compile_args=distutils.sysconfig.get_config_var('CFLAGS').split(),
+        extra_link_args=(distutils.sysconfig.get_config_var('LDFLAGS').split() +
+                         distutils.sysconfig.get_config_var('LINKFORSHARED').split()))
 
 
 def check_sanity():
@@ -174,8 +153,6 @@ if (len(sys.argv) >= 2 and
     def cythonize(x, **kwargs):
         return x
 
-flags = get_python_flags()
-
 setup(
     name='rados',
     version=__version__,
@@ -195,10 +172,7 @@ setup(
             Extension(
                 "rados",
                 [source],
-                include_dirs=flags['cflags']['I'],
-                library_dirs=flags['ldflags']['L'],
-                libraries=["rados"] + flags['ldflags']['l'],
-                extra_compile_args=flags['cflags']['extras'] + flags['ldflags']['extras'],
+                **get_python_flags(['rados'])
             )
         ],
         compiler_directives={'language_level': sys.version_info.major},
index c4232700fd26e4ca8f320fdeeedaf9d9b416c5a7..6d88220e3c71c00e7aa1fa8bc3f0f39026cf0a79 100755 (executable)
@@ -48,37 +48,16 @@ else:
 __version__ = '2.0.0'
 
 
-def get_python_flags():
-    cflags = {'I': [], 'extras': []}
-    ldflags = {'l': [], 'L': [], 'extras': []}
-
-    if os.environ.get('VIRTUAL_ENV', None):
-        python = "python"
-    else:
-        python = 'python' + str(sys.version_info.major) + '.' + str(sys.version_info.minor)
-
-    python_config = python + '-config'
-
-    for cflag in filter_unsupported_flags(subprocess.check_output(
-            [python_config, "--cflags"]).strip().decode('utf-8').split()):
-        if cflag.startswith('-I'):
-            cflags['I'].append(cflag.replace('-I', ''))
-        else:
-            cflags['extras'].append(cflag)
-
-    for ldflag in filter_unsupported_flags(subprocess.check_output(
-            [python_config, "--ldflags"]).strip().decode('utf-8').split()):
-        if ldflag.startswith('-l'):
-            ldflags['l'].append(ldflag.replace('-l', ''))
-        if ldflag.startswith('-L'):
-            ldflags['L'].append(ldflag.replace('-L', ''))
-        else:
-            ldflags['extras'].append(ldflag)
-
-    return {
-        'cflags': cflags,
-        'ldflags': ldflags
-    }
+def get_python_flags(libs):
+    py_libs = sum((libs.split() for libs in
+                   distutils.sysconfig.get_config_vars('LIBS', 'SYSLIBS')), [])
+    return dict(
+        include_dirs=[distutils.sysconfig.get_python_inc()],
+        library_dirs=distutils.sysconfig.get_config_vars('LIBDIR', 'LIBPL'),
+        libraries=libs + [lib.replace('-l', '') for lib in py_libs],
+        extra_compile_args=distutils.sysconfig.get_config_var('CFLAGS').split(),
+        extra_link_args=(distutils.sysconfig.get_config_var('LDFLAGS').split() +
+                         distutils.sysconfig.get_config_var('LINKFORSHARED').split()))
 
 
 def check_sanity():
@@ -177,8 +156,6 @@ if (len(sys.argv) >= 2 and
     def cythonize(x, **kwargs):
         return x
 
-flags = get_python_flags()
-
 setup(
     name='rbd',
     version=__version__,
@@ -199,10 +176,7 @@ setup(
             Extension(
                 "rbd",
                 [source],
-                include_dirs=flags['cflags']['I'],
-                library_dirs=flags['ldflags']['L'],
-                libraries=['rbd', 'rados'] + flags['ldflags']['l'],
-                extra_compile_args=flags['cflags']['extras'] + flags['ldflags']['extras'],
+                **get_python_flags(['rbd', 'rados'])
             )
         ],
         compiler_directives={'language_level': sys.version_info.major},
index e1d7a35cbc6c39524aa9543247b6decae833e335..771345bd0014e3e40f1fe6db7f38da36212ccfcc 100755 (executable)
@@ -50,37 +50,17 @@ else:
 
 __version__ = '2.0.0'
 
-def get_python_flags():
-    cflags = {'I': [], 'extras': []}
-    ldflags = {'l': [], 'L': [], 'extras': []}
 
-    if os.environ.get('VIRTUAL_ENV', None):
-        python = "python"
-    else:
-        python = 'python' + str(sys.version_info.major) + '.' + str(sys.version_info.minor)
-
-    python_config = python + '-config'
-
-    for cflag in filter_unsupported_flags(subprocess.check_output(
-            [python_config, "--cflags"]).strip().decode('utf-8').split()):
-        if cflag.startswith('-I'):
-            cflags['I'].append(cflag.replace('-I', ''))
-        else:
-            cflags['extras'].append(cflag)
-
-    for ldflag in filter_unsupported_flags(subprocess.check_output(
-            [python_config, "--ldflags"]).strip().decode('utf-8').split()):
-        if ldflag.startswith('-l'):
-            ldflags['l'].append(ldflag.replace('-l', ''))
-        if ldflag.startswith('-L'):
-            ldflags['L'].append(ldflag.replace('-L', ''))
-        else:
-            ldflags['extras'].append(ldflag)
-
-    return {
-        'cflags': cflags,
-        'ldflags': ldflags
-    }
+def get_python_flags(libs):
+    py_libs = sum((libs.split() for libs in
+                   distutils.sysconfig.get_config_vars('LIBS', 'SYSLIBS')), [])
+    return dict(
+        include_dirs=[distutils.sysconfig.get_python_inc()],
+        library_dirs=distutils.sysconfig.get_config_vars('LIBDIR', 'LIBPL'),
+        libraries=libs + [lib.replace('-l', '') for lib in py_libs],
+        extra_compile_args=distutils.sysconfig.get_config_var('CFLAGS').split(),
+        extra_link_args=(distutils.sysconfig.get_config_var('LDFLAGS').split() +
+                         distutils.sysconfig.get_config_var('LINKFORSHARED').split()))
 
 
 def check_sanity():
@@ -179,8 +159,6 @@ if (len(sys.argv) >= 2 and
     def cythonize(x, **kwargs):
         return x
 
-flags = get_python_flags()
-
 setup(
     name='rgw',
     version=__version__,
@@ -200,10 +178,7 @@ setup(
             Extension(
                 "rgw",
                 [source],
-                include_dirs=flags['cflags']['I'],
-                library_dirs=flags['ldflags']['L'],
-                libraries=['rados', 'rgw'] + flags['ldflags']['l'],
-                extra_compile_args=flags['cflags']['extras'] + flags['ldflags']['extras'],
+                **get_python_flags(['rados', 'rgw'])
             )
         ],
         compiler_directives={'language_level': sys.version_info.major},