diff --git a/.github/workflows/build-m1-binaries.yml b/.github/workflows/build-m1-binaries.yml new file mode 100644 index 0000000000..422c41fb8f --- /dev/null +++ b/.github/workflows/build-m1-binaries.yml @@ -0,0 +1,66 @@ +name: Build on M1 +on: + pull_request: + paths: + - .github/workflows/build-m1-binaries.yml + push: + branches: + - nightly + workflow_dispatch: +jobs: + build_wheels: + name: "Build TorchAudio M1 wheels" + runs-on: macos-m1-11 + strategy: + matrix: + py_vers: [ "3.8", "3.9", "3.10" ] + steps: + - name: Checkout repository + uses: actions/checkout@v2 + - name: Build TorchAudio M1 wheel + shell: arch -arch arm64 bash {0} + env: + ENV_NAME: conda-env-${{ github.run_id }} + PY_VERS: ${{ matrix.py_vers }} + run: | + echo $PATH + . ~/miniconda3/etc/profile.d/conda.sh + set -ex + export BUILD_VERSION=0.14.0.dev$(date "+%Y%m%d") + WHL_NAME=torchaudio-${BUILD_VERSION}-cp${PY_VERS/.}-cp${PY_VERS/.}-macosx_11_0_arm64.whl + conda create -yp ${ENV_NAME} python=${PY_VERS} numpy cmake ninja libpng openjpeg wheel pkg-config + conda run -p ${ENV_NAME} python3 -mpip install torch --extra-index-url=https://download.pytorch.org/whl/nightly + conda run -p ${ENV_NAME} python3 -mpip install delocate + conda run -p ${ENV_NAME} python3 setup.py bdist_wheel + conda run -p ${ENV_NAME} delocate-wheel -v --ignore-missing-dependencies dist/${WHL_NAME} + conda env remove -p ${ENV_NAME} + - name: Test wheel + shell: arch -arch arm64 bash {0} + env: + ENV_NAME: conda-test-env-${{ github.run_id }} + PY_VERS: ${{ matrix.py_vers }} + run: | + . ~/miniconda3/etc/profile.d/conda.sh + set -ex + conda create -yp ${ENV_NAME} python=${PY_VERS} numpy + conda run -p ${ENV_NAME} python3 -mpip install torch --extra-index-url=https://download.pytorch.org/whl/nightly + conda run -p ${ENV_NAME} python3 -mpip install dist/*.whl + # Test torch is importable, by changing cwd and running import commands + conda run --cwd /tmp -p ${ENV_NAME} python3 -c "import torchaudio;print('torchaudio version is ', torchaudio.__version__)" + conda run --cwd /tmp -p ${ENV_NAME} python3 -c "import torch;import torchaudio;torchaudio.set_audio_backend('sox_io')" + conda env remove -p ${ENV_NAME} + - name: Upload wheel to GitHub + uses: actions/upload-artifact@v3 + with: + name: torchaudio-py${{ matrix.py_vers }}-macos11-m1 + path: dist/ + - name: Upload wheel to S3 + shell: arch -arch arm64 bash {0} + env: + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_PYTORCH_UPLOADER_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_PYTORCH_UPLOADER_SECRET_ACCESS_KEY }} + CHANNEL: nightly + run: | + for pkg in dist/*; do + aws s3 cp "$pkg" "s3://pytorch/whl/${CHANNEL}/cpu/" --acl public-read + done