wanadev / mozjpeg-lossless-optimization

Python library to optimize JPEGs losslessly using MozJPEG
Other
35 stars 2 forks source link

Linux arm builds #23

Open axu2 opened 3 weeks ago

axu2 commented 3 weeks ago

Looks like GitHub will add Linux ARM64 runners this year,

https://github.blog/changelog/2024-06-03-actions-arm-based-linux-and-windows-runners-are-now-in-public-beta/

https://github.com/github/roadmap/issues/970

flozz commented 3 weeks ago

Hello,

I am not sure on how to use the new arm64 runners but it is already possible to build for this architecture using qemu:

I will try to have a look at this when I have some time :)

axu2 commented 3 weeks ago

The arm runners are not available yet for general users, but it should be as simple as adding another os to the matrix here:

      matrix:
        os:
          - ubuntu-22.04
          - windows-2019
          - macos-11

Should be available later this year.

flozz commented 3 weeks ago

I was able to build ARM64 packages using qemu. I think we will build arm packages this way waiting for native ARM64 runners to be available for everyone.


I also found that macOS builds were not running anymore (fixed by upgrading from macOS 11 to 12) and that Windows builds were broken (fixed after many tests by sticking to setuptools<74)....


A new release of this package will be done when Python 3.13 will be out. ARM64 packages will be available at the same time on PyPI :)

axu2 commented 3 weeks ago

Thanks! While we are at it, can you add armv7 too?

flozz commented 3 weeks ago

I tried for ARMv7 but I had the following error:

ValueError: 'armv7l' is not a valid Architecture

cibuildwheel lists this architecture in their table... but only for musllinux target (that's maybe why it failed):

I don't searched further but if you have info on how to make the build for this arch I could have a look. :)

axu2 commented 1 week ago

I think you need to bump the cibuildwheel version too.

https://github.com/pypa/cibuildwheel/pull/2017#issuecomment-2394961256

And maybe you need an arm64 runner...