Porting Overview

Platform agnostic packages

Any package, that is distributed only by a generic “*none-any.whl” file, is considered a platform agnostic package.
Installing these packages via pip shouldn’t cause any problems (except for dependency issues), as these are not required any platform specific step, mostly copying file from the package to the system.

These packages can be considered as pure Python libraries also.

Dependencies

Although a given package is considered platform agnostic, it still could depend on platform specific package(s) that could cause installation and/or runtime failures.

Example

pytest: https://pypi.org/project/pytest/#files

Installing a package to win-arm64

Installing a platform agnostic package to win-arm64 requires native win-arm64 Python interpreter, setuptools and pip as a module.
Steps are documented here: https://linaro.atlassian.net/wiki/spaces/WOAR/pages/28594241585/Build+steps+of+package+building+for+win-arm64#1.2.-Build-machine:-WoA-=-win-arm64

Platform dependent packages

Any package, that is distributed by platform specific wheel files, is considered a platform dependent package. The “*none-any.whl” package in this case includes the source files and used for the fallback mechanism of install: when pip doesn’t find the right platform, it will fetch the generic wheel with the source and tries to build it locally.

Porting these packages usually require a C/C++ compiler, but it should be checked from project to project.

Example

Cython: https://pypi.org/project/Cython/#files

Installing a package to win-arm64

Installing a platform dependent package to win-arm64 requires the minimum set as for a platform agnostic package, plus a compiler to build the platform specific code. As most of the packages are based on C/C++ code, this is usually a C/C++ compiler. This C/C++ compiler for Windows is MSVC.

Steps are documented here:

If the build is still failing (build_ext), it means that package don’t support win-arm64 out-of-the-box, because of a dependant package includes platform specific code that needs porting.