|
- name: macos-x64-cpu-python
- on:
- push:
- branches: [master]
- paths:
- - '.github/workflows/macos-x64-cpu-python.yml'
- - 'CMakeLists.txt'
- - 'cmake/**'
- - 'src/*'
- - 'src/layer/*'
- - 'src/layer/x86/**'
- - 'python/**'
- pull_request:
- branches: [master]
- paths:
- - '.github/workflows/macos-x64-cpu-python.yml'
- - 'CMakeLists.txt'
- - 'cmake/**'
- - 'src/*'
- - 'src/layer/*'
- - 'src/layer/x86/**'
- - 'python/**'
- concurrency:
- group: macos-x64-cpu-python-${{ github.ref }}
- cancel-in-progress: true
- env:
- DEVELOPER_DIR: /Applications/Xcode_12.4.app/Contents/Developer
- permissions:
- contents: read
-
- jobs:
- macos-clang:
- runs-on: macos-latest
- strategy:
- matrix:
- python-version: [3.6, 3.7, 3.8, 3.9]
- steps:
- - uses: actions/checkout@v3
- with:
- submodules: true
- - name: set up python ${{ matrix.python-version }}
- uses: actions/setup-python@v4
- with:
- python-version: ${{ matrix.python-version }}
- - name: install dependencies
- run: |
- python -m pip install --upgrade pip
- pip install pytest setuptools wheel twine
- - name: cache-openmp
- id: cache-openmp
- uses: actions/cache@v3
- with:
- path: openmp-install
- key: openmp-macos-install-20201213
- - name: openmp
- if: steps.cache-openmp.outputs.cache-hit != 'true'
- run: |
- wget https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/openmp-11.0.0.src.tar.xz
- tar -xf openmp-11.0.0.src.tar.xz
- cd openmp-11.0.0.src
- sed -i'' -e '/.size __kmp_unnamed_critical_addr/d' runtime/src/z_Linux_asm.S
- sed -i'' -e 's/__kmp_unnamed_critical_addr/___kmp_unnamed_critical_addr/g' runtime/src/z_Linux_asm.S
- mkdir -p build && cd build
- cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" \
- -DLIBOMP_ENABLE_SHARED=OFF -DLIBOMP_OMPT_SUPPORT=OFF -DLIBOMP_USE_HWLOC=OFF ..
- cmake --build . -j 3
- cmake --build . --target install
- mkdir $GITHUB_WORKSPACE/openmp-install
- cp -r install/* $GITHUB_WORKSPACE/openmp-install
- - name: install-openmp
- run: |
- sudo cp $GITHUB_WORKSPACE/openmp-install/include/* $DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include
- sudo cp $GITHUB_WORKSPACE/openmp-install/lib/libomp.a $DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib
- - name: build
- run: |
- mkdir build && cd build
- cmake -DCMAKE_OSX_ARCHITECTURES=x86_64 \
- -DOpenMP_C_FLAGS="-Xclang -fopenmp" -DOpenMP_CXX_FLAGS="-Xclang -fopenmp" \
- -DOpenMP_C_LIB_NAMES="libomp" -DOpenMP_CXX_LIB_NAMES="libomp" \
- -DOpenMP_libomp_LIBRARY="$DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libomp.a" \
- -DNCNN_PYTHON=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF ..
- cmake --build . -j 3
- - name: install python
- run: cd python && pip install .
- - name: test
- run: cd python && pytest tests
- - name: build and publish
- if: startsWith(github.ref, 'refs/tags')
- env:
- TWINE_USERNAME: __token__
- TWINE_PASSWORD: ${{ secrets.TEST_PYPI_API_TOKEN }}
- TWINE_REPOSITORY_URL: "https://test.pypi.org/legacy/"
- run: |
- cd python
- python setup.py bdist_wheel
- twine upload dist/*
|