spec_test_on_nuttx.yml 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. # Copyright (C) 2019 Intel Corporation. All rights reserved.
  2. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  3. name: spec test on nuttx
  4. on:
  5. schedule:
  6. - cron: '0 0 * * *'
  7. workflow_dispatch:
  8. jobs:
  9. spec_test_on_qemu:
  10. runs-on: ubuntu-22.04
  11. strategy:
  12. matrix:
  13. nuttx_board_config: [
  14. # cortex-a9
  15. "boards/arm/imx6/sabre-6quad/configs/nsh",
  16. # riscv32imac
  17. "boards/risc-v/qemu-rv/rv-virt/configs/nsh",
  18. # riscv64imac
  19. # "boards/risc-v/qemu-rv/rv-virt/configs/nsh64",
  20. ]
  21. wamr_test_option: [
  22. # "-t fast-interp",
  23. "-t aot",
  24. "-t aot -X"
  25. ]
  26. steps:
  27. - name: Install Utilities
  28. run: |
  29. sudo apt install -y kconfig-frontends-nox genromfs
  30. - name: Install ARM Compilers
  31. if: contains(matrix.nuttx_board_config, 'arm')
  32. run: sudo apt install -y gcc-arm-none-eabi
  33. - name: Install RISC-V Compilers
  34. if: contains(matrix.nuttx_board_config, 'risc-v')
  35. run: |
  36. curl -L https://static.dev.sifive.com/dev-tools/freedom-tools/v2020.12/riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14.tar.gz > riscv.tar.gz
  37. tar xvf riscv.tar.gz
  38. echo "$PWD/riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14/bin" >> $GITHUB_PATH
  39. - name: Checkout NuttX
  40. uses: actions/checkout@v3
  41. with:
  42. repository: apache/incubator-nuttx
  43. path: nuttx
  44. - name: Checkout NuttX Apps
  45. uses: actions/checkout@v3
  46. with:
  47. repository: apache/incubator-nuttx-apps
  48. path: apps
  49. - name: Checkout WAMR
  50. uses: actions/checkout@v3
  51. with:
  52. repository: ${{ github.repository }}
  53. path: apps/interpreters/wamr/wamr
  54. - name: Enable WAMR for NuttX
  55. run: |
  56. find nuttx/boards -name defconfig | xargs sed -i '$a\CONFIG_INTERPRETERS_WAMR=y\nCONFIG_INTERPRETERS_WAMR_AOT=y\nCONFIG_INTERPRETERS_WAMR_FAST=y\nCONFIG_INTERPRETERS_WAMR_LOG=y\nCONFIG_INTERPRETERS_WAMR_LIBC_BUILTIN=y\nCONFIG_INTERPRETERS_WAMR_REF_TYPES=y\nCONFIG_INTERPRETERS_WAMR_ENABLE_SPEC_TEST=y\nCONFIG_INTERPRETERS_WAMR_SHARED_MEMORY=y\nCONFIG_INTERPRETERS_WAMR_BULK_MEMORY=y\n'
  57. find nuttx/boards -name defconfig | xargs sed -i '$a\CONFIG_EOL_IS_LF=y\nCONFIG_ARM_SEMIHOSTING_HOSTFS=y\nCONFIG_ARM_SEMIHOSTING_HOSTFS_CACHE_COHERENCE=y\nCONFIG_RISCV_SEMIHOSTING_HOSTFS=y\nCONFIG_FS_HOSTFS=y\nCONFIG_LIBC_FLOATINGPOINT=y\n'
  58. - name: Build wamrc
  59. working-directory: apps/interpreters/wamr/wamr/wamr-compiler
  60. run: |
  61. sudo apt install llvm-13-dev
  62. cmake -Bbuild -DWAMR_BUILD_WITH_CUSTOM_LLVM=1 .
  63. cmake --build build
  64. - name: Build
  65. run: |
  66. cd nuttx
  67. tools/configure.sh ${{ matrix.nuttx_board_config }}
  68. make -j$(nproc)
  69. echo "firmware=$PWD/nuttx" >> $GITHUB_ENV
  70. - name: Test on ARM
  71. if: endsWith(matrix.nuttx_board_config, 'sabre-6quad/configs/nsh')
  72. run: |
  73. curl -L https://github.com/xpack-dev-tools/qemu-arm-xpack/releases/download/v7.1.0-1/xpack-qemu-arm-7.1.0-1-linux-x64.tar.gz > xpack-qemu-arm.tar.gz
  74. tar xvf xpack-qemu-arm.tar.gz
  75. export PATH=$PATH:$PWD/xpack-qemu-arm-7.1.0-1/bin
  76. cd apps/interpreters/wamr/wamr/tests/wamr-test-suites
  77. ./test_wamr.sh -s spec ${{ matrix.wamr_test_option }} -m thumbv7_vfp -b -Q -P -F ${{ env.firmware }}
  78. - name: Test on RISCV32
  79. if: endsWith(matrix.nuttx_board_config, 'rv-virt/configs/nsh')
  80. run: |
  81. curl -L https://github.com/xpack-dev-tools/qemu-riscv-xpack/releases/download/v7.1.0-1/xpack-qemu-riscv-7.1.0-1-linux-x64.tar.gz > xpack-qemu-riscv.tar.gz
  82. tar xvf xpack-qemu-riscv.tar.gz
  83. export PATH=$PATH:$PWD/xpack-qemu-riscv-7.1.0-1/bin
  84. cd apps/interpreters/wamr/wamr/tests/wamr-test-suites
  85. ./test_wamr.sh -s spec ${{ matrix.wamr_test_option }} -m RISCV32 -b -Q -P -F ${{ env.firmware }}
  86. - name: Test on RISCV64
  87. if: endsWith(matrix.nuttx_board_config, 'rv-virt/configs/nsh64')
  88. run: |
  89. curl -L https://github.com/xpack-dev-tools/qemu-riscv-xpack/releases/download/v7.1.0-1/xpack-qemu-riscv-7.1.0-1-linux-x64.tar.gz > xpack-qemu-riscv.tar.gz
  90. tar xvf xpack-qemu-riscv.tar.gz
  91. export PATH=$PATH:$PWD/xpack-qemu-riscv-7.1.0-1/bin
  92. cd apps/interpreters/wamr/wamr/tests/wamr-test-suites
  93. ./test_wamr.sh -s spec ${{ matrix.wamr_test_option }} -m riscv64 -b -Q -P -F ${{ env.firmware }}