05.10.2024 00:31, Kirill A. Korinsky пишет:
> ping
> 
> On Mon, 23 Sep 2024 20:10:02 +0200,
> Kirill A. Korinsky <kir...@korins.ky> wrote:
>>
>> On Mon, 23 Sep 2024 18:08:46 +0200,
>> Stuart Henderson <s...@spacehopper.org> wrote:
>>>
>>> IIRC the build/lib.openbsd-${OSREV}-... format is just for setuptools,
>>> so it may be better to define a new variable containing the directory
>>> name and set it as appropriate for each MODPY_PYBUILD backend.
>>> (They don't need to be done all at once, just error out if someone
>>> tries to use the new option and the dir isn't set - I can help with
>>> looking for other ports which could use this later, but too busy right
>>> now).
>>>
>>
>> Thanks for review and help to track ports which needed.
>>
>> Here is much cleaner approach which I really like.

py-zstandard tests pass, great!

> Index: lang/python/python.port.mk
> ===================================================================
> RCS file: /cvs/ports/lang/python/python.port.mk,v
> retrieving revision 1.192
> diff -u -p -r1.192 python.port.mk
> --- lang/python/python.port.mk        25 Jul 2024 15:42:03 -0000      1.192
> +++ lang/python/python.port.mk        4 Oct 2024 21:30:49 -0000
> @@ -336,6 +336,18 @@ MODPY_TEST_TARGET +=     ${TEST_TARGET}
>  .  endif
>  .endif
>  
> +MODPY_TEST_LINK_SO ?=        No

This should be documented in python-module(5).

> +
> +.if ${MODPY_TEST_LINK_SO:L} == "yes" && !empty(MODPY_TEST_LIBDIR)
> +MODPY_TEST_TARGET := for _dir in ${MODPY_TEST_LIBDIR:S,:, ,g}; do \
> +     if [ -e $$$${_dir} ]; then \
> +             cd $$$${_dir} && \
> +             find . -name '*.so' -type f \
> +                     -exec ln -sf $$$${_dir}/{} ${WRKSRC}/{} \; ;\
> +     fi; done; ${MODPY_TEST_TARGET}
> +.endif

Looks fine make-wise, but I lack python experience to judge the approach itself.

I think you can do without double-escaping and prepending the target variable
by using your own and using it fist, this way it looks a clearer;  diff below.

> +
> +
>  # dirty way to do it with no modifications in bsd.port.mk
>  .if empty(CONFIGURE_STYLE)
>  .  if !target(do-build)

Since that is a default-off opt-in, I'm fine committing it and tweaking in-tree.

Feedback or OKs for either of the two diffs?


Index: python.port.mk
===================================================================
RCS file: /cvs/ports/lang/python/python.port.mk,v
diff -u -p -r1.192 python.port.mk
--- python.port.mk      25 Jul 2024 15:42:03 -0000      1.192
+++ python.port.mk      5 Oct 2024 10:16:58 -0000
@@ -303,6 +303,18 @@ MODPY_COMPILEALL = ${MODPY_BIN} -m compi
 MODPY_COMPILEALL = ${MODPY_BIN} -m compileall -j ${MAKE_JOBS} -s ${WRKINST} -o 
0 -o 1
 .endif
 
+MODPY_TEST_TARGET =
+MODPY_TEST_LINK_SO ?=  No
+.if ${MODPY_TEST_LINK_SO:L} == "yes" && !empty(MODPY_TEST_LIBDIR)
+MODPY_TEST_SO_CMD = for _dir in ${MODPY_TEST_LIBDIR:S,:, ,g}; do \
+       if [ -e $${_dir} ]; then \
+               cd $${_dir} && \
+               find . -name '*.so' -type f \
+                       -exec ln -sf $${_dir}/{} ${WRKSRC}/{} \; ;\
+       fi; done
+MODPY_TEST_TARGET +=   ${MODPY_TEST_SO_CMD};
+.endif
+
 .if ${MODPY_PYBUILD:L} != no
 .  if ! ${MODPY_PYBUILD:Msetuptools_scm}
 _MODPY_PRE_BUILD_STEPS += ; if [ -e ${WRKSRC}/pyproject.toml ]; then \
@@ -317,7 +329,7 @@ MODPY_BUILD_TARGET = ${_MODPY_PRE_BUILD_
 MODPY_INSTALL_TARGET = \
        ${INSTALL_DATA_DIR} ${WRKINST}${MODPY_LIBDIR}; \
        ${_MODPY_RUNBIN} -m installer -d ${WRKINST} ${WRKSRC}/dist/*.whl
-MODPY_TEST_TARGET =    ${MODPY_TEST_CMD}
+MODPY_TEST_TARGET +=   ${MODPY_TEST_CMD}
 .  if ${MODPY_PYTEST:L} == "yes"
 MODPY_TEST_TARGET +=   ${MODPY_PYTEST_ARGS}
 .  endif
@@ -328,7 +340,7 @@ MODPY_INSTALL_TARGET = \
        ${MODPY_CMD} ${MODPY_DISTUTILS_BUILD} ${MODPY_DISTUTILS_BUILDARGS} \
                ${MODPY_DISTUTILS_INSTALL} ${MODPY_DISTUTILS_INSTALLARGS}
 
-MODPY_TEST_TARGET =    ${MODPY_TEST_CMD}
+MODPY_TEST_TARGET +=   ${MODPY_TEST_CMD}
 .  if ${MODPY_PYTEST:L} == "yes"
 MODPY_TEST_TARGET +=   ${MODPY_PYTEST_ARGS}
 .  elif ${MODPY_SETUPUTILS:L} == "yes"

Reply via email to