From 9136e869fae07f086aa1dfaa202051e26b3ef1a0 Mon Sep 17 00:00:00 2001 From: Andrey Senyaev Date: Wed, 30 Jun 2021 18:17:33 +0300 Subject: [PATCH] Added MacOS with M1 build --- .github/workflows/build_wheels_linux.yml | 4 + .github/workflows/build_wheels_linux_arm.yml | 4 + .github/workflows/build_wheels_macos.yml | 4 + .github/workflows/build_wheels_macos_m1.yml | 117 +++++++++++++++++++ .github/workflows/build_wheels_windows.yml | 3 + pyproject.toml | 10 +- setup.py | 4 +- 7 files changed, 139 insertions(+), 7 deletions(-) create mode 100644 .github/workflows/build_wheels_macos_m1.yml diff --git a/.github/workflows/build_wheels_linux.yml b/.github/workflows/build_wheels_linux.yml index c9307d74..af8f1a06 100644 --- a/.github/workflows/build_wheels_linux.yml +++ b/.github/workflows/build_wheels_linux.yml @@ -4,6 +4,10 @@ on: pull_request: branches: - master + paths-ignore: + - '.github/workflows/build_wheels_linux_arm.yml' + - '.github/workflows/build_wheels_windows*' + - '.github/workflows/build_wheels_macos*' release: types: [published, edited] diff --git a/.github/workflows/build_wheels_linux_arm.yml b/.github/workflows/build_wheels_linux_arm.yml index 7ad52cda..d71db231 100644 --- a/.github/workflows/build_wheels_linux_arm.yml +++ b/.github/workflows/build_wheels_linux_arm.yml @@ -4,6 +4,10 @@ on: pull_request: branches: - master + paths-ignore: + - '.github/workflows/build_wheels_linux.yml' + - '.github/workflows/build_wheels_windows*' + - '.github/workflows/build_wheels_macos*' release: types: [published, edited] diff --git a/.github/workflows/build_wheels_macos.yml b/.github/workflows/build_wheels_macos.yml index c2dc073f..5b2b8066 100644 --- a/.github/workflows/build_wheels_macos.yml +++ b/.github/workflows/build_wheels_macos.yml @@ -4,6 +4,10 @@ on: pull_request: branches: - master + paths-ignore: + - '.github/workflows/build_wheels_linux*' + - '.github/workflows/build_wheels_windows*' + - '.github/workflows/build_wheels_macos_m1.yml' release: types: [published, edited] diff --git a/.github/workflows/build_wheels_macos_m1.yml b/.github/workflows/build_wheels_macos_m1.yml new file mode 100644 index 00000000..d3018497 --- /dev/null +++ b/.github/workflows/build_wheels_macos_m1.yml @@ -0,0 +1,117 @@ +name: Build PYPI wheels for opencv-python on Macos M1 + +on: + pull_request: + branches: + - master + paths-ignore: + - '.github/workflows/build_wheels_linux*' + - '.github/workflows/build_wheels_windows*' + - '.github/workflows/build_wheels_macos.yml' + release: + types: [published, edited] + + +jobs: + build: + runs-on: ${{ matrix.os }} + + strategy: + fail-fast: false + matrix: + os: [macOS-M1] + python-version: [3.7, 3.8, 3.9] + platform: [x64] + with_contrib: [0, 1] + without_gui: [0, 1] + build_sdist: [0] + + env: + SDIST: ${{ matrix.build_sdist || 0 }} + ENABLE_HEADLESS: ${{ matrix.without_gui }} + ENABLE_CONTRIB: ${{ matrix.with_contrib }} + OPENCV_TEST_DATA_PATH: ${{ github.workspace }}/opencv_extra/testdata + + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + submodules: false + fetch-depth: 0 + + - name: Update submodules + if: github.event_name == 'pull_request' + run: git submodule update --remote + + - name: build script + run: | + git submodule update --init multibuild + echo $ENABLE_CONTRIB > contrib.enabled + echo $ENABLE_HEADLESS > headless.enabled + export MACOSX_DEPLOYMENT_TARGET=11.0 + arch -arm64 python${{ matrix.python-version }} -m pip wheel --wheel-dir=wheelhouse . --verbose + - name: before test + run: | + git submodule update --init --recursive + arch -arm64 python${{ matrix.python-version }} -m pip install --user --no-cache --force-reinstall wheelhouse/opencv*.whl + cd ${{ github.workspace }}/tests + arch -arm64 python${{ matrix.python-version }} get_build_info.py + - name: run test + run: | + cd ${{ github.workspace }}/opencv + arch -arm64 python${{ matrix.python-version }} modules/python/test/test.py -v --repo . + - name: saving artifacts + uses: actions/upload-artifact@v2 + with: + name: wheels + path: wheelhouse/opencv*.whl + + test_release_opencv_python: + if: github.event_name == 'release' && github.event.release.prerelease + needs: [build] + runs-on: ubuntu-latest + environment: test-opencv-python-release + defaults: + run: + shell: bash + steps: + - uses: actions/download-artifact@v2 + with: + name: wheels + path: wheelhouse/ + + - name: Upload all wheels + run: | + python -m pip install twine + python -m twine upload --repository testpypi -u ${{ secrets.PYPI_USERNAME }} -p ${{ secrets.PYPI_PASSWORD }} --skip-existing wheelhouse/opencv_* + + release_opencv_python: + if: github.event_name == 'release' && !github.event.release.prerelease + needs: [build] + runs-on: ubuntu-latest + environment: opencv-python-release + defaults: + run: + shell: bash + steps: + - uses: actions/download-artifact@v2 + with: + name: wheels + path: wheelhouse/ + + - name: Upload wheels for opencv_python + run: | + python -m pip install twine + python -m twine upload -u ${{ secrets.OPENCV_PYTHON_USERNAME }} -p ${{ secrets.OPENCV_PYTHON_PASSWORD }} --skip-existing wheelhouse/opencv_python-* + - name: Upload wheels for opencv_contrib_python + run: | + python -m pip install twine + python -m twine upload -u ${{ secrets.OPENCV_CONTRIB_PYTHON_USERNAME }} -p ${{ secrets.OPENCV_CONTRIB_PYTHON_PASSWORD }} --skip-existing wheelhouse/opencv_contrib_python-* + - name: Upload wheels for opencv_python_headless + run: | + python -m pip install twine + python -m twine upload -u ${{ secrets.OPENCV_PYTHON_HEADLESS_USERNAME }} -p ${{ secrets.OPENCV_PYTHON_HEADLESS_PASSWORD }} --skip-existing wheelhouse/opencv_python_headless-* + - name: Upload wheels for opencv_contrib_python_headless + run: | + python -m pip install twine + python -m twine upload -u ${{ secrets.OPENCV_CONTRIB_PYTHON_HEADLESS_USERNAME }} -p ${{ secrets.OPENCV_CONTRIB_PYTHON_HEADLESS_PASSWORD }} --skip-existing wheelhouse/opencv_contrib_python_headless-* diff --git a/.github/workflows/build_wheels_windows.yml b/.github/workflows/build_wheels_windows.yml index c8811083..554f684c 100644 --- a/.github/workflows/build_wheels_windows.yml +++ b/.github/workflows/build_wheels_windows.yml @@ -4,6 +4,9 @@ on: pull_request: branches: - master + paths-ignore: + - '.github/workflows/build_wheels_linux*' + - '.github/workflows/build_wheels_macos*' release: types: [published, edited] diff --git a/pyproject.toml b/pyproject.toml index 07bcc4bb..5a2849f3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,10 +1,10 @@ [build-system] requires = [ "setuptools", "wheel", "scikit-build", "cmake", "pip", - "numpy==1.13.3; python_version=='3.6' and platform_machine != 'aarch64'", + "numpy==1.13.3; python_version=='3.6' and platform_machine != 'aarch64' and platform_machine != 'arm64'", "numpy==1.19.3; python_version>='3.6' and sys_platform == 'linux' and platform_machine == 'aarch64'", - "numpy==1.20.1; python_version>='3.6' and sys_platform == 'darwin' and platform_machine == 'aarch64'", - "numpy==1.14.5; python_version=='3.7' and platform_machine != 'aarch64'", - "numpy==1.17.3; python_version=='3.8' and platform_machine != 'aarch64'", - "numpy==1.19.3; python_version>='3.9' and platform_machine != 'aarch64'" + "numpy==1.21.0; python_version>='3.6' and sys_platform == 'darwin' and platform_machine == 'arm64'", + "numpy==1.14.5; python_version=='3.7' and platform_machine != 'aarch64' and platform_machine != 'arm64'", + "numpy==1.17.3; python_version=='3.8' and platform_machine != 'aarch64' and platform_machine != 'arm64'", + "numpy==1.19.3; python_version>='3.9' and platform_machine != 'aarch64' and platform_machine != 'arm64'" ] diff --git a/setup.py b/setup.py index a14825da..612a080c 100644 --- a/setup.py +++ b/setup.py @@ -36,8 +36,8 @@ def main(): minimum_supported_numpy = "1.19.3" # macos arm64 is a special case - if sys.platform == "darwin" and sys.version_info[:2] >= (3, 6) and platform.machine() == "aarch64": - minimum_supported_numpy = "1.20.1" + if sys.platform == "darwin" and sys.version_info[:2] >= (3, 6) and platform.machine() == "arm64": + minimum_supported_numpy = "1.21.0" numpy_version = "numpy>=%s" % minimum_supported_numpy pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy