This patch does three things: - disable the libgeos check, because, even setting the proper env variables, it fails to load our libgeos library, so we skip that because it's not mandatory for the cythonizing. - sets some environment variables into the setup.py file, so we can pass our libgeos information (includes, lib path and libraries) - force to raise an error when cython file to compile (our current build system relies on this failure to do the proper `cythonizing`, if we don't raise the error, we will end up with the package installed without the speed optimizations. --- Shapely-1.7a1/setup.py.orig 2018-07-29 22:53:13.000000000 +0200 +++ Shapely-1.7a1/setup.py 2019-02-24 14:26:19.178610660 +0100 @@ -82,8 +82,8 @@ if not (py_version == (2, 7) or py_versi # Get geos_version from GEOS dynamic library, which depends on # GEOS_LIBRARY_PATH and/or GEOS_CONFIG environment variables -from shapely._buildcfg import geos_version_string, geos_version, \ - geos_config, get_geos_config +# from shapely._buildcfg import geos_version_string, geos_version, \ +# geos_config, get_geos_config logging.basicConfig() log = logging.getLogger(__file__) @@ -248,9 +248,9 @@ if sys.platform == 'win32': setup_args['package_data']['shapely'].append('shapely/DLLs/*.dll') # Prepare build opts and args for the speedups extension module. -include_dirs = [] -library_dirs = [] -libraries = [] +include_dirs = os.environ.get('GEOS_INCLUDE_DIRS', '').split(',') +library_dirs = os.environ.get('GEOS_LIBRARY_DIRS', '').split(',') +libraries = os.environ.get('GEOS_LIBRARIES', '').split(',') extra_link_args = [] # If NO_GEOS_CONFIG is set in the environment, geos-config will not @@ -375,6 +375,7 @@ try: construct_build_ext(existing_build_ext) setup(ext_modules=ext_modules, **setup_args) except BuildFailed as ex: + raise # Force python only build to fail BUILD_EXT_WARNING = "The C extension could not be compiled, " \ "speedups are not enabled." log.warn(ex)