Conversation
|
I confirmed that SciPy is building with the previously added patches, and all tests pass with no new failures. With this PR, we will be up to date with SciPy on PyPI and just (a little) behind the SciPy |
|
I could spend some time looking into the install tags feature in this PR, which was carried over from the previous one. Since @rgommers mentioned in #5012 (comment) that all (test and non-test) modules are built and install tags affect just the install-time functionality, it might make sense to separate SciPy into two packages/recipes, |
|
SciPy tests are passing: https://github.com/pyodide/pyodide/actions/runs/10522073173/job/29155301916 |
ryanking13
left a comment
There was a problem hiding this comment.
Thanks!
it might make sense to separate SciPy into two packages/recipes, scipy and scipy-tests, and run tests from scipy-tests?
Sounds reasonable to me, but is it possible to build tests only? Or do you mean having two scipy packages w/ tests and w/o tests?
It should be test-only. How to do it is documented at http://scipy.github.io/devdocs/building/redistributable_binaries.html#stripping-the-test-suite-from-a-wheel-or-installed-package. It should take almost no extra time to build two wheels if you follow the hint on caching in those docs. |
|
Yes, I meant "scipy (without tests)" and "scipy (tests only)", indeed. Here's how I can envision this working:
I'll have to see how to cache the builds because two separate recipes would mean that both packages are built in different directories (their own ones next to their Initially, I tried storing the built files for both under a common location that can be accessed, say, i.e., Even if I specify something like # copy files from the previously-built scipy before scipy-tests is built
cp -r $PYODIDE_ROOT/packages/scipy/build/scipy-$SCIPY_VERSION/scipy_build_cache/ \
$PYODIDE_ROOT/packages/scipy-tests/build/scipy-tests-$SCIPY_VERSION/scipy_build_cache/This leads to failures because something like |
|
Nonetheless, this problem is a blocker only for building the If this task takes too much time, then there is a case to be made about incorporating this enhancement as part of a follow-up PR, since this PR has brought us close to a potential out-of-tree Pyodide build and CI job for SciPy – provided that the circumventions around the Fortran problems/patches/ints-vs-voids are only going to reduce in the future via scipy/scipy#18566. I'm not a SciPy maintainer, and nor have I followed its development daily as much as @rgommers has continued to do over the last twenty years, but I don't think the files that are problematic for us are touched every day in PRs that would make Pyodide-related debugging too painful. This is backed by the fact that we have been fortunate to need a relatively lesser amount of changes for v1.13.0 ⟹ v1.14.1 in comparison to the extent of what we needed for v1.12.0 ⟹ v1.13.0, all of which makes me feel quite optimistic about it all in the future :) |
Ah, that is going to be a pain, and probably not worth it. For conda-forge the recipe is "multi-output", so it builds two packages at once. If we cannot build two wheels from a single recipe here, then I'd forget about using this functionality for now (Pyodide already has a mechanism to strip tests, so using install tags isn't necessary).
agreed
I'd like to wait with trying this, since there are still too many Fortran-related patches and I don't think it's reasonable to ask SciPy maintainers to deal with those. |
Thanks for looking into it. As Ralf mentioned, I don't think it is that worth it unless the build time of scipy-tests takes too long, especially we are going to unvendor recipes. So, for now, let's just build it twice. |
Just to clarify, @ryanking13 – |
Yes, that sounds reasonable to me. |
|
Great! Merging this PR, then, since all |
|
Thanks @agriyakhetarpal! |
…sting (#7525) This PR follows up on changes made in gh-7350. Here's a small, point-wise summary noting the changes here: - It updates the Emscripten/Pyodide CI job added in gh-7350 and removes the workaround JavaScript-based test suite file, since we fixed the `s_cmp` OpenBLAS unresolved symbol coming from SciPy upstream, having updated SciPy in-tree in Pyodide (see pyodide/pyodide#4719, pyodide/pyodide#5012, pyodide/pyodide#5031, and more). This should make the testing slightly cleaner than before, and the test suite now runs till the end without any Pyodide fatal errors being reported. The [Pyodide xbuildenv](https://github.com/pyodide/pyodide/releases/tag/0.27.0a2) can now be used to set up a virtual environment in which the tests can be run in the same way they were before. The [`pyodide-build` tool](https://github.com/pyodide/pyodide-build) has been unvendored from the Pyodide repository and now infers the Pyodide version from the releases, downloading the relevant files from the GitHub release. Hence, the `PYODIDE_VERSION` environment variable is no longer required. - There were some tests that have been failing on 32-bit platforms, which were last discussed quite a while ago: #3091. They surprisingly passed in a WASM 32-bit environment here without issues, which is great. I have updated the skipping conditions to accommodate this. - There's a known problem with the pytest bytecode generation when running the tests with the xbuildenv interpreter – I disabled the pytest internal cache plugin to fix that, but ignoring the warning (pypa/cibuildwheel#1966 (comment)) works equally as well. Please let me know if there is a preference. :) Additional context - Pyodide CI support was first discussed in gh-7265. - At the time of writing, Pyodide 0.27alpha2 is used in the CI job; once 0.27 stable comes out (should be soon) and `cibuildwheel` updates to it, that (plus this PR) will help unblock another PR that I had opened a while back: gh-7440. I can rebase that PR when ready. - pyodide/pyodide#4871 (comment) --- Co-authored-by: Lars Grüter <20140352+lagru@users.noreply.github.com>
Description
This PR updates SciPy to version 1.14.1. Tagging recipe maintainers: @lesteve, @steppi; and @rgommers, for visibility. SciPy was previously updated in #5012 to version 1.14.0.
Checklists