diff --git a/MANIFEST.in b/MANIFEST.in index 0e8335954..1bf4b3346 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -27,3 +27,5 @@ include *.md include *.py include *.release include *.sh +include LICENSE +include _build/*.py diff --git a/_build/backend.py b/_build/backend.py new file mode 100644 index 000000000..bd05c2b3e --- /dev/null +++ b/_build/backend.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +import logging +import os +from setuptools.build_meta import * +import subprocess + + +fmt = logging.Formatter("\n=== NETCDF4 BUILD DEBUG: %(message)s\n") +hdlr = logging.StreamHandler() +hdlr.setFormatter(fmt) +log = logging.getLogger(__name__) +log.setLevel(logging.DEBUG) +log.addHandler(hdlr) + + +def netcdf_has_parallel_support(): + netcdf4_dir = os.environ.get("NETCDF4_DIR") + ncconfig = ( + os.path.join(netcdf4_dir, "bin", "nc-config") if netcdf4_dir else "nc-config" + ) + log.debug(f"{ncconfig = }") + process = subprocess.run([ncconfig, "--has-parallel4"], capture_output=True) + out = process.stdout.decode("utf-8").rstrip() + return out == "yes" + + +def get_requires_for_build_editable(config_settings=None): + return ["mpi4py>=3.1"] if netcdf_has_parallel_support() else [] + + +def get_requires_for_build_wheel(config_settings=None): + return ["mpi4py>=3.1"] if netcdf_has_parallel_support() else [] + + +def get_requires_for_build_sdist(config_settings=None): + return ["mpi4py>=3.1"] if netcdf_has_parallel_support() else [] diff --git a/pyproject.toml b/pyproject.toml index 653c7960f..2605ce84c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,8 @@ requires = [ "setuptools>=77.0.1", "setuptools_scm[toml]>=3.4", ] -build-backend = "setuptools.build_meta" +build-backend = "backend" +backend-path = ["_build"] [project] name = "netCDF4" @@ -139,6 +140,7 @@ environment = {MACOSX_DEPLOYMENT_TARGET="14.0"} [tool.cibuildwheel.windows] before-build = "python -m pip install delvewheel" +environment = "PATH=$PATH:$CONDA_PREFIX/bin" repair-wheel-command = [ "delvewheel show {wheel}", "delvewheel repair -w {dest_dir} {wheel}",