Re: git: bb5ef640ea2f - main - py-libxml2: Byte compile

From: Antoine Brodin <antoine_at_freebsd.org>
Date: Fri, 17 May 2024 17:19:09 UTC
On Fri, May 17, 2024 at 7:05 PM Daniel Engberg
<daniel.engberg.lists@pyret.net> wrote:
> On 2024-05-17T10:51:11.000+02:00, Jason E. Hale <jhale@FreeBSD.org> wrote:
> >  The branch main has been updated by jhale:
> >
> > URL: https://cgit.FreeBSD.org/ports/commit/?id=bb5ef640ea2f1756105b9f2aea44d85df600dd5e
> >
> > commit bb5ef640ea2f1756105b9f2aea44d85df600dd5e
> > Author:     Jason E. Hale <jhale@FreeBSD.org>
> > AuthorDate: 2024-05-17 07:51:35 +0000
> > Commit:     Jason E. Hale <jhale@FreeBSD.org>
> > CommitDate: 2024-05-17 08:51:04 +0000
> >
> >     py-libxml2: Byte compile
> >
> >     This eliminates annoying fs-violation errors, notably from
> >     textproc/itstool and textproc/gtk-doc where the byte code is generated
> >     at build time instead of already having been generated by py-libxml2.
> >
> >     It is still peculiar to me that these files are dumped directly into
> >     PYTHON_SITELIBDIR and don't have a subdirectory of their own.
> >     Worth investigating, but hierachical changes are obviously more
> >     intrusive and beyond this scope.
> > ---
> >  textproc/libxml2/Makefile     |  6 ++++++
> >  textproc/py-libxml2/Makefile  | 17 ++++++-----------
> >  textproc/py-libxml2/pkg-plist |  7 +++++++
> >  3 files changed, 19 insertions(+), 11 deletions(-)
> >
> > diff --git a/textproc/libxml2/Makefile b/textproc/libxml2/Makefile
> > index e69bb22381d7..386af00928be 100644
> > --- a/textproc/libxml2/Makefile
> > +++ b/textproc/libxml2/Makefile
> > @@ -55,6 +55,12 @@ post-patch:
> >  post-install:
> >  .if defined(LIBXML2_SLAVE)
> >       ${STRIP_CMD} ${STAGEDIR}${PYTHON_LIBDIR}/site-packages/libxml2mod.so
> > +     ${PYTHON_CMD} ${PYTHON_LIBDIR}/compileall.py \
> > +             -f -d ${PYTHONPREFIX_SITELIBDIR} \
> > +             ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}
> > +     ${PYTHON_CMD} -O ${PYTHON_LIBDIR}/compileall.py \
> > +             -f -d ${PYTHONPREFIX_SITELIBDIR} \
> > +             ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}
> >  .endif
> >
> >  .include <bsd.port.mk>;
> > diff --git a/textproc/py-libxml2/Makefile b/textproc/py-libxml2/Makefile
> > index 33a8d506f52f..84796bac21b3 100644
> > --- a/textproc/py-libxml2/Makefile
> > +++ b/textproc/py-libxml2/Makefile
> > @@ -1,9 +1,8 @@
> > -PORTREVISION=        0
> > +PORTREVISION=        1
> >  CATEGORIES=  textproc gnome python
> >  PKGNAMEPREFIX=       ${PYTHON_PKGNAMEPREFIX}
> >
> >  COMMENT=     Python interface for XML parser library for GNOME
> > -MASTERDIR=   ${.CURDIR}/../libxml2
> >
> >  USES+=               gnome python shebangfix
> >  USE_GNOME=   libxml2
> > @@ -14,19 +13,15 @@ SHEBANG_FILES=    *.py doc/*.py python/*.py python/tests/*.py
> >  # multiple versions are installed
> >  CMAKE_ARGS=  -DPython_EXECUTABLE=${PYTHON_CMD}
> >
> > -OPTIONS_EXCLUDE=     ${OPTIONS_DEFINE}
> > +MASTERDIR=   ${.CURDIR}/../libxml2
> >
> > -# Tell master port we're a slave port
> > -LIBXML2_SLAVE=       python
> > -# Grab pkg-descr from slave port
> >  DESCR=               ${.CURDIR}/pkg-descr
> > +PLIST=               ${.CURDIR}/pkg-plist
> >
> > -# Don't append pkg-plist from master port
> > -PLIST=
> > +OPTIONS_EXCLUDE=     ${OPTIONS_DEFINE}
> >
> > -PLIST_FILES= ${PYTHON_SITELIBDIR}/drv_libxml2.py \
> > -             ${PYTHON_SITELIBDIR}/libxml2.py \
> > -             ${PYTHON_SITELIBDIR}/libxml2mod.so
> > +# Tell master port we're a slave port
> > +LIBXML2_SLAVE=       python
> >
> >  do-install:
> >               ${MKDIR} ${STAGEDIR}${PYTHON_SITELIBDIR}
> > diff --git a/textproc/py-libxml2/pkg-plist b/textproc/py-libxml2/pkg-plist
> > new file mode 100644
> > index 000000000000..9cd0595dabe2
> > --- /dev/null
> > +++ b/textproc/py-libxml2/pkg-plist
> > @@ -0,0 +1,7 @@
> > +%%PYTHON_SITELIBDIR%%/__pycache__/drv_libxml2%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
> > +%%PYTHON_SITELIBDIR%%/__pycache__/drv_libxml2%%PYTHON_EXT_SUFFIX%%.pyc
> > +%%PYTHON_SITELIBDIR%%/__pycache__/libxml2%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
> > +%%PYTHON_SITELIBDIR%%/__pycache__/libxml2%%PYTHON_EXT_SUFFIX%%.pyc
> > +%%PYTHON_SITELIBDIR%%/drv_libxml2.py
> > +%%PYTHON_SITELIBDIR%%/libxml2.py
> > +%%PYTHON_SITELIBDIR%%/libxml2mod.so
>
> Hi,
>
> Wouldn't the correct solution to use the PYTHONDONTWRITEBYTECODE environment variable instead of packaging bytecode files which seems rather fragile?

This has been already discussed a lot and no.

Antoine