Re: devel/py-pyparsing and devel/py-packaging have circular dependency

From: Stefan Esser <se_at_freebsd.org>
Date: Sat, 04 Dec 2021 13:19:23 UTC
Am 04.12.21 um 10:51 schrieb Alexey Dokuchaev:
> On Sat, Dec 04, 2021 at 05:45:55PM +0800, Po-Chuan Hsieh wrote:
>> The python dependencies are all correct.
>> py-pyparsing DOES NOT REQUIRE py-packaging.

True, but apparently only when building in a clean jail.

> I concur; just built and packaged those ports successfully in my tinderbox
> against Python versions 3.8 and 3.9.

Yes, it works when building with poudriere, but no, it does not
work with a plain "make" on a system with other Python ports
already installed.

In order to observe the issue, I had to delete the two packages
with "pkg delete -f". They cannot be re-installed from a port
using a plain "make" on the base system, thereafter.

I do not know how such a dependency can be injected into the
python port build, but just invoking setup.py in the work
directories of these two ports will cause the error messages
reported before:

>> devel/py-packaging:
>> pkg_resources.DistributionNotFound: The 'pyparsing!=3.0.5,>=2.0.2'
distribution was not found and is required by packaging

>> devel/py-pyparsing:
>> pkg_resources.DistributionNotFound: The 'packaging>=20.0' distribution was
not found and is required by the application

I have looked for references to packaging in my python site-packages
directory, but I do not know and did not check if any of those might
inject a dependency on py-packaging when building some other port:

/usr/local/lib/python3.8/site-packages/pip/_vendor/pkg_resources/__init__.py:
	from pip._vendor import packaging

/usr/local/lib/python3.8/site-packages/sipbuild/project.py:
	import packaging

/usr/local/lib/python3.8/site-packages/pkg_resources/__init__.py:
	from pkg_resources.extern import packaging

/usr/local/lib/python3.8/site-packages/build/env.py:
	import packaging.requirements
/usr/local/lib/python3.8/site-packages/build/env.py:
	import packaging.version
/usr/local/lib/python3.8/site-packages/build/__init__.py:
	import packaging.requirements

/usr/local/lib/python3.8/site-packages/setuptools/command/egg_info.py:
	from setuptools.extern import packaging
/usr/local/lib/python3.8/site-packages/setuptools/dist.py:
	from setuptools.extern import packaging

Regards, STefan