Skip to content

Build wheels for rknn linux aarch64 #1928

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Feb 26, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
125 changes: 125 additions & 0 deletions .github/workflows/build-wheels-aarch64-rknn.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
name: build-wheels-aarch64-rknn

on:
push:
branches:
- wheel
workflow_dispatch:

concurrency:
group: build-wheels-aarch64-rknn-${{ github.ref }}
cancel-in-progress: true

jobs:
build_wheels_aarch64_rknn:
runs-on: ${{ matrix.os }}
name: ${{ matrix.os }} ${{ matrix.python-version }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-22.04-arm]
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]

steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Setup Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

- name: Install Python dependencies
shell: bash
run: |
python3 -m pip install --upgrade pip numpy pypinyin sentencepiece setuptools wheel

- name: ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
key: ${{ matrix.os }}-rknn-linux-aarch64-wheel

- name: Download rknn-toolkit2
shell: bash
run: |
git clone --depth 1 https://github.com/airockchip/rknn-toolkit2

- name: Build sherpa-onnx
shell: bash
run: |
export CMAKE_CXX_COMPILER_LAUNCHER=ccache
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
cmake --version

echo "config: ${{ matrix.config }}"
uname -a
which gcc

gcc --version
g++ --version

echo "pwd"

ls -lh

git clone --depth 1 --branch v1.2.12 https://github.com/alsa-project/alsa-lib
pushd alsa-lib
./gitcompile
popd

export SHERPA_ONNX_RKNN_TOOLKIT2_PATH=$PWD/rknn-toolkit2
export SHERPA_ONNX_RKNN_TOOLKIT2_LIB_DIR=$SHERPA_ONNX_RKNN_TOOLKIT2_PATH/rknpu2/runtime/Linux/librknn_api/aarch64
export CPLUS_INCLUDE_PATH=$SHERPA_ONNX_RKNN_TOOLKIT2_PATH/rknpu2/runtime/Linux/librknn_api/include:$CPLUS_INCLUDE_PATH
export CPLUS_INCLUDE_PATH=$PWD/alsa-lib/include:$CPLUS_INCLUDE_PATH
export SHERPA_ONNX_ALSA_LIB_DIR=$PWD/alsa-lib/src/.libs

export SHERPA_ONNX_CMAKE_ARGS="-DSHERPA_ONNX_ENABLE_RKNN=ON -DSHERPA_ONNX_ENABLE_ALSA=1"
python3 setup.py bdist_wheel


- name: Display results
shell: bash
run: |
ls -lh dist

- 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=rknn/$SHERPA_ONNX_VERSION/

git clone https://csukuangfj:$HF_TOKEN@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 ../dist/*.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

- uses: actions/upload-artifact@v4
with:
name: wheel-${{ matrix.python-version }}
path: ./dist/*.whl
3 changes: 2 additions & 1 deletion .github/workflows/linux.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,8 @@ jobs:

cp -a build/install/bin $dst/
if [[ ${{ matrix.shared_lib }} == ON ]]; then
cp -av build/install/lib $dst/
mkdir $dst/lib
cp -av build/install/lib/*.so* $dst/lib/
fi
cp -a build/install/include $dst/

Expand Down
5 changes: 3 additions & 2 deletions .github/workflows/rknn-linux-aarch64.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,8 @@ jobs:
cp -a build/install/bin $dst/

if [[ ${{ matrix.shared }} == ON ]]; then
cp -v build/install/lib/lib*.so $dst/
mkdir -p $dst/lib
cp -v build/install/lib/lib*.so $dst/lib/
fi

ls -lh build/install/lib
Expand Down Expand Up @@ -218,7 +219,7 @@ jobs:
file: sherpa-onnx-*linux-aarch64*.tar.bz2

- name: Release pre-compiled binaries and libs for rknn linux aarch64
# if: github.repository_owner == 'csukuangfj' && github.event_name == 'push' && contains(github.ref, 'refs/tags/')
if: github.repository_owner == 'csukuangfj' && github.event_name == 'push' && contains(github.ref, 'refs/tags/')
uses: svenstaro/upload-release-action@v2
with:
file_glob: true
Expand Down
2 changes: 1 addition & 1 deletion sherpa-onnx/csrc/online-model-config.cc
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ bool OnlineModelConfig::Validate() const {
EndsWith(transducer.joiner, ".onnx"))) {
SHERPA_ONNX_LOGE(
"--provider is rknn, but you pass onnx model "
"filenames. encoder: '%s', decoder: '%s', joiner: %'s'",
"filenames. encoder: '%s', decoder: '%s', joiner: '%s'",
transducer.encoder.c_str(), transducer.decoder.c_str(),
transducer.joiner.c_str());
return false;
Expand Down
Loading