name: linux on: push: branches: - master tags: - '*' paths: - '.github/workflows/linux.yaml' - '.github/scripts/test-kws.sh' - '.github/scripts/test-online-transducer.sh' - '.github/scripts/test-online-paraformer.sh' - '.github/scripts/test-offline-transducer.sh' - '.github/scripts/test-offline-ctc.sh' - '.github/scripts/test-online-ctc.sh' - '.github/scripts/test-offline-tts.sh' - 'CMakeLists.txt' - 'cmake/**' - 'sherpa-onnx/csrc/*' - 'sherpa-onnx/c-api/*' - 'c-api-examples/**' pull_request: branches: - master paths: - '.github/workflows/linux.yaml' - '.github/scripts/test-kws.sh' - '.github/scripts/test-online-transducer.sh' - '.github/scripts/test-online-paraformer.sh' - '.github/scripts/test-offline-transducer.sh' - '.github/scripts/test-offline-ctc.sh' - '.github/scripts/test-online-ctc.sh' - '.github/scripts/test-offline-tts.sh' - 'CMakeLists.txt' - 'cmake/**' - 'sherpa-onnx/csrc/*' - 'sherpa-onnx/c-api/*' workflow_dispatch: concurrency: group: linux-${{ github.ref }} cancel-in-progress: true jobs: linux: name: ${{ matrix.os }} ${{ matrix.build_type }} ${{ matrix.shared_lib }} ${{ matrix.gcc_version }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-20.04, ubuntu-22.04] build_type: [Release, Debug] shared_lib: [ON, OFF] # see https://github.com/egor-tensin/setup-gcc # 7-11 for ubuntu 20.04 # 9-12 for ubuntu 22.04 gcc_version: ["7", "8", "9", "10", "11", "12", "13"] exclude: - os: ubuntu-20.04 gcc_version: "12" - os: ubuntu-22.04 gcc_version: "7" - os: ubuntu-22.04 gcc_version: "8" steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Set up GCC ${{ matrix.gcc_version }} uses: egor-tensin/setup-gcc@v1 with: version: ${{ matrix.gcc_version }} platform: x64 - name: Display gcc version ${{ matrix.gcc_version }} shell: bash run: | which gcc gcc --version which g++ g++ --version - name: ccache uses: hendrikmuhs/ccache-action@v1.2 with: key: ${{ matrix.os }}-${{ matrix.build_type }}-shared-${{ matrix.shared_lib }}-gcc-${{ matrix.gcc_version }} - name: Configure CMake shell: bash run: | export CMAKE_CXX_COMPILER_LAUNCHER=ccache export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" cmake --version mkdir build cd build cmake -D CMAKE_BUILD_TYPE=${{ matrix.build_type }} -D BUILD_SHARED_LIBS=${{ matrix.shared_lib }} -DCMAKE_INSTALL_PREFIX=./install .. - name: Build sherpa-onnx for ubuntu shell: bash run: | export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" cd build make -j2 make install ls -lh lib ls -lh bin - name: Display dependencies of sherpa-onnx for linux shell: bash run: | ls -lh build/bin ls -lh build/_deps/onnxruntime-src/lib/ echo "strip" strip build/bin/* echo "after strip" ls -lh build/bin file build/bin/sherpa-onnx file build/bin/sherpa-onnx ls -lh build/bin/sherpa-onnx readelf -d build/bin/sherpa-onnx - uses: actions/upload-artifact@v4 if: matrix.shared_lib == 'OFF' && matrix.build_type == 'Release' with: name: release-static-${{ matrix.os }}-${{ matrix.build_type }}-${{ matrix.shared_lib }}-${{ matrix.gcc_version }} path: build/bin/* - name: Test transducer kws shell: bash run: | export PATH=$PWD/build/bin:$PATH export EXE=sherpa-onnx-keyword-spotter .github/scripts/test-kws.sh - name: Test online CTC shell: bash run: | export PATH=$PWD/build/bin:$PATH export EXE=sherpa-onnx .github/scripts/test-online-ctc.sh - name: Test offline Whisper shell: bash run: | export PATH=$PWD/build/bin:$PATH export EXE=sherpa-onnx-offline readelf -d build/bin/sherpa-onnx-offline .github/scripts/test-offline-whisper.sh - name: Test offline CTC shell: bash run: | export PATH=$PWD/build/bin:$PATH export EXE=sherpa-onnx-offline .github/scripts/test-offline-ctc.sh - name: Test offline TTS shell: bash run: | export PATH=$PWD/build/bin:$PATH export EXE=sherpa-onnx-offline-tts .github/scripts/test-offline-tts.sh - name: Test online paraformer shell: bash run: | export PATH=$PWD/build/bin:$PATH export EXE=sherpa-onnx .github/scripts/test-online-paraformer.sh - name: Test offline transducer shell: bash run: | export PATH=$PWD/build/bin:$PATH export EXE=sherpa-onnx-offline .github/scripts/test-offline-transducer.sh - name: Test online transducer shell: bash run: | export PATH=$PWD/build/bin:$PATH export EXE=sherpa-onnx .github/scripts/test-online-transducer.sh - name: Test online transducer (C API) shell: bash run: | export PATH=$PWD/build/bin:$PATH export EXE=decode-file-c-api .github/scripts/test-online-transducer.sh - name: Copy files if: github.repository_owner == 'csukuangfj' || github.repository_owner == 'k2-fsa' && github.event_name == 'push' && contains(github.ref, 'refs/tags/') 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-x64 mkdir $dst cp -a build/install/bin $dst/ cp -a build/install/lib $dst/ cp -a build/install/include $dst/ tree $dst tar cjvf ${dst}.tar.bz2 $dst - name: Release pre-compiled binaries and libs for linux x64 if: github.repository_owner == 'csukuangfj' || 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-x64.tar.bz2 - uses: actions/upload-artifact@v4 with: name: tts-generated-test-files-${{ matrix.os }}-${{ matrix.build_type }}-${{ matrix.shared_lib }}-${{ matrix.gcc_version }} path: tts