Browse Source

Add CI for arm (#6)

* Add CI for arm
* Build release version by default
Fangjun Kuang 2 years ago
parent
commit
73a681e23c

+ 132 - 0
.github/workflows/arm-linux-gnueabihf.yaml

@@ -0,0 +1,132 @@
+# Modified from https://github.com/Tencent/ncnn/blob/master/.github/workflows/linux-arm-cpu-gcc.yml
+name: arm-linux-gnueabihf
+
+on:
+  push:
+    branches:
+      - master
+    paths:
+    - '.github/workflows/arm-linux-gnueabihf.yaml'
+    - 'CMakeLists.txt'
+    - 'cmake/**'
+    - 'sherpa-ncnn/csrc/*'
+  pull_request:
+    branches:
+      - master
+    paths:
+    - '.github/workflows/arm-linux-gnueabihf.yaml'
+    - 'CMakeLists.txt'
+    - 'cmake/**'
+    - 'sherpa-ncnn/csrc/*'
+
+concurrency:
+  group: arm-linux-gnueabihf-${{ github.ref }}
+  cancel-in-progress: true
+
+permissions:
+  contents: read
+
+jobs:
+  arm_linux_gnueabihf:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [ubuntu-latest]
+
+    steps:
+      - uses: actions/checkout@v2
+        with:
+          fetch-depth: 0
+
+      - name: cache-qemu
+        id: cache-qemu
+        uses: actions/cache@v3
+        with:
+          path: qemu-install
+          key: qemu-arm-install-20220907
+
+      - name: install-qemu-build-deps
+        if: steps.cache-qemu.outputs.cache-hit != 'true'
+        run: |
+          sudo apt-get update
+          sudo apt-get install autoconf automake autotools-dev ninja-build
+
+      - name: checkout-qemu
+        if: steps.cache-qemu.outputs.cache-hit != 'true'
+        uses: actions/checkout@v3
+        with:
+          repository: qemu/qemu
+          path: qemu
+          ref: f5643914a9e8f79c606a76e6a9d7ea82a3fc3e65
+
+      - name: qemu
+        if: steps.cache-qemu.outputs.cache-hit != 'true'
+        run: |
+          cd qemu
+          ./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=arm-linux-user --disable-system
+          make -j2
+          make install
+
+      - name: cache-toolchain
+        id: cache-toolchain
+        uses: actions/cache@v3
+        with:
+          path: toolchain
+          key: gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf
+
+      - name: Download toolchain
+        if: steps.cache-toolchain.outputs.cache-hit != 'true'
+        shell: bash
+        run: |
+          git lfs install
+          git clone https://huggingface.co/csukuangfj/arm-linux-gcc
+          ls -lh arm-linux-gcc
+
+          mkdir $GITHUB_WORKSPACE/toolchain
+          tar xvf ./arm-linux-gcc/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.xz --strip-components 1 -C $GITHUB_WORKSPACE/toolchain
+
+      - name: Download pretrained model and test-data
+        shell: bash
+        run: |
+          git lfs install
+          git clone https://huggingface.co/csukuangfj/sherpa-ncnn-2022-09-05
+
+      - name: Display toolchain info
+        shell: bash
+        run: |
+          export PATH=$GITHUB_WORKSPACE/toolchain/bin:$PATH
+          arm-linux-gnueabihf-gcc --version
+
+      - name: Display qemu-arm -h
+        shell: bash
+        run: |
+          export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH
+          export QEMU_LD_PREFIX=$GITHUB_WORKSPACE/toolchain/arm-linux-gnueabihf/libc
+          qemu-arm -h
+
+      - name: build arm-linux-gnueabihf
+        shell: bash
+        run: |
+          export PATH=$GITHUB_WORKSPACE/toolchain/bin:$PATH
+
+          ./build-arm-linux-gnueabihf.sh
+
+          ls -lh build-arm-linux-gnueabihf/bin
+
+      - name: Run tests
+        shell: bash
+        run: |
+          export PATH=$GITHUB_WORKSPACE/toolchain/bin:$PATH
+          export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH
+          export QEMU_LD_PREFIX=$GITHUB_WORKSPACE/toolchain/arm-linux-gnueabihf/libc
+
+          cd build-arm-linux-gnueabihf
+
+          ln -s $PWD/../sherpa-ncnn-2022-09-05/bar .
+          ln -s $PWD/../sherpa-ncnn-2022-09-05/test_wavs .
+          ln -s $PWD/../sherpa-ncnn-2022-09-05/tokens.txt .
+
+          time qemu-arm ./bin/sherpa-ncnn ./test_wavs/1089-134686-0001.wav 4
+          time qemu-arm ./bin/sherpa-ncnn ./test_wavs/1221-135766-0001.wav 4
+          time qemu-arm ./bin/sherpa-ncnn ./test_wavs/1221-135766-0002.wav 4

+ 20 - 2
.github/workflows/run-greedy-search-test.yaml → .github/workflows/linux-macos-windows.yaml

@@ -1,15 +1,32 @@
-name: Run greedy search tests
+name: linux-macos-windows
 
 on:
   push:
     branches:
       - master
+    paths:
+    - '.github/workflows/linux-macos-windows.yaml'
+    - 'CMakeLists.txt'
+    - 'cmake/**'
+    - 'sherpa-ncnn/csrc/*'
   pull_request:
     branches:
       - master
+    paths:
+    - '.github/workflows/linux-macos-windows.yaml'
+    - 'CMakeLists.txt'
+    - 'cmake/**'
+    - 'sherpa-ncnn/csrc/*'
+
+concurrency:
+  group: linux-macos-windows-${{ github.ref }}
+  cancel-in-progress: true
+
+permissions:
+  contents: read
 
 jobs:
-  run_greedy_search_tests:
+  linux_macos_windows:
     runs-on: ${{ matrix.os }}
     strategy:
       fail-fast: false
@@ -44,6 +61,7 @@ jobs:
         run: |
           cd build
           make -j2
+
           ln -s $PWD/../sherpa-ncnn-2022-09-05/bar .
           ln -s $PWD/../sherpa-ncnn-2022-09-05/test_wavs .
           ln -s $PWD/../sherpa-ncnn-2022-09-05/tokens.txt .

+ 4 - 3
build-arm-linux-gnueabihf.sh

@@ -2,8 +2,9 @@
 
 set -x
 
-mkdir -p build-arm-linux-gnueabihf
-cd build-arm-linux-gnueabihf
-cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/arm-linux-gnueabihf.toolchain.cmake ..
+dir=build-arm-linux-gnueabihf
+mkdir -p $dir
+cd $dir
+cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=../toolchains/arm-linux-gnueabihf.toolchain.cmake ..
 make VERBOSE=1 -j4
 make install