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>