On 28/07/2020 12:29 pm, John W. O'Brien wrote:
On 2020/07/27 22:08, Kubilay Kocak wrote:
On 28/07/2020 5:43 am, John W. O'Brien wrote:
Greetings FreeBSD Python,

I have been mulling over a thing and would like the list's perspective
before I decide whether to take action or not.

security/py-pycryptodome will use devel/py-cffi if it is available [0]
or ctypes otherwise [1]. This makes me just a little bit uneasy since it
leaves the door open to certain Heisenbugs and red herrings. My question
is whether it warrants adding devel/py-cffi to RUN_DEPENDS to ensure
consistency behavior? If not, what about as an OPTION for those who care
about that sort of thing?

[0]
https://github.com/Legrandin/pycryptodome/blob/v3.9.8/lib/Crypto/Util/_raw_api.py#L71-L161

[1]
https://github.com/Legrandin/pycryptodome/blob/v3.9.8/lib/Crypto/Util/_raw_api.py#L163-L263

[2] https://en.wikipedia.org/wiki/Heisenbug


The Python Policy section on optional dependencies should cover this:

https://wiki.freebsd.org/Python/PortsPolicy#Optional_Dependencies

tldr;

For either at build or run-time optional dependencies (where the pattern
is, check if dep exists, use some code path if true, else use another
code path), add OPTIONS for them.

OK, so something like this?

OPTIONS_DEFINE=CFFI
OPTIONS_DEFAULT=CFFI

CFFI_DESC=Use devel/py-cffi for low-level API instead of ctypes
CFFI_RUN_DEPENDS=${PYTHON_PKGNAMEPREFIX}cffi>=0:devel/py-cffi@${PY_FLAVOR}

That's fine. If the option is related to performance, id clarify that in the description.

Re heisenbugs/etc, this is where support for running test suites in the
port are critical, let us know in #freebsd-python on freenode IRC if you
need help getting these hooked up

I've been looking forward to the day when [3] lands. Is there some other
way to run the test target in a poudriere build?

Yes, that would be nice. The other way is to testport -i to enter the jail, at which point you can run `make test` from the port dir

Of course, running test suites in the build environment wouldn't uncover
bugs that are triggered by something that just happens to show up in the
runtime environment. Enabling the OPTIONal things by default would
clearly help.

The same as ports defaulting OPTIONS to enabled to benefit package users, python's optional dependency policy is to do the same, such that the default port options are the ones that are tested.

Maintainers can and should do more comprehensive testing by testing various combinations of PTIONS



[3] https://github.com/freebsd/poudriere/pull/355


_______________________________________________
freebsd-python@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-python
To unsubscribe, send any mail to "freebsd-python-unsubscr...@freebsd.org"

Reply via email to