From 8438396f3382c954dc91e8140e2f3ea5e905617a Mon Sep 17 00:00:00 2001
From: nietingting <nietingting@xiaomi.com>
Date: Mon, 10 Oct 2022 11:07:31 +0800
Subject: [PATCH] ci: add qemu run support

Signed-off-by: nietingting <nietingting@xiaomi.com>
---
 .../imx6/sabre-6quad/configs/citest/defconfig | 70 ++++++++++++++++++
 .../arm/imx6/sabre-6quad/configs/citest/run   |  1 +
 .../qemu-rv/rv-virt/configs/citest/defconfig  | 72 ++++++++++++++++++
 .../risc-v/qemu-rv/rv-virt/configs/citest/run |  1 +
 .../rv-virt/configs/citest64/defconfig        | 73 +++++++++++++++++++
 .../qemu-rv/rv-virt/configs/citest64/run      |  1 +
 boards/sim/sim/sim/configs/citest/run         | 30 +-------
 tools/ci/cirun.sh                             | 40 ++++++++++
 8 files changed, 259 insertions(+), 29 deletions(-)
 create mode 100644 boards/arm/imx6/sabre-6quad/configs/citest/defconfig
 create mode 120000 boards/arm/imx6/sabre-6quad/configs/citest/run
 create mode 100644 boards/risc-v/qemu-rv/rv-virt/configs/citest/defconfig
 create mode 120000 boards/risc-v/qemu-rv/rv-virt/configs/citest/run
 create mode 100644 boards/risc-v/qemu-rv/rv-virt/configs/citest64/defconfig
 create mode 120000 boards/risc-v/qemu-rv/rv-virt/configs/citest64/run
 mode change 100644 => 120000 boards/sim/sim/sim/configs/citest/run
 create mode 100755 tools/ci/cirun.sh

diff --git a/boards/arm/imx6/sabre-6quad/configs/citest/defconfig b/boards/arm/imx6/sabre-6quad/configs/citest/defconfig
new file mode 100644
index 0000000000..0936048893
--- /dev/null
+++ b/boards/arm/imx6/sabre-6quad/configs/citest/defconfig
@@ -0,0 +1,70 @@
+#
+# This file is autogenerated: PLEASE DO NOT EDIT IT.
+#
+# You can use "make menuconfig" to make any modifications to the installed .config file.
+# You can then do "make savedefconfig" to generate a new defconfig file that includes your
+# modifications.
+#
+# CONFIG_NSH_CMDOPT_HEXDUMP is not set
+CONFIG_ARCH="arm"
+CONFIG_ARCH_BOARD="sabre-6quad"
+CONFIG_ARCH_BOARD_SABRE_6QUAD=y
+CONFIG_ARCH_BUTTONS=y
+CONFIG_ARCH_CHIP="imx6"
+CONFIG_ARCH_CHIP_IMX6=y
+CONFIG_ARCH_CHIP_IMX6_6QUAD=y
+CONFIG_ARCH_INTERRUPTSTACK=2048
+CONFIG_ARCH_IRQBUTTONS=y
+CONFIG_ARCH_LOWVECTORS=y
+CONFIG_ARCH_STACKDUMP=y
+CONFIG_ARMV7A_ASSOCIATIVITY_16WAY=y
+CONFIG_ARMV7A_L2CC_PL310=y
+CONFIG_ARMV7A_WAYSIZE_64KB=y
+CONFIG_BOARD_LOOPSPERMSEC=99369
+CONFIG_BOOT_RUNFROMSDRAM=y
+CONFIG_BUILTIN=y
+CONFIG_DEBUG_FULLOPT=y
+CONFIG_DEBUG_SYMBOLS=y
+CONFIG_DEV_ZERO=y
+CONFIG_EXAMPLES_HELLO=y
+CONFIG_EXAMPLES_PIPE=y
+CONFIG_EXAMPLES_POPEN=y
+CONFIG_EXPERIMENTAL=y
+CONFIG_FS_PROCFS=y
+CONFIG_HAVE_CXX=y
+CONFIG_HAVE_CXXINITIALIZE=y
+CONFIG_IMX6_UART1=y
+CONFIG_IMX_DDR_SIZE=1073741824
+CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_INTELHEX_BINARY=y
+CONFIG_NSH_ARCHINIT=y
+CONFIG_NSH_BUILTIN_APPS=y
+CONFIG_NSH_FILEIOSIZE=512
+CONFIG_NSH_READLINE=y
+CONFIG_PIPES=y
+CONFIG_PL310_LOCKDOWN_BY_LINE=y
+CONFIG_PL310_LOCKDOWN_BY_MASTER=y
+CONFIG_PREALLOC_TIMERS=4
+CONFIG_PSEUDOFS_SOFTLINKS=y
+CONFIG_RAMLOG=y
+CONFIG_RAMLOG_BUFSIZE=16384
+CONFIG_RAMLOG_SYSLOG=y
+CONFIG_RAM_SIZE=1073741824
+CONFIG_RAM_START=0x10000000
+CONFIG_RAM_VSTART=0x10000000
+CONFIG_RAW_BINARY=y
+CONFIG_READLINE_CMD_HISTORY=y
+CONFIG_RR_INTERVAL=200
+CONFIG_SCHED_HPWORK=y
+CONFIG_SCHED_HPWORKPRIORITY=192
+CONFIG_STACK_COLORATION=y
+CONFIG_START_MONTH=3
+CONFIG_START_YEAR=2016
+CONFIG_SYMTAB_ORDEREDBYNAME=y
+CONFIG_SYSTEM_NSH=y
+CONFIG_SYSTEM_POPEN=y
+CONFIG_TESTING_GETPRIME=y
+CONFIG_TESTING_MM=y
+CONFIG_TESTING_OSTEST=y
+CONFIG_TESTING_OSTEST_FPUTESTDISABLE=y
+CONFIG_UART1_SERIAL_CONSOLE=y
diff --git a/boards/arm/imx6/sabre-6quad/configs/citest/run b/boards/arm/imx6/sabre-6quad/configs/citest/run
new file mode 120000
index 0000000000..c9e283cbeb
--- /dev/null
+++ b/boards/arm/imx6/sabre-6quad/configs/citest/run
@@ -0,0 +1 @@
+../../../../../../tools/ci/cirun.sh
\ No newline at end of file
diff --git a/boards/risc-v/qemu-rv/rv-virt/configs/citest/defconfig b/boards/risc-v/qemu-rv/rv-virt/configs/citest/defconfig
new file mode 100644
index 0000000000..34c97f227c
--- /dev/null
+++ b/boards/risc-v/qemu-rv/rv-virt/configs/citest/defconfig
@@ -0,0 +1,72 @@
+#
+# This file is autogenerated: PLEASE DO NOT EDIT IT.
+#
+# You can use "make menuconfig" to make any modifications to the installed .config file.
+# You can then do "make savedefconfig" to generate a new defconfig file that includes your
+# modifications.
+#
+# CONFIG_DISABLE_OS_API is not set
+# CONFIG_NSH_DISABLE_LOSMART is not set
+CONFIG_16550_ADDRWIDTH=0
+CONFIG_16550_UART0=y
+CONFIG_16550_UART0_BASE=0x10000000
+CONFIG_16550_UART0_CLOCK=3686400
+CONFIG_16550_UART0_IRQ=37
+CONFIG_16550_UART0_SERIAL_CONSOLE=y
+CONFIG_16550_UART=y
+CONFIG_ARCH="risc-v"
+CONFIG_ARCH_BOARD="rv-virt"
+CONFIG_ARCH_BOARD_QEMU_RV_VIRT=y
+CONFIG_ARCH_CHIP="qemu-rv"
+CONFIG_ARCH_CHIP_QEMU_RV32=y
+CONFIG_ARCH_CHIP_QEMU_RV=y
+CONFIG_ARCH_CHIP_QEMU_RV_ISA_A=y
+CONFIG_ARCH_CHIP_QEMU_RV_ISA_C=y
+CONFIG_ARCH_CHIP_QEMU_RV_ISA_M=y
+CONFIG_ARCH_INTERRUPTSTACK=2048
+CONFIG_ARCH_RISCV=y
+CONFIG_ARCH_STACKDUMP=y
+CONFIG_BOARD_LOOPSPERMSEC=6366
+CONFIG_BUILTIN=y
+CONFIG_DEBUG_FULLOPT=y
+CONFIG_DEBUG_SYMBOLS=y
+CONFIG_DEV_ZERO=y
+CONFIG_ELF=y
+CONFIG_EXAMPLES_HELLO=y
+CONFIG_EXAMPLES_PIPE=y
+CONFIG_EXAMPLES_POPEN=y
+CONFIG_FS_HOSTFS=y
+CONFIG_FS_PROCFS=y
+CONFIG_IDLETHREAD_STACKSIZE=2048
+CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_INTELHEX_BINARY=y
+CONFIG_LIBC_ENVPATH=y
+CONFIG_LIBC_EXECFUNCS=y
+CONFIG_LIBC_FLOATINGPOINT=y
+CONFIG_LIBC_PERROR_STDOUT=y
+CONFIG_LIBC_STRERROR=y
+CONFIG_NFILE_DESCRIPTORS_PER_BLOCK=6
+CONFIG_NSH_ARCHINIT=y
+CONFIG_NSH_BUILTIN_APPS=y
+CONFIG_NSH_FILEIOSIZE=512
+CONFIG_NSH_READLINE=y
+CONFIG_PATH_INITIAL="/system/bin"
+CONFIG_PIPES=y
+CONFIG_PREALLOC_TIMERS=0
+CONFIG_PSEUDOFS_SOFTLINKS=y
+CONFIG_RAM_SIZE=33554432
+CONFIG_RAM_START=0x80000000
+CONFIG_READLINE_CMD_HISTORY=y
+CONFIG_RISCV_SEMIHOSTING_HOSTFS=y
+CONFIG_RR_INTERVAL=200
+CONFIG_SERIAL_UART_ARCH_MMIO=y
+CONFIG_STACK_COLORATION=y
+CONFIG_START_MONTH=12
+CONFIG_START_YEAR=2021
+CONFIG_SYMTAB_ORDEREDBYNAME=y
+CONFIG_SYSTEM_NSH=y
+CONFIG_SYSTEM_POPEN=y
+CONFIG_TESTING_GETPRIME=y
+CONFIG_TESTING_MM=y
+CONFIG_TESTING_OSTEST=y
+CONFIG_USEC_PER_TICK=1000
diff --git a/boards/risc-v/qemu-rv/rv-virt/configs/citest/run b/boards/risc-v/qemu-rv/rv-virt/configs/citest/run
new file mode 120000
index 0000000000..c9e283cbeb
--- /dev/null
+++ b/boards/risc-v/qemu-rv/rv-virt/configs/citest/run
@@ -0,0 +1 @@
+../../../../../../tools/ci/cirun.sh
\ No newline at end of file
diff --git a/boards/risc-v/qemu-rv/rv-virt/configs/citest64/defconfig b/boards/risc-v/qemu-rv/rv-virt/configs/citest64/defconfig
new file mode 100644
index 0000000000..3fd02c6e87
--- /dev/null
+++ b/boards/risc-v/qemu-rv/rv-virt/configs/citest64/defconfig
@@ -0,0 +1,73 @@
+#
+# This file is autogenerated: PLEASE DO NOT EDIT IT.
+#
+# You can use "make menuconfig" to make any modifications to the installed .config file.
+# You can then do "make savedefconfig" to generate a new defconfig file that includes your
+# modifications.
+#
+# CONFIG_DISABLE_OS_API is not set
+# CONFIG_NSH_DISABLE_LOSMART is not set
+CONFIG_16550_ADDRWIDTH=0
+CONFIG_16550_UART0=y
+CONFIG_16550_UART0_BASE=0x10000000
+CONFIG_16550_UART0_CLOCK=3686400
+CONFIG_16550_UART0_IRQ=37
+CONFIG_16550_UART0_SERIAL_CONSOLE=y
+CONFIG_16550_UART=y
+CONFIG_ARCH="risc-v"
+CONFIG_ARCH_BOARD="rv-virt"
+CONFIG_ARCH_BOARD_QEMU_RV_VIRT=y
+CONFIG_ARCH_CHIP="qemu-rv"
+CONFIG_ARCH_CHIP_QEMU_RV64=y
+CONFIG_ARCH_CHIP_QEMU_RV=y
+CONFIG_ARCH_CHIP_QEMU_RV_ISA_A=y
+CONFIG_ARCH_CHIP_QEMU_RV_ISA_C=y
+CONFIG_ARCH_CHIP_QEMU_RV_ISA_M=y
+CONFIG_ARCH_INTERRUPTSTACK=2048
+CONFIG_ARCH_RISCV=y
+CONFIG_ARCH_STACKDUMP=y
+CONFIG_BOARD_LOOPSPERMSEC=6366
+CONFIG_BUILTIN=y
+CONFIG_DEBUG_FULLOPT=y
+CONFIG_DEBUG_SYMBOLS=y
+CONFIG_DEV_ZERO=y
+CONFIG_ELF=y
+CONFIG_EXAMPLES_HELLO=y
+CONFIG_EXAMPLES_PIPE=y
+CONFIG_EXAMPLES_POPEN=y
+CONFIG_FS_HOSTFS=y
+CONFIG_FS_PROCFS=y
+CONFIG_IDLETHREAD_STACKSIZE=2048
+CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_INIT_STACKSIZE=3072
+CONFIG_INTELHEX_BINARY=y
+CONFIG_LIBC_ENVPATH=y
+CONFIG_LIBC_EXECFUNCS=y
+CONFIG_LIBC_FLOATINGPOINT=y
+CONFIG_LIBC_PERROR_STDOUT=y
+CONFIG_LIBC_STRERROR=y
+CONFIG_NFILE_DESCRIPTORS_PER_BLOCK=6
+CONFIG_NSH_ARCHINIT=y
+CONFIG_NSH_BUILTIN_APPS=y
+CONFIG_NSH_FILEIOSIZE=512
+CONFIG_NSH_READLINE=y
+CONFIG_PATH_INITIAL="/system/bin"
+CONFIG_PIPES=y
+CONFIG_PREALLOC_TIMERS=0
+CONFIG_PSEUDOFS_SOFTLINKS=y
+CONFIG_RAM_SIZE=33554432
+CONFIG_RAM_START=0x80000000
+CONFIG_READLINE_CMD_HISTORY=y
+CONFIG_RISCV_SEMIHOSTING_HOSTFS=y
+CONFIG_RR_INTERVAL=200
+CONFIG_SERIAL_UART_ARCH_MMIO=y
+CONFIG_STACK_COLORATION=y
+CONFIG_START_MONTH=12
+CONFIG_START_YEAR=2021
+CONFIG_SYMTAB_ORDEREDBYNAME=y
+CONFIG_SYSTEM_NSH=y
+CONFIG_SYSTEM_POPEN=y
+CONFIG_TESTING_GETPRIME=y
+CONFIG_TESTING_MM=y
+CONFIG_TESTING_OSTEST=y
+CONFIG_USEC_PER_TICK=1000
diff --git a/boards/risc-v/qemu-rv/rv-virt/configs/citest64/run b/boards/risc-v/qemu-rv/rv-virt/configs/citest64/run
new file mode 120000
index 0000000000..c9e283cbeb
--- /dev/null
+++ b/boards/risc-v/qemu-rv/rv-virt/configs/citest64/run
@@ -0,0 +1 @@
+../../../../../../tools/ci/cirun.sh
\ No newline at end of file
diff --git a/boards/sim/sim/sim/configs/citest/run b/boards/sim/sim/sim/configs/citest/run
deleted file mode 100644
index 19957dcac1..0000000000
--- a/boards/sim/sim/sim/configs/citest/run
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/usr/bin/env bash
-
-set -e
-set -o xtrace
-
-WD=$(cd $(dirname $0) && pwd)
-WORKSPACE=$(cd $WD/../../../../../../.. && pwd -P)
-nuttx=$WORKSPACE/nuttx
-logs=${WD}/logs
-target="sim"
-BOARD="sim"
-core="sim"
-
-echo $WD
-echo $WORKSPACE
-
-image=`find ${nuttx} -type f -name 'nuttx'`
-path=${image%/*}
-cd ${nuttx}/tools/ci/testrun/script
-python3 -m pytest -m "common" ./ -B ${BOARD} -P ${path} -L ${logs}/${BOARD}/${core} -R ${target} -C --json=${logs}/${BOARD}/${core}/pytest.json
-ret="$?"
-
-#clean
-find ${nuttx}/tools/ci/testrun -name '__pycache__' |xargs rm -rf
-find ${nuttx}/tools/ci/testrun -name '.pytest_cache' |xargs rm -rf
-rm -rf ${logs}
-
-echo $ret
-exit $ret
diff --git a/boards/sim/sim/sim/configs/citest/run b/boards/sim/sim/sim/configs/citest/run
new file mode 120000
index 0000000000..c9e283cbeb
--- /dev/null
+++ b/boards/sim/sim/sim/configs/citest/run
@@ -0,0 +1 @@
+../../../../../../tools/ci/cirun.sh
\ No newline at end of file
diff --git a/tools/ci/cirun.sh b/tools/ci/cirun.sh
new file mode 100755
index 0000000000..7073de5a12
--- /dev/null
+++ b/tools/ci/cirun.sh
@@ -0,0 +1,40 @@
+#!/usr/bin/env bash
+
+set -e
+set -o xtrace
+
+WD=$(cd $(dirname $0) && pwd)
+WORKSPACE=$(cd $WD/../../../../../../../ && pwd -P)
+nuttx=$WORKSPACE/nuttx
+logs=${WD}/logs
+BOARD=`echo $WD |awk -F '/' '{print $(NF-2)}'`
+
+echo $WD
+echo $WORKSPACE
+
+config=$(basename $WD)
+if [ "$BOARD" == "sim" ]; then
+  target="sim"
+  mark="common or ${BOARD}"
+else
+  if [ "${config:$((-2))}" == "64" ]; then
+  BOARD="${BOARD}64"
+  fi
+  target="qemu"
+  mark=$target
+fi
+
+core=$target
+image=`find ${nuttx} -type f -name 'nuttx'`
+path=${image%/*}
+cd ${nuttx}/tools/ci/testrun/script
+python3 -m pytest -m "${mark}" ./ -B ${BOARD} -P ${path} -L ${logs}/${BOARD}/${core} -R ${target} -C --json=${logs}/${BOARD}/${core}/pytest.json
+ret="$?"
+
+#clean
+find ${nuttx}/tools/ci/testrun -name '__pycache__' |xargs rm -rf
+find ${nuttx}/tools/ci/testrun -name '.pytest_cache' |xargs rm -rf
+rm -rf ${logs}
+
+echo $ret
+exit $ret