name: flutter-macos on: push: branches: - flutter tags: - 'v[0-9]+.[0-9]+.[0-9]+*' paths: - '.github/workflows/flutter-macos.yaml' - 'CMakeLists.txt' - 'cmake/**' - 'sherpa-onnx/csrc/*' - 'sherpa-onnx/c-api/*' - 'sherpa-onnx/flutter/**' pull_request: branches: - master paths: - '.github/workflows/flutter-macos.yaml' - 'CMakeLists.txt' - 'cmake/**' - 'sherpa-onnx/csrc/*' - 'sherpa-onnx/c-api/*' - 'sherpa-onnx/flutter/**' workflow_dispatch: concurrency: group: flutter-macos-${{ github.ref }} cancel-in-progress: true jobs: flutter_macos: name: macos ${{ matrix.arch }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [macos-latest] arch: [x86_64, arm64] steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Setup Flutter SDK uses: flutter-actions/setup-flutter@v3 with: channel: stable version: latest - name: ccache uses: hendrikmuhs/ccache-action@v1.2 with: key: ${{ matrix.os }}-flutter-${{ matrix.arch }} - name: Display PWD shell: bash run: | echo "pwd: $PWD" ls -lh - name: Display machine info shell: bash run: | uname -a - name: Install tree shell: bash run: | brew install tree - name: Display flutter info shell: bash run: | which flutter which dart flutter --version dart --version flutter doctor - 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 arch=${{ matrix.arch }} mkdir build cd build cmake \ -D BUILD_SHARED_LIBS=ON \ -DCMAKE_OSX_ARCHITECTURES=$arch \ -DSHERPA_ONNX_ENABLE_PORTAUDIO=OFF \ -DSHERPA_ONNX_ENABLE_WEBSOCKET=OFF \ -DBUILD_ESPEAK_NG_EXE=OFF \ -DSHERPA_ONNX_ENABLE_BINARY=OFF \ -DCMAKE_INSTALL_PREFIX=./install \ .. - name: Build sherpa-onnx for macos ${{ matrix.arch }} shell: bash run: | export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" cd build make -j2 make install rm -v ./install/lib/libonnxruntime.dylib - name: Copy libs shell: bash run: | cp -v build/install/lib/lib* ./sherpa-onnx/flutter/macos/ echo "--------------------" ls -lh ./sherpa-onnx/flutter/macos/ - name: Download model files shell: bash run: | cd sherpa-onnx/flutter pushd example/assets # curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/speaker-recongition-models/3dspeaker_speech_eres2net_base_sv_zh-cn_3dspeaker_16k.onnx curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/silero_vad.onnx # git clone https://github.com/csukuangfj/sr-data curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20.tar.bz2 tar xvf sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20.tar.bz2 rm sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20.tar.bz2 cd sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20 rm encoder-epoch-99-avg-1.onnx rm decoder-epoch-99-avg-1.int8.onnx rm joiner-epoch-99-avg-1.onnx rm README.md rm bpe.model rm bpe.vocab rm -rf test_wavs ls -lh cd .. rm -rf sr-data/.git popd - name: Build flutter shell: bash run: | SHERPA_ONNX_VERSION=v$(grep "SHERPA_ONNX_VERSION" ./CMakeLists.txt | cut -d " " -f 2 | cut -d '"' -f 2) d=$PWD pushd sherpa-onnx/flutter dart pub get cd example export FLUTTER_XCODE_ARCHS=${{ matrix.arch }} echo "FLUTTER_XCODE_ARCHS: $FLUTTER_XCODE_ARCHS" flutter build macos cd build/macos/Build/Products/Release/ tree ./sherpa_onnx.app app=sherpa-onnx-osx-${{ matrix.arch }}-$SHERPA_ONNX_VERSION.app mv sherpa_onnx.app $app tar cjfv $app.tar.bz2 $app ls -lh mv $app.tar.bz2 $d popd ls -lh $app.tar.bz2 - uses: actions/upload-artifact@v4 with: name: sherpa-onnx-osx-${{ matrix.arch }} path: ./*.tar.bz2 - name: Publish to huggingface if: (github.repository_owner == 'csukuangfj' || github.repository_owner == 'k2-fsa') && github.event_name == 'push' && contains(github.ref, 'refs/tags/') && matrix.build_type == 'Release' 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 git clone https://huggingface.co/csukuangfj/sherpa-onnx-flutter huggingface cd huggingface git fetch git pull git merge -m "merge remote" --ff origin main mkdir -p flutter cp -v ../*.tar.bz2 ./flutter git status git lfs track "*.bz2" git add . git commit -m "add more files" git push https://csukuangfj:$HF_TOKEN@huggingface.co/csukuangfj/sherpa-onnx-flutter main # - name: Release android libs # 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*.tar.bz2