Skip to content
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

Apple Silicon #1126

Closed
24 of 26 tasks
isuruf opened this issue Aug 5, 2020 · 36 comments
Closed
24 of 26 tasks

Apple Silicon #1126

isuruf opened this issue Aug 5, 2020 · 36 comments

Comments

@isuruf
Copy link
Member

isuruf commented Aug 5, 2020

All of the above are independent tasks.

I could use some help in task 2 if anybody is up for it.

cc @conda-forge/core, @chenghlee

@beckermr
Copy link
Member

beckermr commented Aug 5, 2020

We had another issue open for this @isuruf. Can you please close it or combine it here?

It was called arm fretting or some such thing.

@beckermr
Copy link
Member

beckermr commented Aug 5, 2020

I could use some help in task 2 if anybody is up for it.

Which one is task 2? The new LLVM release?

@isuruf
Copy link
Member Author

isuruf commented Aug 5, 2020

Yes

@jjhelmus
Copy link
Contributor

jjhelmus commented Aug 6, 2020

  • Ask for support for uploading to anaconda.org

I was able to upload and download osx-arm64 packages to anaconda.org without problem although I have not gotten to the point where I can do from directly from an Apple Silicon machine yet. An example: https://anaconda.org/jjhelmus/zlib/files?channel=osx-arm64

@jakirkham
Copy link
Member

One question I've been wondering about, do we want to treat this as a new architecture or do we want to build packages that support both architectures (x86 and arm64)? It sounded like the latter is also possible. So wanted to check.

@jjhelmus
Copy link
Contributor

jjhelmus commented Aug 6, 2020

A quick note on anaconda.org support. Channels backed by a CDN (e.g. conda-forge) will NOT have osx-arm64 packages in the CDN served repository. That will require a small change in the logic that syncs the packages with the CDN.

@isuruf
Copy link
Member Author

isuruf commented Aug 6, 2020

One question I've been wondering about, do we want to treat this as a new architecture or do we want to build packages that support both architectures (x86 and arm64)?

Yes definitely as a new architecture.

It sounded like the latter is also possible.

Not without hacking build systems to use lipo.

@isuruf isuruf pinned this issue Aug 7, 2020
@isuruf
Copy link
Member Author

isuruf commented Aug 9, 2020

As to the linker issue, I tried several options and none of them work except using the system linker from xcode 11/12.

  1. lld's old Mach-O backend is not maintained anymore.
  2. lld's new Mach-O backend has less features than we need.
  3. LLVM's TextAPI library and Apple's TAPI library have incompatible interfaces.

@beckermr
Copy link
Member

beckermr commented Aug 9, 2020

good work!

@isuruf
Copy link
Member Author

isuruf commented Aug 10, 2020

First C package PR: conda-forge/zlib-feedstock#38
First C++ package PR: conda-forge/libcxx-feedstock#67

@jjhelmus, can you check that the zlib package works fine?
@conda-forge/bot, can we start a migration with python and its dependencies as a start?

@CJ-Wright
Copy link
Member

Sure, what does the migration need to encompass? Is this similar to the arch rebuild or more like the pypy rebuild?

@isuruf
Copy link
Member Author

isuruf commented Aug 10, 2020

It's exactly like the arch rebuild, but with a couple of small parameter changes.

  1. add the following in conda-forge.yml
build_platform:
  osx_arm64: osx_64
test_on_native_only: True
  1. Use the set of packages from osx_arm64.txt (Not arch_rebuild.txt)

@CJ-Wright
Copy link
Member

Let me see what I can do.

@jakirkham
Copy link
Member

Would that build both the x86_64 packages and arm64 packages?

@CJ-Wright
Copy link
Member

@isuruf is there a help team to contact?

@isuruf
Copy link
Member Author

isuruf commented Aug 10, 2020

I can create one with me. conda-forge/help-osx-arm64. If anybody else would like to join, please let me know. (Or add yourself if you are in core)

@beckermr
Copy link
Member

@isuruf i'd be best to add it as a subteam of staged-recipes

@isuruf
Copy link
Member Author

isuruf commented Aug 10, 2020

I'm not sure how to do that. I already created one https://github.com/orgs/conda-forge/teams/help-osx-arm64. Can you fix it or delete it and recreate it?

@beckermr
Copy link
Member

done!

@CJ-Wright
Copy link
Member

Is there a list of packages to avoid?

@CJ-Wright
Copy link
Member

@isuruf in zlib why was linux_armv71 removed from the conda-forge.yml?

@beckermr
Copy link
Member

Is there a list of packages to avoid?

We can't build anything that needs fortran for starters.

@isuruf
Copy link
Member Author

isuruf commented Aug 10, 2020

Is there a list of packages to avoid?

build and run requirements should be avoided. Only host. build is from osx-64 platform and we don't run tests.

in zlib why was linux_armv71 removed from the conda-forge.yml?

Because we've removed the docker image for linux_armv7l and the new conda-forge-ci-setup files are not updated for that platform.

@CJ-Wright
Copy link
Member

@beckermr can you give me some context around why this clause is needed?

@isuruf
Copy link
Member Author

isuruf commented Aug 10, 2020

We can't build anything that needs fortran for starters.

Yes. I don't know how the migrator would handle that node, but if it doesn't stop when it can't build gfortran, an explicit condition needs to be added.

@CJ-Wright
Copy link
Member

I'm interested in if I need to duplicate this

@isuruf
Copy link
Member Author

isuruf commented Aug 10, 2020

@CJ-Wright, those are all build dependencies and build dependencies should not be looked at for osx-arm64 migration.

@beckermr
Copy link
Member

@CJ-Wright, those are all build dependencies and build dependencies should not be looked at for osx-arm64 migration.

Except if you need a fortran compiler in build. Then the package cannot be migrated.

@beckermr can you give me some context around why this clause is needed?

That is a from a change in smithy. We moved the names of the ci support files on linux from linux_* to linux_64_*. So for some repos that have not been rerendered, we only infer the 64 if it is not given.

@isuruf
Copy link
Member Author

isuruf commented Aug 12, 2020

A quick note on anaconda.org support. Channels backed by a CDN (e.g. conda-forge) will NOT have osx-arm64 packages in the CDN served repository. That will require a small change in the logic that syncs the packages with the CDN.

Thanks @jjhelmus for letting us know. Saw this issue in conda-forge/tk-feedstock#43

@isuruf
Copy link
Member Author

isuruf commented Aug 14, 2020

Currently blocked by conda/conda-build#3155 at libssh2.

@jjhelmus
Copy link
Contributor

jjhelmus commented Sep 9, 2020

I pushed a few of the right buttons and the CDN now includes osx-arm64 packages. To verify:

wget https://conda-static.anaconda.org/conda-forge/osx-arm64/repodata.json

I believe that when the repodata patch package include instructions for patching this subdir (empty instructions are fine) then current_repodata.json will be availabled.

@beckermr
Copy link
Member

beckermr commented Sep 9, 2020

thank you @jjhelmus!

@jjhelmus
Copy link
Contributor

jjhelmus commented Sep 9, 2020

conda-forge/conda-forge-repodata-patches-feedstock/pull/86

@jakirkham
Copy link
Member

jakirkham commented Dec 2, 2020

If people are looking to try things out and provide feedback, have we reached where they could get started? If so, do we have some instructions for them to follow? How should they share feedback?

@bollwyvl
Copy link
Contributor

bollwyvl commented Feb 8, 2021

Thanks for hustling so hard on all this, folks! We're now down to where most folk seem pretty happy. Had a couple folks asking on gitter/elsewhere on when will package X be available. Seems like something on knowledge_base.rst would give them someplace to land (and hopefully follow-up with testing on a native box). PR incoming!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

6 participants