See review D39303 for patch and description. exp-run requested mostly to check for transient consumers. Also the place to bring up any runtime issues when pkg_resources is taken away so that further action can be taken.
Some new failure logs: https://pkg-status.freebsd.org/gohan05/data/131amd64-default-foo/2023-03-29_18h43m08s/logs/errors/py39-pylast-5.1.0_1.log https://pkg-status.freebsd.org/gohan05/data/131amd64-default-foo/2023-03-29_18h43m08s/logs/errors/py39-soxr-0.3.4.log https://pkg-status.freebsd.org/gohan05/data/131amd64-default-foo/2023-03-29_18h43m08s/logs/errors/libgusb-0.3.10_1.log https://pkg-status.freebsd.org/gohan05/data/131amd64-default-foo/2023-03-29_18h43m08s/logs/errors/py39-QtPy-2.3.1.log https://pkg-status.freebsd.org/gohan05/data/131amd64-default-foo/2023-03-29_18h43m08s/logs/errors/py39-find-libpython-0.3.0.log https://pkg-status.freebsd.org/gohan05/data/131amd64-default-foo/2023-03-29_18h43m08s/logs/errors/py39-flit-scm-1.7.0_1.log https://pkg-status.freebsd.org/gohan05/data/131amd64-default-foo/2023-03-29_18h43m08s/logs/errors/py39-jsonschema-4.17.3_1.log https://pkg-status.freebsd.org/gohan05/data/131amd64-default-foo/2023-03-29_18h43m08s/logs/errors/py39-platformdirs-2.6.2_1.log https://pkg-status.freebsd.org/gohan05/data/131amd64-default-foo/2023-03-29_18h43m08s/logs/errors/py39-prettytable-3.6.0_1.log https://pkg-status.freebsd.org/gohan05/data/131amd64-default-foo/2023-03-29_18h43m08s/logs/errors/py39-scikit-build-0.16.7.log https://pkg-status.freebsd.org/gohan05/data/131amd64-default-foo/2023-03-29_18h43m08s/logs/errors/opencolorio-2.1.3_1.log https://pkg-status.freebsd.org/gohan05/data/131amd64-default-foo/2023-03-29_18h43m08s/logs/errors/py39-formulaic-0.5.2.log https://pkg-status.freebsd.org/gohan05/data/131amd64-default-foo/2023-03-29_18h43m08s/logs/errors/py39-openTSNE-0.7.1.log https://pkg-status.freebsd.org/gohan05/data/131amd64-default-foo/2023-03-29_18h43m08s/logs/errors/py39-filelock-3.10.3.log https://pkg-status.freebsd.org/gohan05/data/131amd64-default-foo/2023-03-29_18h43m08s/logs/errors/py39-plumbum-1.8.1_1.log https://pkg-status.freebsd.org/gohan05/data/131amd64-default-foo/2023-03-29_18h43m08s/logs/errors/py39-sphinx-autodoc-typehints-1.22_1.log
A few more: https://pkg-status.freebsd.org/gohan05/data/131amd64-default-foo/2023-03-30_09h13m37s/logs/errors/py39-vunit-hdl-4.6.2.log https://pkg-status.freebsd.org/gohan05/data/131amd64-default-foo/2023-03-30_09h13m37s/logs/errors/mongodb42-4.2.24.log https://pkg-status.freebsd.org/gohan05/data/131amd64-default-foo/2023-03-30_09h13m37s/logs/errors/mongodb50-5.0.14_2.log https://pkg-status.freebsd.org/gohan05/data/131amd64-default-foo/2023-03-30_09h13m37s/logs/errors/criterion-2.4.1.13.log https://pkg-status.freebsd.org/gohan05/data/131amd64-default-foo/2023-03-30_09h13m37s/logs/errors/py39-cytoolz-0.12.1.log https://pkg-status.freebsd.org/gohan05/data/131amd64-default-foo/2023-03-30_09h13m37s/logs/errors/py39-pyproject-fmt-0.5.0_1.log https://pkg-status.freebsd.org/gohan05/data/131amd64-default-foo/2023-03-30_09h13m37s/logs/errors/py39-financedatabase-2.0.9.log https://pkg-status.freebsd.org/gohan05/data/131amd64-default-foo/2023-03-30_09h13m37s/logs/errors/py39-gemmi-0.6.0.log https://pkg-status.freebsd.org/gohan05/data/131amd64-default-foo/2023-03-30_09h13m37s/logs/errors/ikos-3.1_2.log https://pkg-status.freebsd.org/gohan05/data/131amd64-default-foo/2023-03-30_09h13m37s/logs/errors/gpodder-3.11.0.log https://pkg-status.freebsd.org/gohan05/data/131amd64-default-foo/2023-03-30_09h13m37s/logs/errors/py39-libdnet-1.13_4.log https://pkg-status.freebsd.org/gohan05/data/131amd64-default-foo/2023-03-30_09h13m37s/logs/errors/py39-qutip-4.7.1.log https://pkg-status.freebsd.org/gohan05/data/131amd64-default-foo/2023-03-30_09h13m37s/logs/errors/system-config-printer-1.5.12_2.log https://pkg-status.freebsd.org/gohan05/data/131amd64-default-foo/2023-03-30_09h13m37s/logs/errors/sssd-smb-1.16.5_8.log https://pkg-status.freebsd.org/gohan05/data/131amd64-default-foo/2023-03-30_09h13m37s/logs/errors/py39-dj40-django-auth-ldap-4.1.0_1.log https://pkg-status.freebsd.org/gohan05/data/131amd64-default-foo/2023-03-30_09h13m37s/logs/errors/py39-django-auth-ldap-4.1.0_1.log
A commit in branch main references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=9a80a6ee5e8ebf5c279b3d7a9e7e8b7dbabbaf0a commit 9a80a6ee5e8ebf5c279b3d7a9e7e8b7dbabbaf0a Author: Charlie Li <vishwin@FreeBSD.org> AuthorDate: 2023-07-18 00:16:21 +0000 Commit: Charlie Li <vishwin@FreeBSD.org> CommitDate: 2023-07-18 00:53:09 +0000 devel/py-setuptools: convert individual consumers to ${PY_SETUPTOOLS} Currently a no-op, but in the future outputs the correct setuptools port depending on whether USES_PYTHON=distutils is specified. With hat: python PR: 270510, 270358 archivers/py-blosc2/Makefile | 2 +- archivers/py-python-rpm-packaging/Makefile | 2 +- archivers/py-sozipfile/Makefile | 2 +- archivers/py-zopfli/Makefile | 2 +- astro/py-metpy/Makefile | 2 +- astro/py-spacetrack/Makefile | 2 +- audio/py-gtts/Makefile | 2 +- benchmarks/uica/Makefile | 2 +- biology/py-resdk/Makefile | 2 +- databases/py-aiomysql/Makefile | 2 +- databases/py-asyncmy/Makefile | 2 +- databases/py-fastparquet/Makefile | 2 +- databases/py-geoalchemy2/Makefile | 2 +- databases/py-mysqlclient/Makefile | 2 +- databases/py-psycopg-c/Makefile | 2 +- databases/py-psycopg-pool/Makefile | 2 +- databases/py-psycopg/Makefile | 2 +- databases/py-sqlalchemy20/Makefile | 2 +- databases/py-tiledb/Makefile | 2 +- databases/rrdtool/Makefile | 2 +- deskutils/py-send2trash/Makefile | 2 +- deskutils/recoll/Makefile | 2 +- deskutils/zim/Makefile | 2 +- devel/ipython/Makefile | 2 +- devel/libgusb/Makefile | 2 +- devel/mercurial/Makefile | 2 +- devel/nanopb/Makefile | 2 +- devel/py-QtPy/Makefile | 2 +- devel/py-aiosignal/Makefile | 2 +- devel/py-ansi/Makefile | 2 +- devel/py-anyio/Makefile | 2 +- devel/py-apptools/Makefile | 2 +- devel/py-aspectlib/Makefile | 2 +- devel/py-astroid/Makefile | 2 +- devel/py-attrs-strict/Makefile | 2 +- devel/py-autopage/Makefile | 2 +- devel/py-avro/Makefile | 2 +- devel/py-b2sdk/Makefile | 2 +- devel/py-backports.cached-property/Makefile | 2 +- devel/py-backports.entry-points-selectable/Makefile | 2 +- devel/py-blinker/Makefile | 2 +- devel/py-bytecode/Makefile | 2 +- devel/py-cachetools/Makefile | 2 +- devel/py-calver/Makefile | 2 +- devel/py-canonicaljson/Makefile | 2 +- devel/py-case/Makefile | 2 +- devel/py-cmd2/Makefile | 2 +- devel/py-configobj/Makefile | 2 +- devel/py-configupdater/Makefile | 2 +- devel/py-ctypesgen/Makefile | 2 +- devel/py-curtsies/Makefile | 2 +- devel/py-custodian/Makefile | 2 +- devel/py-cwcwidth/Makefile | 2 +- devel/py-cython-test-exception-raiser/Makefile | 2 +- devel/py-d2to1/Makefile | 2 +- devel/py-dask/Makefile | 2 +- devel/py-datasette/Makefile | 2 +- devel/py-ddtrace/Makefile | 2 +- devel/py-debugpy/Makefile | 2 +- devel/py-deepmerge/Makefile | 2 +- devel/py-distributed/Makefile | 2 +- devel/py-editdistance/Makefile | 2 +- devel/py-envier/Makefile | 2 +- devel/py-envisage/Makefile | 4 ++-- devel/py-epsilon/Makefile | 2 +- devel/py-ewah-bool-utils/Makefile | 2 +- devel/py-executing/Makefile | 2 +- devel/py-fasteners/Makefile | 2 +- devel/py-fixtures/Makefile | 2 +- devel/py-flake8-black/Makefile | 2 +- devel/py-flake8-bugbear/Makefile | 2 +- devel/py-flake8-comprehensions/Makefile | 2 +- devel/py-flake8_simplify/Makefile | 2 +- devel/py-google-crc32c/Makefile | 2 +- devel/py-hunter/Makefile | 2 +- devel/py-importlib-metadata/Makefile | 2 +- devel/py-inflect/Makefile | 2 +- devel/py-jaraco.classes/Makefile | 2 +- devel/py-jaraco.collections/Makefile | 2 +- devel/py-jaraco.context/Makefile | 2 +- devel/py-jaraco.env/Makefile | 2 +- devel/py-jaraco.functools/Makefile | 2 +- devel/py-jaraco.itertools/Makefile | 2 +- devel/py-jaraco.logging/Makefile | 2 +- devel/py-jaraco.text/Makefile | 2 +- devel/py-jaraco.timing/Makefile | 2 +- devel/py-jaraco.util/Makefile | 2 +- devel/py-jupyter-server-mathjax/Makefile | 2 +- devel/py-klepto/Makefile | 2 +- devel/py-libcst/Makefile | 2 +- devel/py-libtmux/Makefile | 2 +- devel/py-llfuse/Makefile | 2 +- devel/py-monkeytype/Makefile | 2 +- devel/py-moto/Makefile | 2 +- devel/py-msgpack/Makefile | 2 +- devel/py-mypy-protobuf/Makefile | 2 +- devel/py-mypy/Makefile | 2 +- devel/py-mystic/Makefile | 2 +- devel/py-opentelemetry-api/Makefile | 2 +- devel/py-opentelemetry-sdk/Makefile | 2 +- devel/py-parameterized/Makefile | 2 +- devel/py-parver/Makefile | 2 +- devel/py-path/Makefile | 2 +- devel/py-pathos/Makefile | 2 +- devel/py-pdoc/Makefile | 2 +- devel/py-pep621/Makefile | 2 +- devel/py-pint-pandas/Makefile | 2 +- devel/py-pint/Makefile | 2 +- devel/py-pip-requirements-parser/Makefile | 2 +- devel/py-pip-run/Makefile | 2 +- devel/py-pip-tools/Makefile | 4 ++-- devel/py-pipenv/Makefile | 4 ++-- devel/py-pluggy/Makefile | 2 +- devel/py-pooch/Makefile | 2 +- devel/py-pox/Makefile | 2 +- devel/py-ppft/Makefile | 2 +- devel/py-prance/Makefile | 2 +- devel/py-py-partiql-parser/Makefile | 2 +- devel/py-pyee/Makefile | 2 +- devel/py-pyface/Makefile | 2 +- devel/py-pyina/Makefile | 2 +- devel/py-pyls-black/Makefile | 2 +- devel/py-pyperf/Makefile | 2 +- devel/py-pyproject-metadata/Makefile | 2 +- devel/py-pyscaffold/Makefile | 2 +- devel/py-pytest-checkdocs/Makefile | 2 +- devel/py-pytest-enabler/Makefile | 2 +- devel/py-pytest-helpers-namespace/Makefile | 2 +- devel/py-pytest-html/Makefile | 2 +- devel/py-pytest-localserver/Makefile | 2 +- devel/py-pytest-mpl/Makefile | 2 +- devel/py-pytest-plus/Makefile | 2 +- devel/py-pytest-services/Makefile | 2 +- devel/py-pytest-subtests/Makefile | 2 +- devel/py-pytest-sugar/Makefile | 2 +- devel/py-pytest/Makefile | 2 +- devel/py-pythonfinder/Makefile | 2 +- devel/py-pytweening/Makefile | 2 +- devel/py-pytz-deprecation-shim/Makefile | 2 +- devel/py-pyvisa-py/Makefile | 2 +- devel/py-pyvisa/Makefile | 2 +- devel/py-pyyaml-include/Makefile | 2 +- devel/py-represent/Makefile | 2 +- devel/py-requirementslib/Makefile | 2 +- devel/py-resolvelib1/Makefile | 2 +- devel/py-retype/Makefile | 2 +- devel/py-rope/Makefile | 2 +- devel/py-rstr/Makefile | 2 +- devel/py-scikit-base/Makefile | 2 +- devel/py-semver/Makefile | 2 +- devel/py-setuptools-declarative-requirements/Makefile | 2 +- devel/py-setuptools-pkg/Makefile | 2 +- devel/py-setuptools-rust/Makefile | 4 ++-- devel/py-shtab/Makefile | 2 +- devel/py-simpleeval/Makefile | 2 +- devel/py-subprocess-tee/Makefile | 2 +- devel/py-tempora/Makefile | 2 +- devel/py-time-machine/Makefile | 2 +- devel/py-trove-classifiers/Makefile | 2 +- devel/py-twine/Makefile | 2 +- devel/py-txi2p-tahoe/Makefile | 2 +- devel/py-typeguard/Makefile | 2 +- devel/py-validate-pyproject/Makefile | 2 +- devel/py-versioneer/Makefile | 2 +- devel/py-versioningit/Makefile | 2 +- devel/py-vistir/Makefile | 2 +- devel/py-watermark/Makefile | 2 +- devel/py-yamllint/Makefile | 2 +- devel/py-zarr/Makefile | 2 +- devel/py-zipp/Makefile | 2 +- devel/pylint/Makefile | 2 +- devel/pytype/Makefile | 2 +- finance/py-technical/Makefile | 2 +- graphics/py-PyOpenGL-accelerate/Makefile | 2 +- graphics/py-fotokilof/Makefile | 2 +- graphics/py-pillow/Makefile | 2 +- graphics/py-pygeos/Makefile | 2 +- graphics/py-pyproj/Makefile | 2 +- graphics/py-rasterstats/Makefile | 2 +- graphics/py-traitsui/Makefile | 2 +- graphics/py-webcolors/Makefile | 2 +- math/e-antic/Makefile | 2 +- math/py-autograd/Makefile | 2 +- math/py-cvxopt/Makefile | 2 +- math/py-fsph/Makefile | 2 +- math/py-jacobi/Makefile | 2 +- math/py-jax/Makefile | 2 +- math/py-ml-dtypes/Makefile | 2 +- math/py-numba-stats/Makefile | 2 +- math/py-openTSNE/Makefile | 2 +- math/py-pandas/Makefile | 2 +- math/py-permutation/Makefile | 2 +- math/py-py-find-1st/Makefile | 2 +- math/py-pygsl/Makefile | 2 +- math/py-pytensor/Makefile | 2 +- math/py-resample/Makefile | 2 +- math/py-rpy2/Makefile | 2 +- math/py-scikit-fem/Makefile | 2 +- misc/libcomps/Makefile | 2 +- misc/py-crudini/Makefile | 2 +- misc/py-openai/Makefile | 2 +- misc/py-palettable/Makefile | 2 +- misc/py-spdx-tools/Makefile | 2 +- misc/py-tqdm/Makefile | 2 +- misc/py-wandb/Makefile | 2 +- multimedia/py-pymediainfo/Makefile | 2 +- multimedia/py-pysubs2/Makefile | 2 +- multimedia/streamlink/Makefile | 2 +- net-mgmt/crmsh/Makefile | 4 ++-- net-mgmt/net-snmp/Makefile | 4 ++-- net/onionprobe/Makefile | 2 +- net/py-matrix-synapse-ldap3/Makefile | 2 +- net/py-pyroute2.minimal/Makefile | 2 +- net/py-pyroute2/Makefile | 2 +- news/py-sabctools/Makefile | 2 +- print/py-freetype-py/Makefile | 2 +- print/py-python-ly/Makefile | 2 +- print/py-ufolib2/Makefile | 2 +- print/py-uharfbuzz/Makefile | 2 +- science/py-asdf-standard/Makefile | 2 +- science/py-asdf-transform-schemas/Makefile | 2 +- science/py-asdf-unit-schemas/Makefile | 2 +- science/py-asdf/Makefile | 2 +- science/py-pymatgen-analysis-alloys/Makefile | 2 +- science/py-segregation/Makefile | 2 +- science/py-signac/Makefile | 2 +- science/py-spaghetti/Makefile | 2 +- science/smoldyn/Makefile | 2 +- science/thermofun/Makefile | 2 +- security/gpgme/Makefile | 4 ++-- security/libpwquality/Makefile | 2 +- security/py-certomancer/Makefile | 2 +- security/py-httpx-auth/Makefile | 2 +- security/py-pyhanko-certvalidator/Makefile | 2 +- security/py-pyhanko/Makefile | 2 +- security/py-pyspnego/Makefile | 2 +- sysutils/datadog-integrations/Makefile | 2 +- sysutils/py-ansible-compat/Makefile | 2 +- sysutils/py-ansible-core/Makefile | 2 +- sysutils/py-ansible-lint/Makefile | 2 +- sysutils/py-distro/Makefile | 2 +- sysutils/py-hcloud/Makefile | 2 +- sysutils/py-liquidctl/Makefile | 2 +- sysutils/py-ploy/Makefile | 2 +- sysutils/py-ploy_ezjail/Makefile | 2 +- sysutils/py-psutil/Makefile | 2 +- sysutils/syslog-ng/Makefile | 2 +- textproc/codespell/Makefile | 2 +- textproc/py-asciinema/Makefile | 2 +- textproc/py-ini2toml/Makefile | 2 +- textproc/py-jq/Makefile | 2 +- textproc/py-linkify-it-py/Makefile | 2 +- textproc/py-markdown/Makefile | 2 +- textproc/py-markups/Makefile | 2 +- textproc/py-mistune/Makefile | 2 +- textproc/py-mistune2/Makefile | 2 +- textproc/py-nbsphinx/Makefile | 2 +- textproc/py-normality/Makefile | 2 +- textproc/py-ocrmypdf/Makefile | 2 +- textproc/py-openstep-plist/Makefile | 2 +- textproc/py-parse-type/Makefile | 2 +- textproc/py-parse/Makefile | 2 +- textproc/py-petl/Makefile | 2 +- textproc/py-pyaml/Makefile | 2 +- textproc/py-pygments/Makefile | 2 +- textproc/py-python-markdown-math/Makefile | 2 +- textproc/py-sphinx-autoapi/Makefile | 2 +- textproc/py-sphinxcontrib-towncrier/Makefile | 2 +- textproc/py-uc-micro-py/Makefile | 2 +- textproc/py-unicodeitplus/Makefile | 2 +- textproc/translate-toolkit/Makefile | 2 +- textproc/xml2rfc/Makefile | 2 +- www/onionbalance/Makefile | 2 +- www/py-aiohttp/Makefile | 2 +- www/py-aioquic/Makefile | 2 +- www/py-branca/Makefile | 2 +- www/py-cheroot/Makefile | 2 +- www/py-cherrypy/Makefile | 2 +- www/py-cssutils/Makefile | 2 +- www/py-dj41-django-cors-headers/Makefile | 2 +- www/py-dj41-django-rich/Makefile | 2 +- www/py-django-bleach/Makefile | 2 +- www/py-django-braces/Makefile | 2 +- www/py-django-cors-headers/Makefile | 2 +- www/py-django-crispy-forms/Makefile | 2 +- www/py-django-haystack/Makefile | 2 +- www/py-django-rich/Makefile | 2 +- www/py-feedgenerator/Makefile | 2 +- www/py-flask-migrate/Makefile | 2 +- www/py-flask-socketio/Makefile | 2 +- www/py-flask-wtf/Makefile | 2 +- www/py-flask/Makefile | 2 +- www/py-folium/Makefile | 2 +- www/py-hyperlink/Makefile | 2 +- www/py-lektor/Makefile | 2 +- www/py-pastedeploy/Makefile | 2 +- www/py-pyjwt/Makefile | 2 +- www/py-pylsqpack/Makefile | 2 +- www/py-scgi/Makefile | 2 +- www/py-tornado/Makefile | 2 +- www/py-waitress/Makefile | 2 +- www/py-werkzeug/Makefile | 2 +- www/py-woob/Makefile | 2 +- www/radicale/Makefile | 2 +- x11-fonts/py-afdko/Makefile | 2 +- x11-fonts/py-cffsubr/Makefile | 2 +- x11-fonts/py-glyphsLib/Makefile | 2 +- x11-fonts/py-opentype-sanitizer/Makefile | 2 +- x11-fonts/py-ufonormalizer/Makefile | 2 +- 309 files changed, 316 insertions(+), 316 deletions(-)
Quick glean from exp-run and some RUN_DEPENDS snooping reveal that setuptools_scm, hatch-vcs et al specify setuptools in RUN_DEPENDS. Technically correct per upstream package metadata, but causes environment pollution with our build processes. Still need to check for any pkg_resources consumers but I doubt any exist anymore. For documentation purposes (will add to wiki later): RUN_DEPENDS should never contain ${PY_SETUPTOOLS} unless the port in question is a leaf port (ie no further consumers). Those ports that specify setuptools as a runtime dependency in the Python package metadata should have their consumers specify them instead. The ${PY_SETUPTOOLS} dependency line returned is only correct for the port it is used in. As different setuptools versions cannot exist concurrently in the same environment (chroot, jail, Python virtual environment, etc), it is essential to prevent environment pollution via RUN_DEPENDS, especially when multiple ports in a dependency chain differ between USE_PYTHON=pep517 and USE_PYTHON=distutils.
A commit in branch main references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=d3af6c1c0caa1585dc88e07c6981f5ce1b817ec8 commit d3af6c1c0caa1585dc88e07c6981f5ce1b817ec8 Author: Charlie Li <vishwin@FreeBSD.org> AuthorDate: 2024-02-21 06:07:35 +0000 Commit: Charlie Li <vishwin@FreeBSD.org> CommitDate: 2024-02-21 06:07:35 +0000 www/py-yarl: add ${PY_SETUPTOOLS} to BUILD_DEPENDS devel/py-wheel is not a PEP-517 build backend; add the real one. Once the linked PR is committed, this build will fail. With hat: python PR: 270510 www/py-yarl/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
A commit in branch main references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=e37109f1766e97f8aecf23417ef83167a43831ed commit e37109f1766e97f8aecf23417ef83167a43831ed Author: Charlie Li <vishwin@FreeBSD.org> AuthorDate: 2024-02-29 14:40:22 +0000 Commit: Charlie Li <vishwin@FreeBSD.org> CommitDate: 2024-02-29 14:40:22 +0000 math/py-matplotlib: add ${PY_SETUPTOOLS} to BUILD_DEPENDS No PEP-517 build backend was specified, so add the correct one (setuptools). Build only succeeds because setuptools is brought in by other dependencies transiently, which will fail after the linked PR is committed. With hat: python PR: 270510 math/py-matplotlib/Makefile | 1 + 1 file changed, 1 insertion(+)
Which packages still have this issue that need to be updated? Is it the large list in that "no-op" commit? Maybe if we have a list of these, more of us can tackle them one by one until we can close this out.