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

ARM Support #237

Closed
tcirstea opened this issue Nov 11, 2019 · 13 comments
Closed

ARM Support #237

tcirstea opened this issue Nov 11, 2019 · 13 comments
Labels
enhancement New feature or request

Comments

@tcirstea
Copy link

Any plans for supporting ARM?

On a side note, building maturin works, but then fails to be used since this happens:

💥 maturin failed
Caused by: The architecture ARM is not supported
@konstin
Copy link
Member

konstin commented Nov 12, 2019

Do you have any documentation or reference wheel for native wheels on arm? From reading the distutils source code the architecture is os.uname().machine, but couldn't find a list of possible values or notes about python support of those architectures. You should also note that everything but x86 also isn't manylinux compatible, so it can't be published as wheel on pypi.

@konstin konstin added the enhancement New feature or request label Nov 12, 2019
@programmerjake
Copy link
Contributor

If you want, I can build some wheels on my armv7a computer.

@konstin
Copy link
Member

konstin commented Nov 12, 2019

A wheel as reference and a sysconfig (python3 -m sysconfig) would definitely be helpful!

@programmerjake
Copy link
Contributor

see also: pypa/manylinux#84

@programmerjake
Copy link
Contributor

programmerjake commented Nov 12, 2019

I created a wheel for gmpy2 since that doesn't take long.
python3.5-wheel-ubuntu-16.04-on-odroid-xu4.tar.gz

sysconfig included in tarball.

@konstin
Copy link
Member

konstin commented Nov 17, 2019

Thanks for those files! So the apparent differences are:

  • linux_armv7l instead of linux_x86_64 for the wheel name
  • arm-linux-gnueabihf instead of x86_64-linux-gnu for the so name

Both travis ci and github actions support arm, so we could use either for continuous integration.

@programmerjake
Copy link
Contributor

@konstin
Copy link
Member

konstin commented Nov 19, 2019

I've tinkered a bit with this and while it's not that difficult to implement, the current Target struct and OS enum should be replaced by Platform enum to avoid this becoming to messy:

pub enum Target {
    Linux { manylinux: Manylinux, arch: Arch},
    Windows {is_64_bit: bool},
    Macos,
    FreeBSD,
}

Target::current() and Target::from_target_triple() should check for unsupported combinations and return understandable errors (and never panic as from_target_triple currently does).

@santteegt
Copy link

Hi,

Any updates on supporting ARM architectures? I'm getting The architecture AARCH64 is not supported

@pantunes
Copy link

pantunes commented Jan 26, 2020

Hi,

Any updates regarding this issue? I get the same error and I'm stuck.

A code fix or/and updates will be highly appreciated.

Thanks

PS - I get this when trying to install in a Raspberry Pi 4 (ARMv8-A) 64-bit with Raspbian 2019-09-26.

@konstin
Copy link
Member

konstin commented Feb 20, 2020

It seems that only manylinux2014 added support for armv7l (https://www.python.org/dev/peps/pep-0599/#the-manylinux2014-policy), so it makes sense to require manylinux2014 here.

@ijl
Copy link
Contributor

ijl commented Feb 28, 2020

You can build #273 locally to try.

@konstin
Copy link
Member

konstin commented Mar 2, 2020

Fixed by #273 🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

6 participants