build fails with a bogus missing dependencies list
I am trying to build a wheel with build for the scanpy project.
It prints this error message:
===> Building for py39-scanpy-1.9.1
cd /disk-samsung/freebsd-ports/biology/py-scanpy/work/scanpy-1.9.1 && /usr/bin/env XDG_DATA_HOME=/disk-samsung/freebsd-ports/biology/py-scanpy/work XDG_CONFIG_HOME=/disk-samsung/freebsd-ports/biology/py-scanpy/work XDG_CACHE_HOME=/disk-samsung/freebsd-ports/biology/py-scanpy/work/.cache HOME=/disk-samsung/freebsd-ports/biology/py-scanpy/work PATH=/disk-samsung/freebsd-ports/biology/py-scanpy/work/.bin:/home/yuri/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin PKG_CONFIG_LIBDIR=/disk-samsung/freebsd-ports/biology/py-scanpy/work/.pkgconfig:/usr/local/libdata/pkgconfig:/usr/local/share/pkgconfig:/usr/libdata/pkgconfig NO_PIE=yes MK_DEBUG_FILES=no MK_KERNEL_SYMBOLS=no SHELL=/bin/sh NO_LINT=YES PREFIX=/usr/local LOCALBASE=/usr/local CC="cc" CFLAGS="-O2 -pipe -fno-omit-frame-pointer -fstack-protector-strong -fno-strict-aliasing " CPP="cpp" CPPFLAGS="-fno-omit-frame-pointer" LDFLAGS=" -fstack-protector-strong " LIBS="" CXX="c++" CXXFLAGS="-O2 -pipe -fno-omit-frame-pointer -fstack-protector-strong -fno-strict-aliasing -fno-omit-frame-pointer " MANPREFIX="/usr/local" BSD_INSTALL_PROGRAM="install -s -m 555" BSD_INSTALL_LIB="install -s -m 0644" BSD_INSTALL_SCRIPT="install -m 555" BSD_INSTALL_DATA="install -m 0644" BSD_INSTALL_MAN="install -m 444" /usr/local/bin/python3.9 -m build --wheel --no-isolation --outdir /disk-samsung/freebsd-ports/biology/py-scanpy/work
* Getting dependencies for wheel...
ERROR Missing dependencies:
anndata>=0.7.4
matplotlib>=3.4
kiwisolver>=1.0.1
scikit-learn>=0.22
threadpoolctl>=2.0.0
umap-learn>=0.3.10
pynndescent>=0.5 -> scikit-learn>=0.18 -> threadpoolctl>=2.0.0
umap-learn>=0.3.10
scikit-learn>=0.22 -> threadpoolctl>=2.0.0
seaborn
matplotlib>=2.2 -> kiwisolver>=1.0.1
*** Error code 1
Many dependencies that it lists are installed: py39-anndata-0.8.0 py39-matplotlib-3.4.3_3 py39-kiwisolver-1.4.3,1 py39-umap-learn-0.5.3 py39-seaborn-0.11.2
There is one real problem: threadpoolctl is missing.
But why does build complain about dependencies that are installed?
py39-build-0.8.0 FreeBSD 13.1
Ran into this problem as well, building https://github.com/john-hen/Flake8-pyproject on a system that brokenly had pycodestyle 2.11.1 and flake8 7.1.1 installed -- build complained that it couldn't find the pycodestyle 2.12.1 dep, and it took stepping through the code with pdb to discover the installed version was incorrect.
At the very least, a --verbose option listing, for each (transitive) dependency, who asked for it and what version was found, would've gone a long way towards easing this archeology.