]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
pybind: move linker flags out of "libraries"
authorKefu Chai <kchai@redhat.com>
Sun, 15 Mar 2020 02:47:44 +0000 (10:47 +0800)
committerKefu Chai <kchai@redhat.com>
Sun, 15 Mar 2020 02:56:10 +0000 (10:56 +0800)
sometimes, `distutils.sysconfig.get_config_vars('LIBS')` returns flags
not starting with `-l`, and hence we should not allow
`setuptools.extension.Extension` to rebuild the `-l` options from those
flags, otherwise the linker just fails as the `-l-flags_for_linker` will
be passed to the linker.

in this change, those linker flags are passed directly to linker.

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 19ae6c329afa71a16da9c46d005d88170946778e..9d2e672e944051d817a2c1fff5a00d001677c076 100755 (executable)
@@ -61,17 +61,20 @@ __version__ = '2.0.0'
 def get_python_flags(libs):
     py_libs = sum((libs.split() for libs in
                    distutils.sysconfig.get_config_vars('LIBS', 'SYSLIBS')), [])
+    ldflags = list(filterfalse(lambda lib: lib.startswith('-l'), py_libs))
+    py_libs = [lib.replace('-l', '') for lib in
+               filter(lambda lib: lib.startswith('-l'), py_libs)]
     compiler = new_compiler()
     distutils.sysconfig.customize_compiler(compiler)
     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],
+        libraries=libs + py_libs,
         extra_compile_args=filter_unsupported_flags(
             compiler.compiler[0],
             distutils.sysconfig.get_config_var('CFLAGS').split()),
         extra_link_args=(distutils.sysconfig.get_config_var('LDFLAGS').split() +
-                         distutils.sysconfig.get_config_var('LINKFORSHARED').split()))
+                         ldflags))
 
 
 def check_sanity():
index e2c5696404089bbb25ada39d810384606346613e..5036e0668e7cc13e28ae5f0e04b1b7504aa22c70 100755 (executable)
@@ -64,17 +64,20 @@ __version__ = '2.0.0'
 def get_python_flags(libs):
     py_libs = sum((libs.split() for libs in
                    distutils.sysconfig.get_config_vars('LIBS', 'SYSLIBS')), [])
+    ldflags = list(filterfalse(lambda lib: lib.startswith('-l'), py_libs))
+    py_libs = [lib.replace('-l', '') for lib in
+               filter(lambda lib: lib.startswith('-l'), py_libs)]
     compiler = new_compiler()
     distutils.sysconfig.customize_compiler(compiler)
     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],
+        libraries=libs + py_libs,
         extra_compile_args=filter_unsupported_flags(
             compiler.compiler[0],
             distutils.sysconfig.get_config_var('CFLAGS').split()),
         extra_link_args=(distutils.sysconfig.get_config_var('LDFLAGS').split() +
-                         distutils.sysconfig.get_config_var('LINKFORSHARED').split()))
+                         ldflags))
 
 
 def check_sanity():
index 634484f14029bdbbd961667d225ef14ec541c880..2f4a2a5339f0f50aa53bbba6ffa5d5762c3aee51 100755 (executable)
@@ -61,17 +61,20 @@ __version__ = '2.0.0'
 def get_python_flags(libs):
     py_libs = sum((libs.split() for libs in
                    distutils.sysconfig.get_config_vars('LIBS', 'SYSLIBS')), [])
+    ldflags = list(filterfalse(lambda lib: lib.startswith('-l'), py_libs))
+    py_libs = [lib.replace('-l', '') for lib in
+               filter(lambda lib: lib.startswith('-l'), py_libs)]
     compiler = new_compiler()
     distutils.sysconfig.customize_compiler(compiler)
     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],
+        libraries=libs + py_libs,
         extra_compile_args=filter_unsupported_flags(
             compiler.compiler[0],
             distutils.sysconfig.get_config_var('CFLAGS').split()),
         extra_link_args=(distutils.sysconfig.get_config_var('LDFLAGS').split() +
-                         distutils.sysconfig.get_config_var('LINKFORSHARED').split()))
+                         ldflags))
 
 
 def check_sanity():
index eb1591a460ae8b77b2bd6556c438c052ccef2122..882807cd014ff5635dfd4c4439bc7a4315870314 100755 (executable)
@@ -62,17 +62,20 @@ __version__ = '2.0.0'
 def get_python_flags(libs):
     py_libs = sum((libs.split() for libs in
                    distutils.sysconfig.get_config_vars('LIBS', 'SYSLIBS')), [])
+    ldflags = list(filterfalse(lambda lib: lib.startswith('-l'), py_libs))
+    py_libs = [lib.replace('-l', '') for lib in
+               filter(lambda lib: lib.startswith('-l'), py_libs)]
     compiler = new_compiler()
     distutils.sysconfig.customize_compiler(compiler)
     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],
+        libraries=libs + py_libs,
         extra_compile_args=filter_unsupported_flags(
             compiler.compiler[0],
             distutils.sysconfig.get_config_var('CFLAGS').split()),
         extra_link_args=(distutils.sysconfig.get_config_var('LDFLAGS').split() +
-                         distutils.sysconfig.get_config_var('LINKFORSHARED').split()))
+                         ldflags))
 
 
 def check_sanity():