Giter VIP home page Giter VIP logo

Comments (8)

MarkWieczorek avatar MarkWieczorek commented on August 24, 2024

I have started the migration from multibuild to cibuildwheel, which should hopefully solve some of our problems with distributing wheels on pypi: #469

It looks like this is working for linux and macos (both intel and apple silicon). These will be uploaded with the next release in about a month or so. However, I have no idea on how to build wheels for windows, so if you know anything about this, your help would be appreciated! I also would really like to make aarch64 builds, but this involves cross compiling, which complicates installing fftw and openblas.

from shtools.

cometbeetle avatar cometbeetle commented on August 24, 2024

If you're still using AppVeyor to build the Windows wheels, I think I found a solution. It involves using the MSYS2 that comes with the AppVeyor image, and then installing the dependencies (Fortran, fftw3, openblac, etc.) using pacman. It then adds the DLLs to the built wheel using delvewheel. This takes a bit longer, but seems to work reliably and makes the appveyor.yml configuration a bit cleaner. Note that I disabled the uploads to PyPi, however they would work with the proper credentials. See my AppVeyor log for details.

Here is the link to my fork with the updated appveyor.yml file. I'm pretty new to this, so things like caching could be improved with my configuration. I also imagine a similar approach (i.e., using MSYS2) could work with GitHub actions.

Alternatively, AppVeyor could be used only for the Windows builds as a GitHub App, running alongside the Actions-based builds for Linux and MacOS. Then it wouldn't be necessary to rewrite the MSYS2 steps as a GitHub action.

from shtools.

cometbeetle avatar cometbeetle commented on August 24, 2024

Also, would there be any way to upload the MacOS arm64 build to PyPi (I believe it's already on Anaconda)?

from shtools.

MarkWieczorek avatar MarkWieczorek commented on August 24, 2024

Thanks for looking into this!

First, could you take a look at this PR? #469 I'm trying to get away from our current multibuild/appveyor wheel builders, as these only cause me continuous grief. Linux and macOS (ARM+intel) are working, but windows isn't. I would like to get linux ARM to work too, but this is of less importance.

As for the MacOS arm64 builds, we upload everything directly to pypi, and as far as I know, there isn't an arm64 build; this is part of the reason for trying to transition to cibuildwheel. If there is an ARM64 build, I doubt it works.

Lastly, I would like to put out a new release before the end of July, but I was hoping to include the open PR regarding Boule, which is waiting on a new upstream release. I'll ping the devs there, and if this is going to take a long time, I'll just go ahead without them.

from shtools.

cometbeetle avatar cometbeetle commented on August 24, 2024

I've almost got Windows builds working with cibuildwheel in #479, however there's a slight irregularity with oldest-supported-numpy. I'll continue testing to see if I can get that fixed.

from shtools.

cometbeetle avatar cometbeetle commented on August 24, 2024

Another thing I noticed is that cibuildwheel is building for both CPython and PyPy. The numpy dependency issue only occurs in the PyPy variant (version 3.10), and I am wondering if you intend to support PyPy Python in addition to plain old CPython.

For simplicity, I'm going to add the PyPy wheels to CIBW_SKIP. Please let me know if the plan is to support PyPy, though, so I can revert the change.

Otherwise, the builds for Windows are good to go! The only changes from #469 that I made in #479 are to re-enable Windows support (essentially, #479 is a drop-in replacement for #469). I have also tested importing the wheel it generates, and no DLL errors occur.

from shtools.

MarkWieczorek avatar MarkWieczorek commented on August 24, 2024

I don't have problems with skipping PyPy. As far as I know, we never built PyPy wheels in the past.

from shtools.

MarkWieczorek avatar MarkWieczorek commented on August 24, 2024

I am going to close this as we have now (1) successfully transitioned to meson for our build backend, (2) we have successfully migrated to cibuildwheel for building all wheels, and (3) we now are compatible with using numpy 2.0.

If anyone has any further issues, please open a new issue.

from shtools.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.