name: python on: push: branches: [master] paths: - '.github/workflows/python.yml' - 'CMakeLists.txt' - 'cmake/**' - 'src/*' - 'src/layer/*' - 'src/layer/x86/**' - 'src/layer/vulkan/**' - 'python/**' pull_request: branches: [master] paths: - '.github/workflows/python.yml' - 'CMakeLists.txt' - 'cmake/**' - 'src/*' - 'src/layer/*' - 'src/layer/x86/**' - 'src/layer/vulkan/**' - 'python/**' concurrency: group: python-${{ github.ref }} cancel-in-progress: true env: DEVELOPER_DIR: /Applications/Xcode_15.2.app/Contents/Developer MAC_DEPLOYMENT_TARGET: '11.0' ENABLE_BITCODE: OFF ENABLE_ARC: OFF ENABLE_VISIBILITY: OFF CMAKE_BUILD_PARALLEL_LEVEL: 4 UseMultiToolTask: true permissions: contents: read jobs: build: strategy: matrix: os: [ubuntu-latest, macos-13, windows-latest] python-version: [3.9, 3.12] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 with: submodules: true - name: cache-swiftshader if: matrix.os == 'ubuntu-latest' id: cache-swiftshader uses: actions/cache@v4 with: path: swiftshader-install key: swiftshader-linux-install-20240622 - name: checkout-swiftshader if: matrix.os == 'ubuntu-latest' && steps.cache-swiftshader.outputs.cache-hit != 'true' uses: actions/checkout@v4 with: repository: google/swiftshader path: swiftshader ref: de870ac7518fe2b6bb651ecc22fc36647cf7b986 - name: checkout-swiftshader-submodules if: matrix.os == 'ubuntu-latest' && steps.cache-swiftshader.outputs.cache-hit != 'true' run: | cd swiftshader git -c submodule."third_party/git-hooks".update=none submodule update --init --recursive - name: swiftshader if: matrix.os == 'ubuntu-latest' && steps.cache-swiftshader.outputs.cache-hit != 'true' run: | cd swiftshader mkdir -p build; cd build cmake -DCMAKE_INSTALL_PREFIX=install -DSWIFTSHADER_BUILD_EGL=FALSE -DSWIFTSHADER_BUILD_GLESv2=FALSE -DSWIFTSHADER_BUILD_GLES_CM=FALSE -DSWIFTSHADER_BUILD_VULKAN=TRUE -DSWIFTSHADER_BUILD_PVR=FALSE -DSWIFTSHADER_BUILD_TESTS=FALSE -DSWIFTSHADER_ENABLE_ASTC=FALSE -DSWIFTSHADER_WARNINGS_AS_ERRORS=FALSE -DREACTOR_BACKEND=Subzero -DREACTOR_DEFAULT_OPT_LEVEL=Default -DCMAKE_BUILD_TYPE=Release .. cmake --build . -j $(nproc) mkdir $GITHUB_WORKSPACE/swiftshader-install cp Linux/* $GITHUB_WORKSPACE/swiftshader-install - name: setup-python uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: install-deps run: | python -m pip install --upgrade pip pip install pytest setuptools wheel twine importlib-metadata - name: build if: matrix.os == 'ubuntu-latest' env: CC: clang CXX: clang++ run: | mkdir build && cd build cmake -DNCNN_VULKAN=ON -DNCNN_PYTHON=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF .. cmake --build . -j $(nproc) - name: build if: matrix.os == 'macos-13' run: | mkdir build && cd build cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/ios.toolchain.cmake -DPLATFORM=MAC -DARCHS="x86_64" \ -DDEPLOYMENT_TARGET=$MAC_DEPLOYMENT_TARGET -DENABLE_BITCODE=$ENABLE_BITCODE -DENABLE_ARC=$ENABLE_ARC -DENABLE_VISIBILITY=$ENABLE_VISIBILITY \ -DNCNN_VULKAN=OFF -DNCNN_PYTHON=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF .. cmake --build . -j 4 - name: build if: matrix.os == 'windows-latest' run: | mkdir build; cd build cmake -T v142,host=x64 -A x64 -DNCNN_VULKAN=OFF -DNCNN_PYTHON=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF .. cmake --build . --config Release -j 4 - name: build-python run: cd python && pip install . - name: test if: matrix.os == 'ubuntu-latest' run: | export VK_ICD_FILENAMES="$GITHUB_WORKSPACE/swiftshader-install/vk_swiftshader_icd.json" cd python && pytest tests - name: test if: matrix.os != 'ubuntu-latest' run: | cd python && pytest tests