|
56 | 56 | architecture: aarch64 |
57 | 57 | build-platform: "python-build-package" |
58 | 58 | build-command: "BUILD_AGAINST_ALL_FFMPEG_FROM_S3=1 ENABLE_CUDA=1 python -m build --wheel -vvv --no-isolation" |
| 59 | + |
| 60 | + install-and-test: |
| 61 | + runs-on: linux.arm64.2xlarge |
| 62 | + container: |
| 63 | + image: pytorch/manylinuxaarch64-builder:cuda12.6 |
| 64 | + env: |
| 65 | + cuda_version_without_periods: "126" |
| 66 | + strategy: |
| 67 | + fail-fast: false |
| 68 | + matrix: |
| 69 | + python-version: ['3.10'] |
| 70 | + ffmpeg-version-for-tests: ['4.4.2', '5.1.2', '6.1.1', '7.0.1', '8.0'] |
| 71 | + needs: build |
| 72 | + steps: |
| 73 | + - uses: actions/download-artifact@v4 |
| 74 | + with: |
| 75 | + name: meta-pytorch_torchcodec__${{ matrix.python-version }}_cu${{ env.cuda_version_without_periods }}_aarch64 |
| 76 | + path: pytorch/torchcodec/dist/ |
| 77 | + - name: Setup conda env |
| 78 | + uses: conda-incubator/setup-miniconda@v3 |
| 79 | + with: |
| 80 | + auto-update-conda: true |
| 81 | + # Using miniforge instead of miniconda ensures that the default |
| 82 | + # conda channel is conda-forge instead of main/default. This ensures |
| 83 | + # ABI consistency between dependencies: |
| 84 | + # https://conda-forge.org/docs/user/transitioning_from_defaults/ |
| 85 | + miniforge-version: latest |
| 86 | + activate-environment: test |
| 87 | + python-version: ${{ matrix.python-version }} |
| 88 | + - name: Update pip |
| 89 | + run: python -m pip install --upgrade pip |
| 90 | + - name: Install PyTorch |
| 91 | + run: | |
| 92 | + ${CONDA_RUN} python -m pip install --pre torch torchvision --index-url https://download.pytorch.org/whl/nightly/cu${{ env.cuda_version_without_periods }} |
| 93 | + - name: Install torchcodec from the wheel |
| 94 | + run: | |
| 95 | + wheel_path=`find pytorch/torchcodec/dist -type f -name "*.whl"` |
| 96 | + echo Installing $wheel_path |
| 97 | + python -m pip install $wheel_path -vvv |
| 98 | +
|
| 99 | + - name: Check out repo |
| 100 | + uses: actions/checkout@v3 |
| 101 | + - name: Install ffmpeg, post build |
| 102 | + run: | |
| 103 | + # Ideally we would have checked for that before installing the wheel, |
| 104 | + # but we need to checkout the repo to access this file, and we don't |
| 105 | + # want to checkout the repo before installing the wheel to avoid any |
| 106 | + # side-effect. It's OK. |
| 107 | + source packaging/helpers.sh |
| 108 | + assert_ffmpeg_not_installed |
| 109 | +
|
| 110 | + conda install "ffmpeg=${{ matrix.ffmpeg-version-for-tests }}" -c conda-forge |
| 111 | + ffmpeg -version |
| 112 | + echo LD_LIBRARY_PATH=$CONDA_PREFIX/lib:/usr/local/cuda/lib64/:${LD_LIBRARY_PATH} >> $GITHUB_ENV |
| 113 | +
|
| 114 | + - name: Install test dependencies |
| 115 | + run: | |
| 116 | + # Ideally we would find a way to get those dependencies from pyproject.toml |
| 117 | + python -m pip install numpy pytest pillow |
| 118 | +
|
| 119 | + - name: Delete the src/ folder just for fun |
| 120 | + run: | |
| 121 | + # The only reason we checked-out the repo is to get access to the |
| 122 | + # tests. We don't care about the rest. Out of precaution, we delete |
| 123 | + # the src/ folder to be extra sure that we're running the code from |
| 124 | + # the installed wheel rather than from the source. |
| 125 | + # This is just to be extra cautious and very overkill because a) |
| 126 | + # there's no way the `torchcodec` package from src/ can be found from |
| 127 | + # the PythonPath: the main point of `src/` is precisely to protect |
| 128 | + # against that and b) if we ever were to execute code from |
| 129 | + # `src/torchcodec`, it would fail loudly because the built .so files |
| 130 | + # aren't present there. |
| 131 | + rm -r src/ |
| 132 | + ls |
| 133 | + - name: Run Python tests |
| 134 | + run: | |
| 135 | + pytest --override-ini="addopts=-v" test |
0 commit comments