From 2330f08206f4a4ab577e0f82d558e7fe6e516870 Mon Sep 17 00:00:00 2001 From: Vincent Moens Date: Mon, 8 Jul 2024 09:05:57 +0100 Subject: [PATCH] [BugFix] Fix wheels (#856) --- .github/workflows/build-wheels-linux.yml | 47 +++++ .github/workflows/build-wheels-m1.yml | 1 - .github/workflows/build-wheels-windows.yml | 48 +++++ .github/workflows/wheels.yml | 198 --------------------- 4 files changed, 95 insertions(+), 199 deletions(-) create mode 100644 .github/workflows/build-wheels-linux.yml create mode 100644 .github/workflows/build-wheels-windows.yml delete mode 100644 .github/workflows/wheels.yml diff --git a/.github/workflows/build-wheels-linux.yml b/.github/workflows/build-wheels-linux.yml new file mode 100644 index 000000000..b6580480c --- /dev/null +++ b/.github/workflows/build-wheels-linux.yml @@ -0,0 +1,47 @@ +name: Build Linux Wheels + +on: + pull_request: + push: + branches: + - nightly + - main + - release/* + tags: + # NOTE: Binary build pipelines should only get triggered on release candidate builds + # Release candidate tags look like: v1.11.0-rc1 + - v[0-9]+.[0-9]+.[0-9]+-rc[0-9]+ + workflow_dispatch: + +permissions: + id-token: write + contents: read + +jobs: + generate-matrix: + uses: pytorch/test-infra/.github/workflows/generate_binary_build_matrix.yml@main + with: + package-type: wheel + os: linux + test-infra-repository: pytorch/test-infra + test-infra-ref: main + build: + needs: generate-matrix + strategy: + fail-fast: false + matrix: + include: + - repository: pytorch/tensordict + smoke-test-script: test/smoke_test.py + package-name: tensordict + name: pytorch/tensordict + uses: pytorch/test-infra/.github/workflows/build_wheels_linux.yml@main + with: + repository: ${{ matrix.repository }} + ref: "" + test-infra-repository: pytorch/test-infra + test-infra-ref: main + build-matrix: ${{ needs.generate-matrix.outputs.matrix }} + package-name: ${{ matrix.package-name }} + smoke-test-script: ${{ matrix.smoke-test-script }} + trigger-event: ${{ github.event_name }} diff --git a/.github/workflows/build-wheels-m1.yml b/.github/workflows/build-wheels-m1.yml index d07e92e8a..e27ab6fa6 100644 --- a/.github/workflows/build-wheels-m1.yml +++ b/.github/workflows/build-wheels-m1.yml @@ -46,4 +46,3 @@ jobs: runner-type: macos-m1-stable smoke-test-script: ${{ matrix.smoke-test-script }} trigger-event: ${{ github.event_name }} - env-var-script: .github/scripts/m1_script.sh diff --git a/.github/workflows/build-wheels-windows.yml b/.github/workflows/build-wheels-windows.yml new file mode 100644 index 000000000..32b6d1d17 --- /dev/null +++ b/.github/workflows/build-wheels-windows.yml @@ -0,0 +1,48 @@ +name: Build Windows Wheels + +on: + pull_request: + push: + branches: + - nightly + - main + - release/* + tags: + # NOTE: Binary build pipelines should only get triggered on release candidate builds + # Release candidate tags look like: v1.11.0-rc1 + - v[0-9]+.[0-9]+.[0-9]+-rc[0-9]+ + workflow_dispatch: + +permissions: + id-token: write + contents: read + +jobs: + generate-matrix: + uses: pytorch/test-infra/.github/workflows/generate_binary_build_matrix.yml@main + with: + package-type: wheel + os: windows + test-infra-repository: pytorch/test-infra + test-infra-ref: main + build: + needs: generate-matrix + strategy: + fail-fast: false + matrix: + include: + - repository: pytorch/tensordict + post-script: "python packaging/wheel/relocate.py" + smoke-test-script: test/smoke_test.py + package-name: tensordict + name: pytorch/tensordict + uses: pytorch/test-infra/.github/workflows/build_wheels_windows.yml@main + with: + repository: ${{ matrix.repository }} + ref: "" + test-infra-repository: pytorch/test-infra + test-infra-ref: main + build-matrix: ${{ needs.generate-matrix.outputs.matrix }} + package-name: ${{ matrix.package-name }} + smoke-test-script: ${{ matrix.smoke-test-script }} + trigger-event: ${{ github.event_name }} diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml deleted file mode 100644 index 4ab4adb81..000000000 --- a/.github/workflows/wheels.yml +++ /dev/null @@ -1,198 +0,0 @@ -name: Wheels -on: - pull_request: - types: [opened, synchronize, reopened] - push: - branches: - - release/* - -concurrency: - # Documentation suggests ${{ github.head_ref }}, but that's only available on pull_request/pull_request_target triggers, so using ${{ github.ref }}. - # On master, we want all builds to complete even if merging happens faster to make it easier to discover at which point something broke. - group: ${{ github.workflow }}-${{ github.ref == 'refs/heads/main' && format('ci-master-{0}', github.sha) || format('ci-{0}', github.ref) }} - cancel-in-progress: true - -jobs: - - build-wheel-linux: - runs-on: ubuntu-20.04 - strategy: - matrix: - python_version: [ - ["3.8", "cp38-cp38"], - ["3.9", "cp39-cp39"], - ["3.10", "cp310-cp310"], - ["3.11", "cp311-cp311"], - ["3.12", "cp312-cp312"], - ] - cuda_support: [["", "--extra-index-url https://download.pytorch.org/whl/cpu", "\"['cpu', '11.3', '11.6']\"", "cpu"]] - container: pytorch/manylinux-${{ matrix.cuda_support[3] }} - steps: - - name: Checkout tensordict - uses: actions/checkout@v2 - - name: Install PyTorch RC - run: | - export PATH="/opt/python/${{ matrix.python_version[1] }}/bin:$PATH" - python3 -mpip install torch ${{ matrix.cuda_support[1] }} - - name: Build wheel - run: | - export PATH="/opt/python/${{ matrix.python_version[1] }}/bin:$PATH" - python3 -mpip install wheel - TENSORDICT_BUILD_VERSION=0.5.0 python3 setup.py bdist_wheel - # NB: wheels have the linux_x86_64 tag so we rename to manylinux1 - # find . -name 'dist/*whl' -exec bash -c ' mv $0 ${0/linux/manylinux1}' {} \; - # pytorch/pytorch binaries are also manylinux_2_17 compliant but they - # pretend that they're manylinux1 compliant so we do the same. - - name: Show auditwheel output; confirm 2-17 - run: | - python3 -mpip install auditwheel - auditwheel show dist/* - - name: Upload wheel for the test-wheel job - uses: actions/upload-artifact@v2 - with: - name: tensordict-linux-${{ matrix.python_version[0] }}.whl - path: dist/tensordict-*.whl - - name: Upload wheel for download - uses: actions/upload-artifact@v2 - with: - name: tensordict-batch.whl - path: dist/*.whl - - build-wheel-windows: - runs-on: windows-latest - strategy: - matrix: - python_version: [ - ["3.8", "3.8"], - ["3.9", "3.9"], - ["3.10", "3.10.3"], - ["3.11", "3.11"], - ["3.12", "3.12"], - ] - steps: - - name: Setup Python - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python_version[1] }} - - name: Checkout tensordict - uses: actions/checkout@v2 - - name: Install PyTorch RC - shell: bash - run: | - python3 -mpip install torch --extra-index-url https://download.pytorch.org/whl/cpu - - name: Build wheel - shell: bash - run: | - python3 -mpip install wheel setuptools - TENSORDICT_BUILD_VERSION=0.5.0 python3 setup.py bdist_wheel - - name: Upload wheel for the test-wheel job - uses: actions/upload-artifact@v2 - with: - name: tensordict-win-${{ matrix.python_version[0] }}.whl - path: dist/tensordict-*.whl - - name: Upload wheel for download - uses: actions/upload-artifact@v2 - with: - name: tensordict-batch.whl - path: dist/*.whl - - - test-wheel: - needs: [build-wheel-linux] - strategy: - matrix: - os: [["linux", "ubuntu-20.04"]] - python_version: ["3.8", "3.9", "3.10", "3.11", "3.12"] - runs-on: ${{ matrix.os[1] }} - steps: - - name: Setup Python - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python_version }} - architecture: x64 - - name: Checkout tensordict - uses: actions/checkout@v2 - - name: Install PyTorch RC - run: | - python3 -mpip install torch torchvision --extra-index-url https://download.pytorch.org/whl/cpu - - name: Upgrade pip - run: | - python3 -mpip install --upgrade pip - - name: Install test dependencies - run: | - python3 -mpip install numpy pytest pytest-cov codecov unittest-xml-reporting pillow>=4.1.1 scipy av networkx expecttest pyyaml - - name: Download built wheels - uses: actions/download-artifact@v2 - with: - name: tensordict-${{ matrix.os[0] }}-${{ matrix.python_version }}.whl - path: /tmp/wheels - - name: Install built wheels - run: | - python3 -mpip install /tmp/wheels/* - - name: Log version string - run: | - # Avoid ambiguity of "import tensordict" by deleting the source files. - rm -rf tensordict/ - python -c "import tensordict; print(tensordict.__version__)" - - name: Run tests - run: | - set -e - export IN_CI=1 - mkdir test-reports - python -m torch.utils.collect_env - python -c "import tensordict; print(tensordict.__version__)" - EXIT_STATUS=0 - pytest test/smoke_test.py -v --durations 200 - exit $EXIT_STATUS - - test-wheel-windows: - needs: build-wheel-windows - strategy: - matrix: - python_version: ["3.8", "3.9", "3.10", "3.11", "3.12"] - runs-on: windows-latest - steps: - - name: Setup Python - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python_version }} - - name: Checkout tensordict - uses: actions/checkout@v2 - - name: Install PyTorch RC - shell: bash - run: | - python3 -mpip install torch torchvision --extra-index-url https://download.pytorch.org/whl/cpu - - name: Upgrade pip - shell: bash - run: | - python3 -mpip install --upgrade pip - - name: Install test dependencies - shell: bash - run: | - python3 -mpip install numpy pytest pytest-cov codecov unittest-xml-reporting pillow>=4.1.1 scipy av networkx expecttest pyyaml - - name: Download built wheels - uses: actions/download-artifact@v2 - with: - name: tensordict-win-${{ matrix.python_version }}.whl - path: wheels - - name: Install built wheels - shell: bash - run: | - python3 -mpip install wheels/* - - name: Log version string - shell: bash - run: | - # Avoid ambiguity of "import tensordict" by deleting the source files. - rm -rf tensordict/ - python -c "import tensordict; print(tensordict.__version__)" - - name: Run tests - shell: bash - run: | - set -e - export IN_CI=1 - mkdir test-reports - python -m torch.utils.collect_env - python -c "import tensordict; print(tensordict.__version__)" - EXIT_STATUS=0 - pytest test/smoke_test.py -v --durations 200 - exit $EXIT_STATUS