# Modified from https://github.com/Tencent/ncnn/blob/master/.github/workflows/linux-arm-cpu-gcc.yml name: aarch64-linux-gnu-shared on: push: branches: - master tags: - 'v[0-9]+.[0-9]+.[0-9]+*' paths: - '.github/workflows/aarch64-linux-gnu-shared.yaml' - 'cmake/**' - 'sherpa-onnx/csrc/*' - 'sherpa-onnx/c-api/*' - 'toolchains/aarch64-linux-gnu.toolchain.cmake' pull_request: branches: - master paths: - '.github/workflows/aarch64-linux-gnu-shared.yaml' - 'cmake/**' - 'sherpa-onnx/csrc/*' - 'sherpa-onnx/c-api/*' - 'toolchains/aarch64-linux-gnu.toolchain.cmake' workflow_dispatch: concurrency: group: aarch64-linux-gnu-shared-${{ github.ref }} cancel-in-progress: true jobs: aarch64_linux_gnu_shared: runs-on: ${{ matrix.os }} name: aarch64 shared GPU ${{ matrix.gpu }} ${{ matrix.onnxruntime_version }} strategy: fail-fast: false matrix: include: - os: ubuntu-22.04-arm gpu: ON onnxruntime_version: "1.11.0" - os: ubuntu-22.04-arm gpu: ON onnxruntime_version: "1.16.0" - os: ubuntu-22.04-arm gpu: ON onnxruntime_version: "1.18.0" - os: ubuntu-22.04-arm gpu: ON onnxruntime_version: "1.18.1" - os: ubuntu-22.04-arm gpu: OFF onnxruntime_version: "" steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Build sherpa-onnx if: matrix.gpu == 'ON' shell: bash run: | onnxruntime_version=${{ matrix.onnxruntime_version }} git clone --depth 1 --branch v1.2.12 https://github.com/alsa-project/alsa-lib pushd alsa-lib ./gitcompile popd export CPLUS_INCLUDE_PATH=$PWD/alsa-lib/include:$CPLUS_INCLUDE_PATH export SHERPA_ONNX_ALSA_LIB_DIR=$PWD/alsa-lib/src/.libs mkdir build cd build cmake \ -DBUILD_SHARED_LIBS=ON \ -DCMAKE_INSTALL_PREFIX=./install \ -DSHERPA_ONNX_ENABLE_GPU=ON \ -DSHERPA_ONNX_LINUX_ARM64_GPU_ONNXRUNTIME_VERSION=$onnxruntime_version \ .. make -j4 install cp -v bin/sense-voice-simulate-streaming-alsa-cxx-api install/bin rm -rf install/lib/pkgconfig rm -fv install/lib/cargs.h rm -fv install/lib/libcargs.so - name: Build sherpa-onnx if: matrix.gpu == 'OFF' uses: addnab/docker-run-action@v3 with: image: quay.io/pypa/manylinux2014_aarch64 options: | --volume ${{ github.workspace }}/:/k2-fsa/sherpa-onnx shell: bash run: | echo "config: ${{ matrix.config }}" uname -a which gcc gcc --version g++ --version echo "pwd" ls -lh cd /k2-fsa/sherpa-onnx/ git clone --depth 1 --branch v1.2.12 https://github.com/alsa-project/alsa-lib pushd alsa-lib ./gitcompile popd export CPLUS_INCLUDE_PATH=$PWD/alsa-lib/include:$CPLUS_INCLUDE_PATH export SHERPA_ONNX_ALSA_LIB_DIR=$PWD/alsa-lib/src/.libs mkdir build cd build cmake \ -DBUILD_SHARED_LIBS=ON \ -DCMAKE_INSTALL_PREFIX=./install \ .. make -j4 install cp -v bin/sense-voice-simulate-streaming-alsa-cxx-api install/bin rm -rf install/lib/pkgconfig rm -fv install/lib/cargs.h rm -fv install/lib/libcargs.so - name: Display system info shell: bash run: | uname -a gcc --version g++ --version - name: Display generated files shell: bash run: | cd build/install ls -lh bin echo "---" ls -lh lib file bin/sherpa-onnx readelf -d bin/sherpa-onnx ldd bin/sherpa-onnx ./bin/sherpa-onnx --help - name: Copy files shell: bash run: | SHERPA_ONNX_VERSION=v$(grep "SHERPA_ONNX_VERSION" ./CMakeLists.txt | cut -d " " -f 2 | cut -d '"' -f 2) dst=sherpa-onnx-${SHERPA_ONNX_VERSION}-linux-aarch64-shared if [[ ${{ matrix.gpu }} == OFF ]]; then dst=${dst}-cpu else dst=${dst}-gpu-onnxruntime-${{ matrix.onnxruntime_version }} fi mkdir $dst cp -a build/install/bin $dst/ cp -a build/install/lib $dst/ ls -lh build/install/lib ls -lh build/install/bin ls -lh $dst/bin/ echo "strip" strip $dst/bin/* echo "after strip" ls -lh $dst/bin/ tree $dst tar cjvf ${dst}.tar.bz2 $dst - uses: actions/upload-artifact@v4 with: name: sherpa-onnx-linux-aarch64-shared-gpu-${{ matrix.gpu }}-onnxruntime-${{ matrix.onnxruntime_version }} path: sherpa-onnx-*linux-aarch64-shared*.tar.bz2 # https://huggingface.co/docs/hub/spaces-github-actions - name: Publish to huggingface if: (github.repository_owner == 'csukuangfj' || github.repository_owner == 'k2-fsa') && (github.event_name == 'push' || github.event_name == 'workflow_dispatch') env: HF_TOKEN: ${{ secrets.HF_TOKEN }} uses: nick-fields/retry@v3 with: max_attempts: 20 timeout_seconds: 200 shell: bash command: | SHERPA_ONNX_VERSION=$(grep "SHERPA_ONNX_VERSION" ./CMakeLists.txt | cut -d " " -f 2 | cut -d '"' -f 2) git config --global user.email "csukuangfj@gmail.com" git config --global user.name "Fangjun Kuang" rm -rf huggingface export GIT_CLONE_PROTECTION_ACTIVE=false GIT_LFS_SKIP_SMUDGE=1 git clone https://csukuangfj:$HF_TOKEN@huggingface.co/csukuangfj/sherpa-onnx-libs huggingface cd huggingface dst=aarch64/$SHERPA_ONNX_VERSION mkdir -p $dst cp -v ../sherpa-onnx-*-shared*.tar.bz2 $dst/ git status git lfs track "*.bz2" git add . git commit -m "upload sherpa-onnx-${SHERPA_ONNX_VERSION}-linux-aarch64-shared.tar.bz2" git push https://csukuangfj:$HF_TOKEN@huggingface.co/csukuangfj/sherpa-onnx-libs main - name: Release pre-compiled binaries and libs for aarch64 linux if: github.repository_owner == 'k2-fsa' && github.event_name == 'push' && contains(github.ref, 'refs/tags/') uses: svenstaro/upload-release-action@v2 with: file_glob: true overwrite: true file: sherpa-onnx-*linux-aarch64*.tar.bz2 - name: Release pre-compiled binaries and libs for aarch64 linux if: github.repository_owner == 'csukuangfj' && github.event_name == 'push' && contains(github.ref, 'refs/tags/') uses: svenstaro/upload-release-action@v2 with: file_glob: true overwrite: true file: sherpa-onnx-*linux-aarch64*.tar.bz2 # repo_name: k2-fsa/sherpa-onnx # repo_token: ${{ secrets.UPLOAD_GH_SHERPA_ONNX_TOKEN }} # tag: v1.11.5 - name: Test offline Moonshine if: matrix.build_type != 'Debug' shell: bash run: | du -h -d1 . export PATH=$PWD/build/install/bin:$PATH export EXE=sherpa-onnx-offline readelf -d build/bin/sherpa-onnx-offline .github/scripts/test-offline-moonshine.sh