Skip to content

Commit 3ca43b8

Browse files
committed
setupext: support using environment variables for dependencies
On Windows, without Conda or the libraries being in default locations, matplotlib has problems finding freetype and qhull. Add ultimate fallback solutions using very specific environment variables named `{FREETYPE,QHULL}_{INCLUDE,LIBRARY}_DIRS`.
1 parent 469b96b commit 3ca43b8

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

setupext.py

+15-1
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ def get_pkg_config():
257257

258258
def pkg_config_setup_extension(
259259
ext, package,
260-
atleast_version=None, alt_exec=None, default_libraries=()):
260+
atleast_version=None, alt_exec=None, envprefix=None, default_libraries=()):
261261
"""Add parameters to the given *ext* for the given *package*."""
262262

263263
# First, try to get the flags from pkg-config.
@@ -295,6 +295,13 @@ def pkg_config_setup_extension(
295295
conda_env_path = Path(conda_env_path)
296296
ext.include_dirs.append(str(conda_env_path / "Library/include"))
297297
ext.library_dirs.append(str(conda_env_path / "Library/lib"))
298+
elif envprefix:
299+
env_include = os.getenv(envprefix + '_INCLUDE_DIRS')
300+
if env_include:
301+
ext.include_dirs.extend(env_include.split(';'))
302+
env_library_dirs = os.getenv(envprefix + '_LIBRARY_DIRS')
303+
if env_library_dirs:
304+
ext.library_dirs.extend(env_library_dirs.split(';'))
298305

299306
# Default linked libs.
300307
ext.libraries.extend(default_libraries)
@@ -585,6 +592,7 @@ def add_flags(cls, ext):
585592
ext, 'freetype2',
586593
atleast_version='9.11.3',
587594
alt_exec=['freetype-config'],
595+
envprefix='FREETYPE',
588596
default_libraries=['freetype'])
589597
ext.define_macros.append(('FREETYPE_BUILD_TYPE', 'system'))
590598
else:
@@ -755,6 +763,12 @@ class Qhull(SetupPackage):
755763
def add_flags(cls, ext):
756764
if options.get("system_qhull"):
757765
ext.libraries.append("qhull_r")
766+
env_include = os.getenv('QHULL_INCLUDE_DIRS')
767+
if env_include:
768+
ext.include_dirs.extend(env_include.split(';'))
769+
env_library_dirs = os.getenv('QHULL_LIBRARY_DIRS')
770+
if env_library_dirs:
771+
ext.library_dirs.extend(env_library_dirs.split(';'))
758772
else:
759773
cls._extensions_to_update.append(ext)
760774

0 commit comments

Comments
 (0)