Github Action to automatically build wheels that include Cbc libraries for all platforms #262
Replies: 2 comments 4 replies
-
@tkralphs Sounds great. We will prove it when Windows and new m1 architectures are available. I have seen issues are already been created. There are two related things I am concerned about. Maybe they vanish if I look into the details, but just mention them: I would prefer to include the latest Cbc Release, not the latest Master Commit, to make bug tracking easier. And @h-g-s told me, that the complete C wrapper which is used at Python-MIP is only part of the CBC Master, but Cbc releases are not built from master at the moment. I have seen that the newer Cbc release already offers some build resources, but not in the way it would be suitable for Python-MIP. Have you thought of also building the .so / .dll files already on the Cbc side? As I am not a c/c++ dev, the question might be a kind of „stupid“? I would appreciate your thoughts. |
Beta Was this translation helpful? Give feedback.
-
Yes, it would be ideal for It is true that with the old build system used in version 2.10, one cannot produce DLLs for Windows. The ability do this is one of the main improvements in the move to the newer build system used in the |
Beta Was this translation helpful? Give feedback.
-
Thanks to the generous help of @mkoeppe, we have just finished implementing a Github Action for CyLP that automatically creates binary wheels for Linux and MacOS (Windows is coming) that include the Cbc libraries using the amazing
cibuildwheels
package. See the YAML for the action here:https://github.com/coin-or/CyLP/blob/master/.github/workflows/cibuildwheel.yml
The action first builds the Cbc libraries from source and then uses the
cibuildwheels
to package the libraries the "right" way, doing all of the heavy lifting of setting the rpaths for the libraries and etc. using theaudithweel
(Linux) anddelocate
(MacOS) packages. Once it's up and running, this would be a super easy and completely automated way to distribute the latest Cbc with each release ofpython-mip
. In my testing so far, it "just works". Check out the variety of wheels that are now available for CyLP:https://pypi.org/project/cylp/0.91.5/#files
Note that in addition to the
cibuildwheel.yml
file, this also requires apyproject.toml
, which is a good thing to have anyway. It should be relatively easy to copy what we did for CyLP. We've already worked out the kinks.Beta Was this translation helpful? Give feedback.
All reactions