Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 4 Dec 2021 23:40:18 +0100
From:      Stefan Esser <se@freebsd.org>
To:        Alexey Dokuchaev <danfe@freebsd.org>, python@freebsd.org
Cc:        Koichiro Iwao <meta@freebsd.org>, ports-developers@freebsd.org
Subject:   Re: devel/py-pyparsing and devel/py-packaging have circular dependency
Message-ID:  <2b37c7f7-1b3b-24fa-e209-f93f1bf4efaf@freebsd.org>
In-Reply-To: <b9629604-eee0-acde-2b15-81955fd11259@freebsd.org>
References:  <e274d860b9a4319196a0c18cf34fbe20@freebsd.org> <eeaf3aa09629271399e35edd5284d814@freebsd.org> <CAMHz58Qd9u=KGZdWku3yZBz2AAbA65myS8H3r2T49k18xEQZ2A@mail.gmail.com> <Yas6Itz%2BmRcu9Wbh@FreeBSD.org> <b9629604-eee0-acde-2b15-81955fd11259@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------Vd3rHy2ui1czzk0A9uPgoQ8q
Content-Type: multipart/mixed; boundary="------------X2N9s25l0SVnMOgTZNy7abYQ";
 protected-headers="v1"
From: Stefan Esser <se@freebsd.org>
To: Alexey Dokuchaev <danfe@freebsd.org>, python@freebsd.org
Cc: Koichiro Iwao <meta@freebsd.org>, ports-developers@freebsd.org
Message-ID: <2b37c7f7-1b3b-24fa-e209-f93f1bf4efaf@freebsd.org>
Subject: Re: devel/py-pyparsing and devel/py-packaging have circular
 dependency
References: <e274d860b9a4319196a0c18cf34fbe20@freebsd.org>
 <eeaf3aa09629271399e35edd5284d814@freebsd.org>
 <CAMHz58Qd9u=KGZdWku3yZBz2AAbA65myS8H3r2T49k18xEQZ2A@mail.gmail.com>
 <Yas6Itz+mRcu9Wbh@FreeBSD.org>
 <b9629604-eee0-acde-2b15-81955fd11259@freebsd.org>
In-Reply-To: <b9629604-eee0-acde-2b15-81955fd11259@freebsd.org>

--------------X2N9s25l0SVnMOgTZNy7abYQ
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Am 04.12.21 um 14:19 schrieb Stefan Esser:
> 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.
>=20
> True, but apparently only when building in a clean jail.
>=20
>> I concur; just built and packaged those ports successfully in my tinde=
rbox
>> against Python versions 3.8 and 3.9.
>=20
> 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.
>=20
> 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.

A personal mail from Kai Knoblich mentioned PR 259981:

  https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D259981

The issue is that py-setuptools_scm depends on py-packaging and
py-pyparsing, and it is used for all dependency checks when a
ports setup.py is executed.

IMHO, a failure of setuptools_scm due to a missing run dependency
should lead to a fall-back mode that works as if setuptools_scm
was not installed at all.

Less than 70 of 7070 ports in devel/py-* have a direct dependency
on py-setuptools_scm.

But as soon as py-setuptools_scm is installed, it is invoked
even for ports that do not depend on it (like py-packaging and
py-pyparsing).

And if it fails due to failed imports, then it prevents configuring
of ports *that do not actually depend on it*.

If a execution of py-setuptools_scm was fatal only for ports that
have a direct dependency on it, then the build of py-packaging
and py-pyparsing could succeed, even with py-setuptools_scm not
usable.

I have tried all permutations of parameters in the following
command:

# portmaster devel/py-black devel/py-pyparsing devel/py-packaging \
	devel/py-setuptools_scm

And this command succeed every time and for each permutation that
I tried, independently of whether these ports were installed or not
at that time.

But if only py-pyparsing or py-packaging is missing, then the
existence of py-setuptools_scm prevents their installation from
a port, as described in this PR.

Again: IMHO a failure to execute py-setuptools_scm should not be
fatal, except for ports that directly depend on it. I have no
idea whether that can easily be achieved, but I do not see any
other solution.

Can an option be passed to a port's setup.py to prevent it from
trying to invoke py-setuptools_scm? (It would suffice to pass
such an option for builds of py-pyparsing and py-packaging.)

And again: this is not a portmaster issue. It affects building of
ports with plain make in the same way, if one of the two packages
py-setuptools_scm depends on has been lost.

Regards, STefan

--------------X2N9s25l0SVnMOgTZNy7abYQ--

--------------Vd3rHy2ui1czzk0A9uPgoQ8q
Content-Type: application/pgp-signature; name="OpenPGP_signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="OpenPGP_signature"

-----BEGIN PGP SIGNATURE-----

wsB5BAABCAAjFiEEo3HqZZwL7MgrcVMTR+u171r99UQFAmGr7lIFAwAAAAAACgkQR+u171r99UR5
yAf/a1zAJty3CWBBQSG61FiZScW7T648xtYuFZdKoO5WW5AcqlIFofkRy6Wwof8pggUGNTYIFbz2
aPBOxGTngi+xOq9dX9uryP/5tj5KqmQhQnLlQKc48MVY72yoRNDNOjtpZFWWfMUUIITSKC9EOsQu
RWbtL6s7i28Pi7dfBIyBeSHsGYWRx9l2t0v92CuHYXfX5Xv0ZAx3zjXz0ys5ibW9D4Xjx3Fom3FX
I7kzVBfks8Exg+STSl16z64Ym7v7DOB+v0oHR7CdP4m/paz8prpG+CW08r0fEk9YiHPjryhdmwnx
82+ND/kA2XZXUaF5q/8P8XX+WKVEPojH7qWUv1NtSg==
=TBcL
-----END PGP SIGNATURE-----

--------------Vd3rHy2ui1czzk0A9uPgoQ8q--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?2b37c7f7-1b3b-24fa-e209-f93f1bf4efaf>