[PyQt] sip-build --debug and wheels on a Raspberry Pi
Kyle Altendorf
sda at fstab.net
Wed Apr 8 16:17:30 BST 2020
On 2020-04-08 10:26, Phil Thompson wrote:
> On 08/04/2020 13:03, Kyle Altendorf wrote:
>> On 2020-04-08 07:29, Phil Thompson wrote:
>>> On 08/04/2020 04:10, Kyle Altendorf wrote:
>>>> 2) Building a wheel with pip on an ARM Raspberry Pi results in a
>>>> file
>>>> with manylinux2014_x86_64 in the name. Perhaps something based on
>>>> distutils.util.get_platform() (plus pep425 described modification of
>>>> the value) and replacing linux with manylinux<whatever>? Or you'd
>>>> think some official library would expose this calculation for you to
>>>> use.
>>>>
>>>> PyQt5-5.14.2-cp35.cp36.cp37.cp38-abi3-manylinux2014_x86_64.whl
>>>>
>>>> Backstory: I'm trying to help piwheels get a build going for PyQt5.
>>>
>>> <whatever> is chosen according to the glibc requirements of Qt. It is
>>> specified using 'minimum-glibc-version' in ...
>>>
>>> https://www.riverbankcomputing.com/static/Docs/sip/pyproject_toml.html#tool-sip-project-section
>>
>> Sorry, I added to my description and it became less clear. The
>> concern is the x86_64 part, I have no knowledge of errors in the
>> manylinux part. Raspberry Pi are armv7l. PEP425 describes building
>> the platform tag, albeit without the manylinux part.
>>
>> https://www.python.org/dev/peps/pep-0425/#platform-tag
>>
>> So maybe distutils.util.get_platform().replace('-', '.').replace('.',
>> '_').replace(sys.platform, the_selected_manylinux_tag). Or maybe the
>> wheel package has something, etc. I haven't looked at what this does
>> in macOS so I certainly may still be way off.
>>
>> >>> distutils.util.get_platform().replace('-', '.').replace('.',
>> '_').replace(sys.platform, 'manylinux2014')
>> 'manylinux2014_x86_64'
>>
>> >>> distutils.util.get_platform().replace('-', '.').replace('.',
>> '_').replace(sys.platform, 'manylinux2014')
>> 'manylinux2014_armv7l'
>
> manylinux is only defined for Intel platforms.
>
> I assume a normal setuptools is being used to build these...
>
> https://www.piwheels.org/project/PyQt5-sip/
>
> ...so it would seem to make sense to follow that convention.
>
> Can you tell me *exactly* what get_platform() returns in a Pi?
It looks like manylinux2014 added references to non-intel architectures.
https://www.python.org/dev/peps/pep-0599/#the-manylinux2014-policy
On the Raspberry Pi I am running on (from Mythic Beasts, where piwheels
does their builds):
root at raspberrypi:~# /usr/bin/python3 -c 'import distutils.util;
print(repr(distutils.util.get_platform()))'
'linux-armv7l'
To include the Pi version:
root at raspberrypi:~# cat /proc/device-tree/model
Raspberry Pi 3 Model B Plus Rev 1.3root
At this point I am just getting a procedure setup to build _some_ PyQt5
wheel. From there I'll check back with piwheels to see what their
existing mechanisms are and how to fit into them. Also what adjustments
should be made to make a proper wheel. I'm sure I'll learn several
things as I work through this.
Note that my understanding is that piwheels likes to build wheels that
leverage the system packages. For example, the PyQt5 wheel likely will
not include Qt. Not my preference and not manylinux compatible but...
Anyways, for completeness and in case anyone wants to follow, here's a
link to the relevant piwheels issue.
https://github.com/piwheels/packages/issues/3
Thanks for your time and help.
Cheers,
-kyle
More information about the PyQt
mailing list