Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents

Overview

The following tutorials are targeting the currently known most simple and clean way of building any Python packages, even if those include platform specific extension (mostly C/C++) code.

...

Third party dependencies should be solved case by case and as soon as those are solved, these can be the final steps to create release packages.

1. Setting the evironment

Common requirement

  • Install Visual Studio 2019

  • Install ARM64 build tools

1.2. Build machine: x64

Background: https://linaro.atlassian.net/wiki/spaces/WOAR/pages/28593914166/setuptools-distutils#4.-WoA-(win-arm64)-support

...

7. Goto https://linaro.atlassian.net/wiki/spaces/WOAR/pages/28594241585/Package+building+tutorial#2.-Build-the-package

1.2. Build machine: WoA = win-arm64

Background: https://linaro.atlassian.net/wiki/spaces/WOAR/pages/28593914166/setuptools-distutils#4.-WoA-(win-arm64)-support

  1. Get release version of arm64python

  2. Create and activate virtual environment

    Code Block
    <arm64python>\python.exe -m venv <venv dir>
    <venv dir>\Scripts\activate.bat
  3. Install pre-release arm64win packages
    https://linaro.atlassian.net/wiki/spaces/WOAR/pages/28598239406/Python#Custom-pre-release-package-builds-(wheel-files)

    • pip

      Code Block
      <venv> python -m pip install <path to downloaded Pip-21.3.dev0-py3-none-any.whl>
      <venv> python -m pip install <path to downloaded Pip-21.3.dev0-py3-none-any.whl> --force-reinstall
      • note: the 2nd force-reinstall is required to generate the arm64win pip executables with the updated distlib of the 1st installation

    • setuptools

      Code Block
      <venv> pip install <path to downloaded Setuptools-57.4.0.post20210908-py3-none-any.whl>
  4. Goto https://linaro.atlassian.net/wiki/spaces/WOAR/pages/28594241585/Package+building+tutorial#2.-Build-the-package

2. Build the package

2.1. Test the system

The final goal here is to have a portable wheel file, but until we’re not sure the extension (mostly C/C++) build process (build_ext) is working, for try and error it doesn’t make sense to invoke the full process of wheel generation.

  • If the current project has any specific build steps, then use those.

  • Otherwise

    Code Block
    <venv> python setup.py build_ext

2.2. Create portable wheel file

  • note: this step requires to install wheel by pip

    Code Block
    <venv> pip install wheel
  • If project specific build process or generic build_ext is working, we can try wheel generation

    Code Block
    <venv> pip wheel --no-cache-dir --no-build-isolation -w <output directory> <path of the package source>