Skip to content

Conversation

radarhere
Copy link
Member

@radarhere radarhere commented Aug 10, 2025

#9107 requests ppc64le wheels.

While there is the potential for using self-hosted runners to generate these quickly, if we don't want to go down that route, then here is another option - using QEMU to create them, but with minimal dependencies to reduce the build time. In the build in this PR, ppc64le jobs are not the longest.

@sandeepgupta12
Copy link

Just following up on regarding the ppc64le wheels. Are there any updates or feedback needed to move it forward?

@radarhere
Copy link
Member Author

Simply waiting for review from another Pillow team member.

@aclark4life
Copy link
Member

@sandeepgupta12 Can you test these wheels before we merge ?

@sandeepgupta12
Copy link

sandeepgupta12 commented Sep 11, 2025

Sure, I can test the wheels on a ppc64le machine and let you know the results.

@sandeepgupta12
Copy link

sandeepgupta12 commented Sep 15, 2025

@radarhere
I tested these wheels on a native ppc64le machine. The build works, but I see some test failures:

FAILED Tests/test_file_iptc.py::test_open - AssertionError: assert [_Tile(codec_..., args='raw')] == [('iptc', (0,...'raw', None))]
FAILED Tests/test_file_iptc.py::test_layers[3-RGB] - AssertionError: assert 'R' == 'RGB'
FAILED Tests/test_file_iptc.py::test_layers[4-CMYK] - AssertionError: assert 'C' == 'CMYK'
FAILED Tests/test_image.py::TestImage::test_show - Failed: DID NOT WARN. No warnings of type (<class 'DeprecationWarning'>,) were emitted.

Looking at the build script, on ppc64le the build function runs build_libjpeg_turbo but then exits early:

if [[ "$AUDITWHEEL_ARCH" == "ppc64le" ]]; then
    return
fi

Because of this, other dependencies are not built, so the resulting wheel has incomplete image format support. That seems to explain the above test failures.

@radarhere
Copy link
Member Author

I would be surprised if the lack of image support was the reason for the test failures. The test failures sound more like #9088, which was merged after the last time I updated this PR. So I suspect the problem is that you built from this PR, and then tested main.

To simplify things, I've now merged main into this PR again, so that change should now be included. Could you try building and testing again?

@sandeepgupta12
Copy link

@radarhere @aclark4life Thanks for updating the branch. I retested on a native ppc64le machine, and everything is working fine now ✅. I think we can go ahead and merge this PR.

@hugovk
Copy link
Member

hugovk commented Sep 21, 2025

How long does this take to build? How many wheels does it create? How big are they?

@radarhere radarhere closed this Sep 21, 2025
@radarhere radarhere deleted the ppc64le branch September 21, 2025 11:41
@radarhere radarhere restored the ppc64le branch September 21, 2025 11:41
@radarhere
Copy link
Member Author

Oops, accidentally deleted this branch. I've recreated it in #9216

The longest run is 1h 1m. This creates 7 manylinux_2_28 wheels (all active CPython versions, including threaded). They are each 1.9mb.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants