Closed sanurielf closed 2 years ago
Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe
) and found it was in an excellent condition.
Hi reviewers/mainteners,
I don't know pyomo internals so it will be great if you can check why the OSX arm64 is falling.
I have tested locally in a M1 and it worked.
Please add python, cython, and cross_python to requirements/build like below and then copy this: @conda-forge-admin, please rerender
requirements:
build:
- {{ compiler('c') }}
- {{ compiler('cxx') }}
+ - python # [build_platform != target_platform]
+ - cython # [build_platform != target_platform]
+ - cross-python_{{ target_platform }} # [build_platform != target_platform]
Hi! This is the friendly automated conda-forge-webservice.
I tried to rerender for you, but it looks like there was nothing to do.
This message was generated by GitHub actions workflow run https://github.com/conda-forge/pyomo-feedstock/actions/runs/1685563623.
Currently the CI doesn't have any arm64 machines, so everything gets cross-compiled. Hence you need cython, python, and cross_python in the build requirements. If you do that, you will get something like this. Note: "build_platform": "osx-64"
and "target_platform": "osx-arm64"
.
INFO :: The inputs making up the hashes for the built packages are as follows:
{
"pyomo-6.2-py39hc057bc8_0": {
"recipe": {
"CONDA_BUILD_SYSROOT": "/opt/MacOSX11.0.sdk",
"build_platform": "osx-64",
"c_compiler": "clang",
"c_compiler_version": "11",
"channel_targets": "conda-forge main",
"cxx_compiler": "clangxx",
"cxx_compiler_version": "11",
"python": "3.9.* *_cpython",
"target_platform": "osx-arm64"
}
}
}
Also, never mind... I thought this could be a noarch candidate, but it actually cannot be. There's a lot of c stuff going behind the scene I guess.
Thanks a lot @ngam . Now builds are passing.
@reviewers if you consider this is ok, please merge it whenever possible.
@sanurielf - We are looking into this.
As a general rule, we do not release builds for architectures against which we are not currently testing, and we have no testing for Mac OSX ARM64 processors at this time. I'll keep you posted.
@mrmundt thanks for letting me know.
I wasn't aware we don't have tests against the OSX arm64 environment. I'm currently using it from OSX_arm64 (built from source) and seems to work fine.
I know that further analysis must be done before releasing it, so let me try to take a look at the GitHub actions you have for testing on main repo and pull-request some OSX arm64 builds.
@mrmundt + @blnicho: perhaps you should add a few tests to be run on this CI here. I can help you with that. I know you do the imports (which is a good start) but you have two options depending on what you do upstream:
Generally speaking, as @sanurielf indicates above, cross-compiling shouldn't break much, but you know your package more than we do, so it is your call. Btw, adding linux_aarch64 and linux_ppc64le is also rather straightforward (I can initiate that for you in another PR). Anyway, I would be quite surprised if anything breaks by supporting the alternative arches. It's prudent to test, nonetheless, and I highly recommend you do proper testing here if you are serious about support as you say you are (the conda CIs use pretty older OSes and compilers in order to support basically as many machines in circulation as possible, so something would have already broken if you are worried about arm-osx64)
It seems to me from https://github.com/Pyomo/pyomo/runs/4807350499?check_suite_focus=true (under Run Pyomo tests
) that your tests take on the order of 10 mins. If so, you should just run them all here.
However, just to be clear: The tests are usually not run when you cross-compile. Hence, test_on_native_only: true
in conda-forge.yaml as edited above by @sanurielf.
provider:
win: azure
conda_forge_output_validation: true
+ build_platform:
+ osx_arm64: osx_64
+ test_on_native_only: true
and we have no testing for Mac OSX ARM64 processors at this time
Yep, difficult to get public CI for osx-arm64 support. Best you could probably do is to run on someone's machine. I can run your entire test suite on osx-arm64 and upload the results for you --- using this conda recipe.
Also, I see you have a specific mpi run/test going on. Not sure what's that all about, but it is possible (and relatively straightforward) to support different mpi stuff here and you will end up with different builds depending the mpi support. For more: https://conda-forge.org/docs/maintainer/knowledge_base.html#message-passing-interface-mpi
Is there any timeline on when this might get merged? In several projects, Pyomo is our only remaining dependency without an osx_arm64 build.
Hello, @sjpfenninger - thank you for pinging us about this. It fell off our radar.
@ngam , we do not have an arm64 MacOS machine (though we do have plans to eventually purchase one once appropriate funding comes through). We would appreciate any assistance you can provide here - you mentioned being able to maybe build some tests into this CI?
@conda-forge-admin, please rerender
Hi! This is the friendly automated conda-forge-linting service.
I was trying to look for recipes to lint for you, but it appears we have a merge conflict. Please try to merge or rebase with the base branch to resolve this conflict.
Please ping the 'conda-forge/core' team (using the @ notation in a comment) if you believe this is a bug.
@mrmundt, there is no osx-arm64 on public CIs yet. Hence, any testing is moot. However, what we can do here is to test it locally.
All of conda-forge M1 releases are experimental with no testing. However, the users will file issues if they discover issues. Generally, if things pass on osx-64, they will likely be fine on osx-arm64. Otherwise, you will see build issues.
I started another PR since this one is now outdated. #66. I will try to download the artifacts and run some tests locally for you to see what's up...
Hello, @sjpfenninger - thank you for pinging us about this. It fell off our radar.
@ngam , we do not have an arm64 MacOS machine (though we do have plans to eventually purchase one once appropriate funding comes through). We would appreciate any assistance you can provide here - you mentioned being able to maybe build some tests into this CI?
I wouldn't worry about buying an M1 machine just for this. As I said, pyomo users with M1 machines (which likely will be many) will test and report back. Just put a disclaimer that the M1 release is experimental (you can do this like JAX, e.g. https://github.com/google/jax/blob/2153a57e5c880690bc75f509f788dbc71a8cd618/jax/_src/lib/__init__.py#L31-L36) or in your readme or something. For production uses, most likely, users will be using linux-64 anyway.
Here you go, I ran some of your tests in this feedstock:
And I ran your base unit tests too (from the pyomo repo):
(one docs error, which I won't investigate or bother with)
Anyway, I would say just merge the other PR, #66, and add a disclaimer if you wish. Best of luck :)
btw, sorry about the late response. I don't get notifications, but I passed by here accidentally again. In real life, I happened to know some of the people involved in this project (from the CMU days). Hopefully, next time I will see your tag earlier
Hi @ngam
Please keep this PR unique for the OSX arm integration. There is a way to provide CI on arm64 builds as mentioned in this PR.
I've tested it using PYOMO github actions and my MBP and the first test results are here:
https://github.com/sanurielf/pyomo/runs/6694616199?check_suite_focus=true
As you can see there are more dependencies to have on osx ARM64 before releasing PYOMO. I will go over each one to get a possible solution.
@mrmundt is the casadi package mandatory for pyomo?
https://github.com/sanurielf/pyomo/runs/6694616199?check_suite_focus=true#step:13:109
@sanurielf - casadi is NOT a requirement. It's an optional package that is necessary for Pyomo DAE but not core capability. The only requirement for core capability is ply
.
Alright, closing #66. Best of luck.
Checklist
0
(if the version changed)conda-smithy
(Use the phrase code>@<space/conda-forge-admin, please rerender in a comment in this PR for automated rerendering)