diff --git a/.github/workflows/build-wheels-linux-cuda.yaml b/.github/workflows/build-wheels-linux-cuda.yaml new file mode 100644 index 000000000..282b30a1d --- /dev/null +++ b/.github/workflows/build-wheels-linux-cuda.yaml @@ -0,0 +1,131 @@ +name: build-wheels-linux-cuda + +on: + push: + branches: + - wheel + tags: + - 'v[0-9]+.[0-9]+.[0-9]+*' + workflow_dispatch: + +env: + SHERPA_ONNX_IS_IN_GITHUB_ACTIONS: 1 + +concurrency: + group: build-wheels-linux-cuda-${{ github.ref }} + cancel-in-progress: true + +jobs: + build_wheels_linux_cuda: + name: ${{ matrix.manylinux }} ${{ matrix.python-version }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-20.04] + python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] + + steps: + - uses: actions/checkout@v4 + + - name: Setup Python ${{ matrix.python-version }} + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + + - name: Install Python dependencies + shell: bash + run: | + pip install -U pip wheel setuptools twine + + - name: Build alsa-lib + shell: bash + run: | + git clone --depth 1 --branch v1.2.12 https://github.com/alsa-project/alsa-lib + cd alsa-lib + ./gitcompile + + - name: Build sherpa-onnx + shell: bash + run: | + export CPLUS_INCLUDE_PATH=$PWD/alsa-lib/include:$CPLUS_INCLUDE_PATH + export SHERPA_ONNX_ALSA_LIB_DIR=$PWD/alsa-lib/src/.libs + export LD_LIBRARY_PATH=$SHERPA_ONNX_ALSA_LIB_DIR:$LD_LIBRARY_PATH + + echo "CPLUS_INCLUDE_PATH: $CPLUS_INCLUDE_PATH" + ls -lh $PWD/alsa-lib/include + echo "---" + ls -lh $PWD/alsa-lib/src/.libs + + export SHERPA_ONNX_MAKE_ARGS="VERBOSE=1" + export SHERPA_ONNX_ENABLE_ALSA=1 + export SHERPA_ONNX_CMAKE_ARGS="-DSHERPA_ONNX_ENABLE_GPU=ON" + + python3 setup.py bdist_wheel + + ls -lh dist + + mv dist wheelhouse + + - name: Display wheels + shell: bash + run: | + ls -lh ./wheelhouse/ + + - name: Install patchelf + shell: bash + run: | + sudo apt-get update -q + sudo apt-get install -q -y patchelf + patchelf --help + + - name: Patch wheels + shell: bash + run: | + mkdir ./wheels + sudo ./scripts/wheel/patch_wheel.py --in-dir ./wheelhouse --out-dir ./wheels + + ls -lh ./wheels/ + rm -rf ./wheelhouse + mv ./wheels ./wheelhouse + + - uses: actions/upload-artifact@v4 + with: + name: wheel-cuda-${{ matrix.python-version }} + path: ./wheelhouse/*.whl + + - name: Publish to huggingface + env: + HF_TOKEN: ${{ secrets.HF_TOKEN }} + uses: nick-fields/retry@v3 + with: + max_attempts: 20 + timeout_seconds: 200 + shell: bash + command: | + git config --global user.email "csukuangfj@gmail.com" + git config --global user.name "Fangjun Kuang" + + rm -rf huggingface + export GIT_LFS_SKIP_SMUDGE=1 + export GIT_CLONE_PROTECTION_ACTIVE=false + + SHERPA_ONNX_VERSION=$(grep "SHERPA_ONNX_VERSION" ./CMakeLists.txt | cut -d " " -f 2 | cut -d '"' -f 2) + echo "SHERPA_ONNX_VERSION $SHERPA_ONNX_VERSION" + + d=cuda/$SHERPA_ONNX_VERSION + + git clone https://huggingface.co/csukuangfj/sherpa-onnx-wheels huggingface + cd huggingface + git fetch + git pull + git merge -m "merge remote" --ff origin main + + mkdir -p $d + + cp -v ../wheelhouse/*.whl $d/ + + git status + git add . + git commit -m "add more wheels" + git push https://csukuangfj:$HF_TOKEN@huggingface.co/csukuangfj/sherpa-onnx-wheels main diff --git a/.github/workflows/build-wheels-linux.yaml b/.github/workflows/build-wheels-linux.yaml index fe302827a..dfdae1ca7 100644 --- a/.github/workflows/build-wheels-linux.yaml +++ b/.github/workflows/build-wheels-linux.yaml @@ -56,7 +56,6 @@ jobs: ls -lh ./wheelhouse/ - name: Install patchelf - if: matrix.os == 'ubuntu-latest' shell: bash run: | sudo apt-get update -q @@ -65,7 +64,6 @@ jobs: - name: Patch wheels shell: bash - if: matrix.os == 'ubuntu-latest' run: | mkdir ./wheels sudo ./scripts/wheel/patch_wheel.py --in-dir ./wheelhouse --out-dir ./wheels diff --git a/.github/workflows/build-wheels-win64-cuda.yaml b/.github/workflows/build-wheels-win64-cuda.yaml new file mode 100644 index 000000000..eb06e9b41 --- /dev/null +++ b/.github/workflows/build-wheels-win64-cuda.yaml @@ -0,0 +1,93 @@ +name: build-wheels-win64-cuda + +on: + push: + branches: + - wheel + tags: + - 'v[0-9]+.[0-9]+.[0-9]+*' + workflow_dispatch: + +env: + SHERPA_ONNX_IS_IN_GITHUB_ACTIONS: 1 + +concurrency: + group: build-wheels-win64-cuda-${{ github.ref }} + cancel-in-progress: true + +jobs: + build_wheels_win64_cuda: + name: ${{ matrix.python-version }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [windows-2019] + python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] + + steps: + - uses: actions/checkout@v4 + + - name: Setup Python ${{ matrix.python-version }} + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + + - name: Build wheels + shell: bash + run: | + pip install setuptools wheel + + export SHERPA_ONNX_CMAKE_ARGS="-DSHERPA_ONNX_ENABLE_GPU=ON" + + python3 setup.py bdist_wheel + + ls -lh ./dist/ + + mv dist wheelhouse + + - name: Display wheels + shell: bash + run: | + ls -lh ./wheelhouse/ + + - uses: actions/upload-artifact@v4 + with: + name: wheel-${{ matrix.python-version }} + path: ./wheelhouse/*.whl + + - name: Publish to huggingface + env: + HF_TOKEN: ${{ secrets.HF_TOKEN }} + uses: nick-fields/retry@v3 + with: + max_attempts: 20 + timeout_seconds: 200 + shell: bash + command: | + git config --global user.email "csukuangfj@gmail.com" + git config --global user.name "Fangjun Kuang" + + rm -rf huggingface + export GIT_LFS_SKIP_SMUDGE=1 + export GIT_CLONE_PROTECTION_ACTIVE=false + + SHERPA_ONNX_VERSION=$(grep "SHERPA_ONNX_VERSION" ./CMakeLists.txt | cut -d " " -f 2 | cut -d '"' -f 2) + echo "SHERPA_ONNX_VERSION $SHERPA_ONNX_VERSION" + + d=cuda/$SHERPA_ONNX_VERSION + + git clone https://huggingface.co/csukuangfj/sherpa-onnx-wheels huggingface + cd huggingface + git fetch + git pull + git merge -m "merge remote" --ff origin main + + mkdir -p $d + + cp -v ../wheelhouse/*.whl $d/ + + git status + git add . + git commit -m "add more wheels" + git push https://csukuangfj:$HF_TOKEN@huggingface.co/csukuangfj/sherpa-onnx-wheels main diff --git a/setup.py b/setup.py index 150444a86..cbd375008 100644 --- a/setup.py +++ b/setup.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 +import os import re from pathlib import Path @@ -26,6 +27,14 @@ def get_package_version(): match = re.search(r"set\(SHERPA_ONNX_VERSION (.*)\)", content) latest_version = match.group(1).strip('"') + + cmake_args = os.environ.get("SHERPA_ONNX_CMAKE_ARGS", "") + extra_version = "" + if "-DSHERPA_ONNX_ENABLE_GPU=ON" in cmake_args: + extra_version = "+cuda" + + latest_version += extra_version + return latest_version