'sip-distinfo not found' following update to SIP v6.6.2

Phil Thompson phil at riverbankcomputing.com
Mon Jul 18 17:28:57 BST 2022


On 18/07/2022 15:03, Vautrin, Yohann wrote:
> Hi Phil,
> 
>> -----Original Message-----
>> From: Phil Thompson [mailto:phil at riverbankcomputing.com]
>> Sent: July 17, 2022 5:40 AM
>> To: Vautrin, Yohann <Yohann.Vautrin at cnrc-nrc.gc.ca>
>> Cc: pyqt at riverbankcomputing.com
>> Subject: Re: 'sip-distinfo not found' following update to SIP v6.6.2
>> 
>> On 07/07/2022 20:20, Vautrin, Yohann wrote:
>> > Hi,
>> >
>> > I'm using PyQt-builder and SIP to wrap a Qt-based library for Python
>> > and I've had issues with the latest versions of PyQt-builder (v1.13.0)
>> > and SIP (v6.6.2).
>> >
>> > When I build the wheel for my package (by calling "python -m build"),
>> > the process ends with the following messages:
>> > /home/user/.pyenv/versions/dev-3.8/lib/python3.8/site-
>> packages/pep517/
>> > in_process/sip-distinfo --inventory /tmp/tmp45zsfozw/inventory.txt
>> > --project-root /home/user/dev/MyProject/bindings/pyqt5-sip --prefix ""
>> > --generator _in_process.py --wheel-tag cp37-abi3-manylinux_2_35_x86_64
>> > --requires-dist "PyQt5-sip (>=12.11, <13)"
>> > /tmp/tmp45zsfozw/wheel/PyQt5_MyProject-1.0.0.dist-info
>> > /bin/sh: line 1:
>> > /home/user/.pyenv/versions/dev-3.8/lib/python3.8/site-
>> packages/pep517/in_process/sip-distinfo:
>> > No such file or directory
>> > make: *** [Makefile:340: install_distinfo] Error 127
>> > _in_process.py: 'make install' failed returning 2
>> >
>> > I believe the cause of this issue is the recent change mentioned in
>> > the changelog for SIP related to the PEP 517 build process (changeset
>> > 2768 with hash 98dbce3e62f1 in Mercurial). I've noticed that there are
>> > still mentions of "pep517" as a possible value for "tool" in
>> > PyQt-builder and removing code as shown in the diff below in
>> > pyqtbuild/builder.py seems to fix my problem:
>> > ------------------------------------------------------
>> > diff -ru a/builder.py b/builder.py
>> > --- a/builder.py      2022-07-06 15:47:58.095535865 -0400
>> > +++ b/builder.py      2022-07-06 15:48:22.804522406 -0400
>> > @@ -51,15 +51,6 @@
>> >          """ Set default values for user options that haven't been set
>> > yet. """
>> >
>> >          if tool in Option.BUILD_TOOLS:
>> > -            # A PEP 517 frontend will set PATH so that sip-distinfo is
>> > found on
>> > -            # it.  However for our own frontends we want to use the
>> > version
>> > -            # corresponding to the frontend (and, anyway, the frontend
>> > may not
>> > -            # be on PATH).
>> > -            if tool != 'pep517':
>> > -                self._sip_distinfo = os.path.join(
>> > -                        os.path.abspath(os.path.dirname(sys.argv[0])),
>> > -                        self._sip_distinfo)
>> > -
>> >              # Check we have a qmake.
>> >              if self.qmake is None:
>> >                  self.qmake = self._find_exe('qmake')
>> > ------------------------------------------------------
>> >
>> > With this change the build process works, at least in non-isolated
>> > environment.
>> 
>> When using "python -m build" can you tell me what the value of 
>> sys.argv[0] is
>> at that part of the code?
> 
> When I run "python -m build --wheel -n", sys.argv contains the
> following:
> ['/home/user/.pyenv/versions/myproject-dev-3.8/lib/python3.8/site-packages/pep517/in_process/_in_process.py',
> 'build_wheel', '/tmp/tmphvrzvu2_']
> 
> Using sys.executable instead of sys.argv[0] in the code to set
> self._sip_distinfo does work in a non-isolated build and it seems that
> it should work for an isolated build as well. At runtime in
> _in_process.py, sys.executable points to bin/python in the virtualenv
> created by the build module so sip-distinfo should be located in the
> same directory as the python command.

The problem being solved is ensuring that the sip-distinfo being used is 
the one associated with the sip-build/sip-install etc. being used and 
not one that might be on PATH.

I've changed the test to see if argv[0] is sip-build/sip-install etc.

Phil


More information about the PyQt mailing list