-
Notifications
You must be signed in to change notification settings - Fork 10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Build on Apple Silicon #48
Comments
Indeed automated builds are. For the 1.0 release, we should probably see how difficult it is to get an M1 laptop and run the builder manually there using your scripts. Even if it's 8h of work it seems worth it to me. |
I have access to an M1 machine, I just need to pick it up :) Running the build on it should be trivial. I just hope all dependencies are already available for Apple Silicon, but I'm quite confident that's the case! |
Unfortunately, So I guess we're stuck with Intel builds for now … I'll pick up my Apple Silicon machine sometime this week and try out the installer with Intel packages to see whether and how this works (I have no idea if Rosetta 2 will just spin up transparently in the background, or how this is supposed to work) @dengemann, what's your experience with non-native binaries on Apple Silicon? Can you just, like, click on them and they just run? |
I've opened a PR to migrate MNE and all dependencies to |
Besides the delays on the conda-forge side of things, GH Actions runners are still not ready to run on Apple Silicon natively either. Should be in a few weeks though: |
Yep that's it. They just work. Although native is always much better. |
Intel installers & MNE now work as expected (through Rosetta 2) on Apple Silicon thanks to #73 First startup takes quite a bit of time, but after that everything works. Still waiting for ARM builds of Qt. |
@hoechenberger I have access to an M1 mac, so I could do these builds manually the 5 or so times we'll need it again until actions/runner-images#2187 is sorted out (now that GH actions isn't the bottleneck anymore: actions/runner#805 (comment)). I also just set up an environment on my M1 machine and everything I needed seemed to be available, but I did install PyQt6 from I think at some point @hoechenberger you sent instructions for how to create an installer locally. I'll look for those and try it locally on my Linux machine, and if it produces something usable, I'll try my M1 machine using the same script/instructions... |
It seems I was mistaken an |
I have an x84 conda install on my M1 Mac, and the following commands set up a native Apple Silicon environment:
but the 2nd command wants to install an outdated version of cc @marsipu |
I've requested the |
Both PRs have been merged (dropping This means that hopefully within the next few hours, some changes should become visible at https://conda-forge.org/status/#armosxaddition, and a bot should open a migration PR at https://github.com/conda-forge/mne-qt-browser-feedstock Fingers crossed! |
It looks like |
No, qt is not going to be built anytime soon and we don't need it -- it will be turned into a meta-package. We only need qt-main, on which pyqt depends -- and they're both available. I asked on the conda-forge Gitter channel and they told me that the "awaiting-pr" label means that the bot is scheduled to make the PR (all deps are fulfilled), but that rate limiting causes a wait. It should happen within the next hours or day or so :) |
Ahh okay great! |
Ok cool, so now with all MNE dependencies migrated to arm64, we should check if any of the numerous other things we include in the installer are still blocked I think Spyder is still having issues, because Let's just wait until tomorrow or so, I expect Spyder to become available for arm64 by then :) |
update: migration for qtconsole currently fails :( |
And also locally on M1 I get:
So that needs to be migrated, too, apparently? It seems like I can |
Oh dang, yes I suppose it was never migrated. I can reach out to the person who created the fork. |
I think a few of the changes from the fork have also been merged upstream, I can look into this and see if we still need to rely on that fork or if we're ready to move back to upstream vanilla |
I dropped the author a message. In the worst case, we can just build those packages on Apple Silicon ourselves and upload them to a custom channel on anaconda.org! |
At least commenting out the versions in
@hoechenberger can you look into migrating or pinging people for sleepecg, openneuro-py, and dcm2niix? |
Yes this then should cause you to use the vanilla packages from
I believe I'm responsible for all of them cough :D Edit except for dcm2niix When I start touching those feedstocks, may I add you as co-maintainer..? |
@larsoner I believe sleepecg is blocked by tensorflow… |
Okay, so maybe for now we add a platform selector for sleepecg that excludes it on M1, but hopefully that'll be the only one for now. I think eventually we're going to have the same problem eventually for mne-iclabel. Yes feel free to add me as a co-maintainer |
@larsoner I've requested the migrations via conda-forge/conda-forge-pinning-feedstock#2908 So even if we still have some blockers, these packages will show up on the migration status page |
Awesome. And am I interpreting things right that Spyder just needs qtconsole, so now that its PR is no longer stalled, it should be built soon hopefully as well? |
Yes, that's my current understanding! |
I just looked and |
Okay, can you migrate sleepecg then? |
This should happen automatically once conda-forge/conda-forge-pinning-feedstock#2908 has been merged! Let's hope for the best! |
They got back to me with good news! We don't need arm64 builds of the constructor, as it can cross-build. This is what they wrote me:
So I think what this means is that if we manually extract the conda-standalone package and pass the path to the binary via the conda-exe switch, we should be able to build the Apple Silicon installers even on a different platform! |
That's awesome and actually makes some sense. Let's get #125 in and then we can locally test and iterate on this idea locally on non-M1 machines (once the builds work on M1 machines natively, see TODO list I added at the top) |
Oh and for installing the deps, when you create the environment for the forked constructor on your Mac, install only Intel binaries via
|
@larsoner There is still an entire chain of macOS dependencies (pyobjc-framework-*) that need to be migrated to the latest macOS SDK for Spyder, the blocker being pyobjc-framework-cocoa if I'm not mistaken. Let's hope this will be resolved today or within the next few days. |
@larsoner I believe once conda-forge/pyobjc-framework-cocoa-feedstock#54 has been merged, migration of the other packages should follow 🙏 Dependency graph, but I believe it's pyobjc-framework-cocoa blocking pyobjc-framework-fsevents: |
I've made a PR to hopefully get the pyobjc-framework-fsevents migration working again: |
@larsoner What should we do re conda-forge/pyobjc-framework-fsevents-feedstock#22 ? Should we try to ping the maintainer again? Or would that be too early? |
I think we just wait until Monday :( |
@larsoner Looking at their GH activity, I assume they're simply on vacation, which makes sense since yesterday was a public holiday and lots of people are taking the opportunity to have a super-long weekend. So we'll just have to be patient and let this person rest 👍👍👍 |
Looks like someone else did the pinging for you, which is nice :) Hopefully it gets merged today! |
@hoechenberger do we need to do something to get pyobjc-framework-coreservices out of the "error" in https://conda-forge.org/status/#current_migrations now that conda-forge/pyobjc-framework-fsevents-feedstock#22 has been merged? |
I'm not sure, let's wait until |
Actually it looks like that's no longer the blocker but rather pyobjc-framework-cocoa being "in PR" ... despite the plan appearing to be not merging that PR. Not sure how to get the conda-forge status to understand the situation |
because we have
And separately we also have spyder waiting on some other stuff (qtconsole, pyqt, qt-webengine, qt-main) |
No this is another migration for linux-aarch64 and ppc64le, so unrelated to osx-arm64 |
Argh right, clicking the wrong buttons! |
@larsoner Only now the |
… still waiting for the PR to get merged … sigh |
@larsoner The finish line is in sight!!! |
This is currently blocked by actions/runner#805EDIT: Now blocked by actions/runner-images#2187Waiting on:
Status: https://conda-forge.org/status/#current_migrations
The text was updated successfully, but these errors were encountered: