Skip to content

[SPARK-XXXXX][INFRA] Pin meson<1.11.0 for PyPy pandas source build in CI Dockerfiles#55368

Closed
zhengruifeng wants to merge 5 commits intoapache:masterfrom
zhengruifeng:fix-pypy-pandas-meson
Closed

[SPARK-XXXXX][INFRA] Pin meson<1.11.0 for PyPy pandas source build in CI Dockerfiles#55368
zhengruifeng wants to merge 5 commits intoapache:masterfrom
zhengruifeng:fix-pypy-pandas-meson

Conversation

@zhengruifeng
Copy link
Copy Markdown
Contributor

@zhengruifeng zhengruifeng commented Apr 16, 2026

What changes were proposed in this pull request?

Pin meson<1.11.0 and meson-python<0.16.0 alongside pandas in the PyPy 3.10 pip install in CI Dockerfiles (dev/infra/Dockerfile and dev/spark-test-image/pypy-310/Dockerfile).

Why are the changes needed?

pandas==2.3.3 has no pre-built wheel for PyPy 3.10, so pip builds it from source. The build pulls in meson==1.11.0 (newly released), which introduced a breaking change — python.extension_module() no longer accepts strings in the dependencies keyword. Pandas 2.3.3's meson.build still passes strings, causing:

../pandas/_libs/tslibs/meson.build:32:7: ERROR: python.extension_module keyword argument
'dependencies' was of type array[str] but should have been array[Dependency | InternalDependency]

This was previously hidden because the Docker layer was cached from a prior build with an older meson version. The cache was invalidated by the R devtools→remotes change in SPARK-56500, exposing the issue.

Failure: https://github.com/apache/spark/actions/runs/24489111484/job/71571576157

Does this PR introduce any user-facing change?

No.

How was this patch tested?

CI should validate that the Docker image builds successfully with the meson constraint.

Was this patch authored or co-authored using generative AI tooling?

Generated-by: Claude Code (Claude Opus 4.6)

@sarutak
Copy link
Copy Markdown
Member

sarutak commented Apr 16, 2026

Thank you for fixing this, @zhengruifeng
I verified the similar solution on my laptop too by docker build dev/infra, and I noticed we may also need to pin lxml to 4.9.4.

Comment thread dev/infra/Dockerfile
ln -sf /usr/local/pypy/pypy3.10/bin/pypy /usr/local/bin/pypy3
RUN curl -sS https://bootstrap.pypa.io/get-pip.py | pypy3
RUN pypy3 -m pip install numpy 'six==1.16.0' 'pandas==2.3.3' scipy coverage matplotlib lxml
RUN pypy3 -m pip install 'meson<1.11.0' 'meson-python<0.16.0' numpy 'six==1.16.0' 'pandas==2.3.3' scipy coverage matplotlib lxml
Copy link
Copy Markdown
Member

@sarutak sarutak Apr 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this work? I confirmed pypy3 -m pip install 'meson<1.11.0' numpy 'six==1.16.0' 'pandas==2.3.3' scipy coverage matplotlib lxml which is similar to your change doesn't work.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I cannot build image locally for now, still testing the fix.
Feel free to send a new fix to restore CI if it works :)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, let me try to fix it too.
#55369

The R fs package's bundled libuv v1.52.0 now requires cmake to build.

Co-authored-by: Isaac
@zhengruifeng zhengruifeng deleted the fix-pypy-pandas-meson branch April 21, 2026 08:35
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.

2 participants