bluerobotics / navigator-lib

Library to unleash the hardware capabilities, packed with features and fuel for your coding adventures
https://docs.bluerobotics.com/navigator-lib/python/
MIT License
11 stars 5 forks source link

github: workflows: python: Add qmu install validation for cross compilation #10

Closed RaulTrombin closed 1 year ago

RaulTrombin commented 1 year ago

Add run-on-arch actions to python deployment, run-on-arch

To check if the packages install works on the corresponding architectures, now we have this process. image

For manylinux we are using the bullseye image, which is the current blueos's raspbian base and python 3.9. For muslinux a minimal container using alpine, but it's using the python 3.11, need some future workaround to use 3.9 if needed.

RaulTrombin commented 1 year ago

Why we want 3.11 binds ? What is the problem with 3.9 ? They should be just binds, I can't see a reason for that. @patrickelectric Excentially because the alpine latest was using 3.11, but I've discovered this new feature: abi3-py39, which makes a single wheel for 3.9 and above. pyo3-features

joaoantoniocardoso commented 1 year ago

Why we want 3.11 binds ? What is the problem with 3.9 ? They should be just binds, I can't see a reason for that. @patrickelectric Excentially because the alpine latest was using 3.11, but I've discovered this new feature: abi3-py39, which makes a single wheel for 3.9 and above. pyo3-features

Wait.. a 3.9 wheel wouldn't work with 3.11 Python, or, if we needed to use a newer feature, it'd just fail to generate a 3.9 wheel?

patrickelectric commented 1 year ago

A 3.9 whl should work in 3.11 that's my point. What exactly is this fixing ?

RaulTrombin commented 1 year ago

it's possible now with the abi3, previously you needed to specify the python version.

joaoantoniocardoso commented 1 year ago

For reference, if it's not clear, this PR is:

  1. adding a test to ensure the wheels are actually installable
  2. changing to compile the wheels using Abi3, which ensures future-proof compatibility, meaning that the same wheel compiled today will work on the next Python versions