absurdfarce commented on code in PR #1271:
URL:
https://github.com/apache/cassandra-python-driver/pull/1271#discussion_r2834461163
##########
setup.py:
##########
@@ -66,62 +67,59 @@
pyproject_data = toml.load(f)
driver_project_data = pyproject_data["tool"]["cassandra-driver"]
-murmur3_ext = Extension('cassandra.cmurmur3', sources=['cassandra/cmurmur3.c'])
-
-DEFAULT_LIBEV_INCLUDES = ['/usr/include/libev', '/usr/local/include',
'/opt/local/include', '/usr/include']
-DEFAULT_LIBEV_LIBS = ['/usr/local/lib', '/opt/local/lib', '/usr/lib64']
-libev_includes = driver_project_data["libev-includes"] or
DEFAULT_LIBEV_INCLUDES
-libev_libs = driver_project_data["libev-libs"] or DEFAULT_LIBEV_LIBS
-if is_macos:
- libev_includes.extend(['/opt/homebrew/include',
os.path.expanduser('~/homebrew/include')])
- libev_libs.extend(['/opt/homebrew/lib'])
-libev_ext = Extension('cassandra.io.libevwrapper',
- sources=['cassandra/io/libevwrapper.c'],
- include_dirs=libev_includes,
- libraries=['ev'],
- library_dirs=libev_libs)
-
-try_murmur3 = driver_project_data["build-murmur3-extension"] and
is_supported_platform and is_supported_arch
-try_libev = driver_project_data["build-libev-extension"] and
is_supported_platform and is_supported_arch
-try_cython = driver_project_data["build-cython-extensions"] and
is_supported_platform and is_supported_arch and not is_pypy
+def key_or_false(k):
+ return driver_project_data[k] if k in driver_project_data else False
+
+try_murmur3 = key_or_false("build-murmur3-extension") and is_supported
+try_libev = key_or_false("build-libev-extension") and is_supported
+try_cython = key_or_false("build-cython-extensions") and is_supported and not
is_pypy
build_concurrency = driver_project_data["build-concurrency"]
-def build_extension_list():
-
- rv = []
-
- if try_murmur3:
- sys.stderr.write("Appending murmur extension %s\n" % murmur3_ext)
- rv.append(murmur3_ext)
-
- if try_libev:
- sys.stderr.write("Appending libev extension %s\n" % libev_ext)
- rv.append(libev_ext)
-
- if try_cython:
- sys.stderr.write("Trying Cython builds in order to append Cython
extensions\n")
- try:
- from Cython.Build import cythonize
- cython_candidates = ['cluster', 'concurrent', 'connection',
'cqltypes', 'metadata',
- 'pool', 'protocol', 'query', 'util']
- compile_args = [] if is_windows else ['-Wno-unused-function']
- rv.extend(cythonize(
- [Extension('cassandra.%s' % m, ['cassandra/%s.py' % m],
- extra_compile_args=compile_args)
- for m in cython_candidates],
- nthreads=build_concurrency,
- exclude_failures=True))
-
- rv.extend(cythonize(Extension("*", ["cassandra/*.pyx"],
extra_compile_args=compile_args),
- nthreads=build_concurrency))
- except Exception as exc:
- sys.stderr.write("Failed to cythonize one or more modules. These
will not be compiled as extensions (optional).\n")
- sys.stderr.write("Cython error: %s\n" % exc)
-
- return rv
+exts = []
+if try_murmur3:
+ murmur3_ext = Extension('cassandra.cmurmur3',
sources=['cassandra/cmurmur3.c'])
+ sys.stderr.write("Appending murmur extension %s\n" % murmur3_ext)
+ exts.append(murmur3_ext)
+
+if try_libev:
+ libev_includes = driver_project_data["libev-includes"]
+ libev_libs = driver_project_data["libev-libs"]
+ if is_macos:
+ libev_includes.extend(['/opt/homebrew/include',
os.path.expanduser('~/homebrew/include')])
+ libev_libs.extend(['/opt/homebrew/lib'])
+ libev_ext = Extension('cassandra.io.libevwrapper',
+ sources=['cassandra/io/libevwrapper.c'],
+ include_dirs=libev_includes,
+ libraries=['ev'],
+ library_dirs=libev_libs,
+ runtime_library_dirs=libev_libs)
Review Comment:
I discovered this option in the setuptools docs. At the time I thought the
underlying problem was that native shared objects were getting compiled without
proper references to their dependencies, a situation which this config
addresses exactly. That wasn't actually the underlying problem, however, and
since this config creates a problem on Windows builds (since Windows compilers
apparently don't support anything like this) I'm gonna try a test build without
it. Assuming there isn't any regression I'm gonna argue to just keep it out.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]