Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 23 Jan 2022 08:42:34 +0000
From:      loader <loader@freebsd.org>
To:        koobs@FreeBSD.org
Cc:        Stefan Esser <se@FreeBSD.org>, python@freebsd.org
Subject:   Re: PLIST issues in more ports?
Message-ID:  <20220123084301.AD2ABC1DD@freefall.freebsd.org>
In-Reply-To: <c8503a0d-dd4b-f86c-a0dc-69d5160e2383@FreeBSD.org> (Kubilay Kocak's message of "Fri, 21 Jan 2022 13:34:19 %2B1100")
References:  <fa809b14-d53a-876a-94e3-de650fab1034@FreeBSD.org> <20220116152934.D2BEC10CD2@freefall.freebsd.org> <c8503a0d-dd4b-f86c-a0dc-69d5160e2383@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
--=-=-=
Content-Transfer-Encoding: quoted-printable

On Fri, 21 Jan 2022 13:34:19 +1100, Kubilay Kocak <koobs@FreeBSD.org> wrote:

> On 17/01/2022 2:29 am, loader wrote:
>> On Sat, 15 Jan 2022 01:28:09 +0100, Stefan Esser <se@FreeBSD.org> wrote:
>>
>>> Hi Python Maintainers,
>>>
>>> the following packages conflict with each other since they install
>>> files that do not depend on the package:
>>>
>>> py38-scikit-bio
>>> py38-ddtrace
>>>
>>> They contain files like
>>>
>>> lib/python3.8/site-packages/benchmarks/__pycache__/__init__.cpython-38.=
pyc
>>>
>>> which probably should be excluded from the PLIST.
>>>
>>> Similarily:
>>>
>>> py38-mycli
>>> py38-beziers
>>> py38-grizzled
>>> py38-gtfslib
>>> py38-habanero
>>> py38-molecule
>>> py38-onnx-tf
>>> py38-ont-fast5-api
>>> py38-puppetboard
>>> py38-pysmartdl
>>> py38-pysodium
>>> py38-pyzipper
>>> py38-streamparse
>>>
>>> which all contain:
>>>
>>> lib/python3.8/site-packages/test/__init__.py
>>> lib/python3.8/site-packages/test/conftest.py
>>> lib/python3.8/site-packages/test/__pycache__/__init__.cpython-38.pyc
>>> lib/python3.8/site-packages/test/__pycache__/conftest.cpython-38.pyc
>>>
>>> I have not checked for individual maintainers, but this is IMHO a
>>> framework issue that should have a generic solution ...
>>>
>>> Should I create a PR for this issue?
>>>
>>> Regards, STefan
>>
>> Just a thought, maybe site-packages/test/ could be removed during
>> autoplist, but not sure whether there's a port really needs be to
>> installed into this directory.
>>
>> diff --git a/Mk/Uses/python.mk b/Mk/Uses/python.mk
>> index 6c5d11dc9d08..37aa53759698 100644
>> --- a/Mk/Uses/python.mk
>> +++ b/Mk/Uses/python.mk
>> @@ -616,6 +616,7 @@ _RELLIBDIR=3D		${PYTHONPREFIX_LIBDIR:S;${PREFIX}/;;}
>>   _USES_stage+=3D	934:add-plist-pymod
>>   add-plist-pymod:
>>   	@${SED} -e 's|^"\(.*\)"$$|\1|' \
>> +		-e '\|^${PYTHON_SITELIBDIR}/test/|d' \
>>   		-e 's|^${STAGEDIR}${PREFIX}/||' \
>>   		-e 's|^${PREFIX}/||' \
>>   		-e 's|^\(man/.*man[0-9]\)/\(.*\.[0-9]\)$$|\1/\2.gz|' \
>>
>> Cheers,
>> loader
>
> Ideally and if possible, these issues should be (1) detected (sanity.mk
> python.mk or similar: fatal error) and (2) reported upstream so that
> they can be resolved permanently.
>
> Happy to discuss any time. #freebsd-python @ Libera Chat IRC

Just some random thoughts:

diff --git a/Mk/Uses/python.mk b/Mk/Uses/python.mk
index 6c5d11dc9d08..1c179e98e34d 100644
=2D-- a/Mk/Uses/python.mk
+++ b/Mk/Uses/python.mk
@@ -502,6 +502,10 @@ PYTHONPREFIX_SITELIBDIR=3D	${PYTHON_SITELIBDIR:S;${PYT=
HONBASE};${PREFIX};}
 # Used for recording the installed files.
 _PYTHONPKGLIST=3D	${WRKDIR}/.PLIST.pymodtmp
=20
+# Installing Python package files into these directories
+# in ${PYTHON_SITELIBDIR} may conflict with each other.
+_PYTHON_CONFLICT_DIRS=3D	benchmarks test
+
 # Ports bound to a certain python version SHOULD
 # - use the PYTHON_PKGNAMEPREFIX
 # - use directories using the PYTHON_PKGNAMEPREFIX
@@ -643,6 +647,14 @@ add-plist-python:
 .endif # ${PYTHON_REL} >=3D 30200 && defined(_PYTHON_FEATURE_PY3KPLIST)
 .endif # defined(_PYTHON_FEATURE_AUTOPLIST) && defined(_PYTHON_FEATURE_DIS=
TUTILS)
=20
+_USES_stage+=3D	936:check-conflict-directories
+check-conflict-directories:
+	@for _d in ${_PYTHON_CONFLICT_DIRS}; do \
+		if ${GREP} -e "^${PYTHON_SITELIBDIR:S;${PREFIX}/;;}/$${_d}/" ${TMPPLIST}=
; then \
+			${ECHO_MSG} "=3D=3D=3D> This port installs a *$${_d}* directory into PY=
THON_SITELIBDIR which may conflict with the files installed by other Python=
 packages, please consider adding it to the find_packages() exclude filter =
in setup.py, for example: packages=3Dfind_packages(exclude=3D('$${_d}',))";=
 exit 1; \
+		fi; \
+	done
+
 # Fix for programs that build python from a GNU auto* environment
 CONFIGURE_ENV+=3D	PYTHON=3D"${PYTHON_CMD}"
=20

and an example to patch setup.py to exclude the test directory:

diff --git a/security/py-pysodium/Makefile b/security/py-pysodium/Makefile
index f7aeeee314ce..38145dd1f254 100644
=2D-- a/security/py-pysodium/Makefile
+++ b/security/py-pysodium/Makefile
@@ -2,6 +2,7 @@
=20
 PORTNAME=3D	pysodium
 PORTVERSION=3D	0.7.10
+PORTREVISION=3D	1
 CATEGORIES=3D	security python
 MASTER_SITES=3D	CHEESESHOP
 PKGNAMEPREFIX=3D	${PYTHON_PKGNAMEPREFIX}
diff --git a/security/py-pysodium/files/patch-setup.py b/security/py-pysodi=
um/files/patch-setup.py
new file mode 100644
index 000000000000..f64c530b0cad
=2D-- /dev/null
+++ b/security/py-pysodium/files/patch-setup.py
@@ -0,0 +1,11 @@
+--- setup.py.orig	2022-01-22 11:58:59 UTC
++++ setup.py
+@@ -18,7 +18,7 @@ setup(
+     license=3D"BSD",
+     keywords=3D"cryptography API NaCl libsodium",
+     url=3D"https://github.com/stef/pysodium",
+-    packages=3Dfind_packages(),
++    packages=3Dfind_packages(exclude=3D('test',)),
+     long_description=3Dread('README.md'),
+     requires=3D["libsodium"],
+     classifiers=3D["Development Status :: 4 - Beta",

Cheers,
loader

--=-=-=
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iL4EARYKAGYFAmHtFJVfFIAAAAAALgAoaXNzdWVyLWZwckBub3RhdGlvbnMub3Bl
bnBncC5maWZ0aGhvcnNlbWFuLm5ldEY0REMyN0YxQkIzMjVCMkZCNEMwOUZEMzU2
RDBBOTYxRDZDQkFEMDYACgkQVtCpYdbLrQZoQAEAP1jDf08XKZGsLnPXqUbwUkSW
5/S/wi18ar3ncO9iTpwBAMfDiPkmx7ZtnY3+UmnzKWGzNkD+EwLbUyVWWD+MGOgI
=DobM
-----END PGP SIGNATURE-----
--=-=-=--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20220123084301.AD2ABC1DD>