about summary refs log tree commit diff stats
path: root/.github
diff options
context:
space:
mode:
authorYang Liu <numbksco@gmail.com>2024-09-05 17:07:27 +0800
committerGitHub <noreply@github.com>2024-09-05 11:07:27 +0200
commit4e63b82f5eda8995a2b5cd09d64304ac9e30dbd6 (patch)
tree0141a4651e55dd11df71e41b40e45df4106535c2 /.github
parent6bc2abae3b71ad1aea750fbfb433310f6e45bbac (diff)
downloadbox64-4e63b82f5eda8995a2b5cd09d64304ac9e30dbd6.tar.gz
box64-4e63b82f5eda8995a2b5cd09d64304ac9e30dbd6.zip
[CI] Refactored CI (#1795)
* [CI] Enable Box32 tests on LA64

* upgrade QEMU

* [COSIM] Removed thread-safe tests

* Use regular cosim in CI

* [CI] Simplified "Test Box64"

* exclude certain tests when testing with cosim

* review

* box64.pod too
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/release.yml79
1 files changed, 44 insertions, 35 deletions
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index d4af7739..7d363add 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -159,50 +159,59 @@ jobs:
       - name: "Test Box64"
         run: |
           if [[ ${{ matrix.platform }} != 'X64' ]]; then
-            mkdir qemu9.0.0
-            wget -O- -q https://archive.archlinux.org/packages/q/qemu-user-static/qemu-user-static-9.0.0-1-x86_64.pkg.tar.zst | tar -I zstd -C qemu9.0.0 -xf -
-            sudo cp qemu9.0.0/usr/bin/* /usr/bin/
+            mkdir qemu9
+            wget -O- -q https://archive.archlinux.org/packages/q/qemu-user-static/qemu-user-static-9.0.2-1-x86_64.pkg.tar.zst | tar -I zstd -C qemu9 -xf -
+            sudo cp qemu9/usr/bin/* /usr/bin/
           fi
 
           cd build
+          export CTEST_OPTIONS="-j$(nproc) --timeout 60 --output-on-failure --repeat until-pass:20"
           if [[ ${{ matrix.platform }} == 'RISCV' ]]; then
-            INTERPRETER=qemu-riscv64-static QEMU_LD_PREFIX=/usr/riscv64-linux-gnu/ ctest --timeout 60 -j$(nproc) --output-on-failure
-            INTERPRETER=qemu-riscv64-static QEMU_LD_PREFIX=/usr/riscv64-linux-gnu/ QEMU_CPU=rv64,v=false BOX64_DYNAREC=0 ctest --timeout 60 -j$(nproc) --repeat until-pass:20 --output-on-failure
-            INTERPRETER=qemu-riscv64-static QEMU_LD_PREFIX=/usr/riscv64-linux-gnu/ QEMU_CPU=rv64,v=false,zba=true,zbb=true,zbc=true,zbs=true ctest --timeout 60 -j$(nproc) --repeat until-pass:20 --output-on-failure
-            INTERPRETER=qemu-riscv64-static QEMU_LD_PREFIX=/usr/riscv64-linux-gnu/ QEMU_CPU=rv64,v=true,vlen=128,vext_spec=v1.0 ctest --timeout 60 -j$(nproc) --repeat until-pass:20 --output-on-failure
-            INTERPRETER=qemu-riscv64-static QEMU_LD_PREFIX=/usr/riscv64-linux-gnu/ QEMU_CPU=rv64,v=true,vlen=256,vext_spec=v1.0 ctest --timeout 60 -j$(nproc) --repeat until-pass:20 --output-on-failure
-            INTERPRETER=qemu-riscv64-static QEMU_LD_PREFIX=/usr/riscv64-linux-gnu/ QEMU_CPU=thead-c906 ctest --timeout 60 -j$(nproc) --repeat until-pass:20 --output-on-failure
-            if [[ ${{ env.BOX64_BOX32 }} != 1 ]]; then
-            INTERPRETER=qemu-riscv64-static QEMU_LD_PREFIX=/usr/riscv64-linux-gnu/ BOX64_DYNAREC_TEST=2 ctest --timeout 60 -j$(nproc) --repeat until-pass:20 --output-on-failure
-            INTERPRETER=qemu-riscv64-static QEMU_LD_PREFIX=/usr/riscv64-linux-gnu/ BOX64_DYNAREC_TEST=2 QEMU_CPU=rv64,v=false,zba=true,zbb=true,zbc=true,zbs=true ctest --timeout 60 -j$(nproc) --repeat until-pass:20 --output-on-failure
-            INTERPRETER=qemu-riscv64-static QEMU_LD_PREFIX=/usr/riscv64-linux-gnu/ BOX64_DYNAREC_TEST=2 QEMU_CPU=rv64,v=true,vlen=128,vext_spec=v1.0 ctest --timeout 60 -j$(nproc) --repeat until-pass:20 --output-on-failure
-            INTERPRETER=qemu-riscv64-static QEMU_LD_PREFIX=/usr/riscv64-linux-gnu/ BOX64_DYNAREC_TEST=2 QEMU_CPU=rv64,v=true,vlen=256,vext_spec=v1.0 ctest --timeout 60 -j$(nproc) --repeat until-pass:20 --output-on-failure
-            INTERPRETER=qemu-riscv64-static QEMU_LD_PREFIX=/usr/riscv64-linux-gnu/ BOX64_DYNAREC_TEST=2 QEMU_CPU=thead-c906 ctest --timeout 60 -j$(nproc) --repeat until-pass:20 --output-on-failure
-            fi
+            export INTERPRETER=qemu-riscv64-static
+            export QEMU_LD_PREFIX=/usr/riscv64-linux-gnu/
+
+            ctest $CTEST_OPTIONS
+            QEMU_CPU=rv64,v=false BOX64_DYNAREC=0 ctest $CTEST_OPTIONS
+            QEMU_CPU=rv64,v=false,zba=true,zbb=true,zbc=true,zbs=true ctest $CTEST_OPTIONS
+            QEMU_CPU=rv64,v=true,vlen=128,vext_spec=v1.0 ctest $CTEST_OPTIONS
+            QEMU_CPU=rv64,v=true,vlen=256,vext_spec=v1.0 ctest $CTEST_OPTIONS
+            QEMU_CPU=thead-c906 ctest $CTEST_OPTIONS
+
+            BOX64_DYNAREC_TEST=1 ctest $CTEST_OPTIONS -E nocosim
+            BOX64_DYNAREC_TEST=1 QEMU_CPU=rv64,v=false,zba=true,zbb=true,zbc=true,zbs=true ctest $CTEST_OPTIONS -E nocosim
+            BOX64_DYNAREC_TEST=1 QEMU_CPU=rv64,v=true,vlen=128,vext_spec=v1.0 ctest $CTEST_OPTIONS -E nocosim
+            BOX64_DYNAREC_TEST=1 QEMU_CPU=rv64,v=true,vlen=256,vext_spec=v1.0 ctest $CTEST_OPTIONS -E nocosim
+            BOX64_DYNAREC_TEST=1 QEMU_CPU=thead-c906 ctest $CTEST_OPTIONS -E nocosim
           elif [[ ${{ matrix.platform }} == 'LARCH64' ]]; then
-            if [[ ${{ env.BOX64_BOX32 }} != 1 ]]; then
-            INTERPRETER=qemu-loongarch64-static QEMU_LD_PREFIX=/usr/loongarch64-linux-gnu/ BOX64_DYNAREC_LA64NOEXT=1 ctest --timeout 60 -j$(nproc) --repeat until-pass:20 --output-on-failure
-            INTERPRETER=qemu-loongarch64-static QEMU_LD_PREFIX=/usr/loongarch64-linux-gnu/ BOX64_DYNAREC_TEST=2 BOX64_DYNAREC_LA64NOEXT=1 ctest --timeout 60 -j$(nproc) --repeat until-pass:20 --output-on-failure
-            INTERPRETER=qemu-loongarch64-static QEMU_LD_PREFIX=/usr/loongarch64-linux-gnu/ BOX64_DYNAREC=0 ctest --timeout 60 -j$(nproc) --repeat until-pass:20 --output-on-failure
-            fi
+            export INTERPRETER=qemu-loongarch64-static
+            export QEMU_LD_PREFIX=/usr/loongarch64-linux-gnu/
+
+            BOX64_DYNAREC_LA64NOEXT=1 ctest $CTEST_OPTIONS -E nocosim
+            BOX64_DYNAREC=0 ctest $CTEST_OPTIONS -E nocosim
+
+            BOX64_DYNAREC_TEST=1 BOX64_DYNAREC_LA64NOEXT=1 ctest $CTEST_OPTIONS -E nocosim
           elif [[ ${{ matrix.platform }} == 'ANDROID' ]]; then
-            if [[ ${{ env.BOX64_BOX32 }} != 1 ]]; then
-            INTERPRETER=qemu-aarch64-static QEMU_LD_PREFIX=/system/lib64 BOX64_DYNAREC=0 ctest --timeout 60 -j$(nproc) --repeat until-pass:20 --output-on-failure
-            INTERPRETER=qemu-aarch64-static QEMU_LD_PREFIX=/system/lib64 ctest --timeout 60 -j$(nproc) --repeat until-pass:20 --output-on-failure
-            fi
+            export INTERPRETER=qemu-aarch64-static
+            export QEMU_LD_PREFIX=/system/lib64
+            
+            BOX64_DYNAREC=0 ctest $CTEST_OPTIONS
+            ctest $CTEST_OPTIONS
           elif [[ ${{ matrix.platform }} == 'TERMUX' ]]; then
-            if [[ ${{ env.BOX64_BOX32 }} != 1 ]]; then
-            INTERPRETER=qemu-aarch64-static QEMU_SET_ENV=LD_LIBRARY_PATH=/data/data/com.termux/files/usr/lib QEMU_LD_PREFIX=/system/lib64:/data/data/com.termux/files/usr/lib BOX64_DYNAREC=0 ctest --timeout 60 -j$(nproc) --repeat until-pass:20 --output-on-failure
-            INTERPRETER=qemu-aarch64-static QEMU_SET_ENV=LD_LIBRARY_PATH=/data/data/com.termux/files/usr/lib QEMU_LD_PREFIX=/system/lib64:/data/data/com.termux/files/usr/lib ctest --timeout 60 -j$(nproc) --repeat until-pass:20 --output-on-failure
-            fi
+            export INTERPRETER=qemu-aarch64-static
+            export QEMU_SET_ENV=LD_LIBRARY_PATH=/data/data/com.termux/files/usr/lib 
+            export QEMU_LD_PREFIX=/system/lib64:/data/data/com.termux/files/usr/lib
+
+            BOX64_DYNAREC=0 ctest $CTEST_OPTIONS
+            ctest $CTEST_OPTIONS
           elif [[ ${{ matrix.platform }} != 'X64' ]]; then # AArch64
-            INTERPRETER=qemu-aarch64-static QEMU_LD_PREFIX=/usr/aarch64-linux-gnu/ BOX64_DYNAREC=0 ctest --timeout 60 -j$(nproc) --repeat until-pass:20 --output-on-failure
-            INTERPRETER=qemu-aarch64-static QEMU_LD_PREFIX=/usr/aarch64-linux-gnu/ ctest --timeout 60 -j$(nproc) --repeat until-pass:20 --output-on-failure
-            if [[ ${{ env.BOX64_BOX32 }} != 1 ]]; then
-            INTERPRETER=qemu-aarch64-static QEMU_LD_PREFIX=/usr/aarch64-linux-gnu/ BOX64_DYNAREC_TEST=2 ctest --timeout 60 -j$(nproc) --output-on-failure
-            fi
+            export INTERPRETER=qemu-aarch64-static
+            export QEMU_LD_PREFIX=/usr/aarch64-linux-gnu/
+            
+            BOX64_DYNAREC=0 ctest $CTEST_OPTIONS
+            ctest $CTEST_OPTIONS
+            BOX64_DYNAREC_TEST=1 ctest $CTEST_OPTIONS -E nocosim
           else
-            ctest --timeout 60 -j$(nproc) --output-on-failure
+            ctest -j$(nproc)
           fi
 
       - name: "Upload Artifact"