From b1608a889bc929d2475edd36fc08d9ebfbfbb165 Mon Sep 17 00:00:00 2001 From: Bensuperpc Date: Thu, 26 Aug 2021 20:47:28 +0200 Subject: [PATCH] Merge new tests Merge new tests Signed-off-by: Bensuperpc --- .github/workflows/main.yml | 471 ++++++++++++++++++++++++++----- tools/dockcross-cmake-builder.sh | 4 +- tools/dockcross-command.sh | 22 ++ tools/dockcross-make-builder.sh | 4 +- 4 files changed, 429 insertions(+), 72 deletions(-) create mode 100755 tools/dockcross-command.sh diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3c5d5e2..1b9e3fc 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -3,14 +3,14 @@ name: Dockcross CI on: push: branches: - - '*' + - "*" paths-ignore: - - '**.md' + - "**.md" pull_request: branches: - - '*' + - "*" paths-ignore: - - '**.md' + - "**.md" workflow_dispatch: jobs: @@ -25,8 +25,8 @@ jobs: run: make base.test - name: archive base run: | - mkdir -p cache - docker save dockcross/base:latest | xz -e9 -T0 > ./cache/base.tar.xz + mkdir -p cache + docker save dockcross/base:latest | xz -e9 -T0 > ./cache/base.tar.xz - name: save base uses: actions/upload-artifact@v2 with: @@ -36,8 +36,8 @@ jobs: - name: deploy if: github.ref == 'refs/heads/master' run: | - docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_PASS }} - docker image push dockcross/base --all-tags + docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_PASS }} + docker image push dockcross/base --all-tags image: name: ${{ matrix.arch_name.image }} @@ -47,64 +47,375 @@ jobs: fail-fast: false matrix: arch_name: - # Android images - - { image: "android-arm", arch: "arm" } - - { image: "android-arm64", arch: "arm64" } - - { image: "android-x86", arch: "x86" } - - { image: "android-x86_64", arch: "x86_64" } - # Linux arm64/armv8 images - - { image: "linux-arm64", arch: "arm64" } - - { image: "linux-arm64-musl", arch: "arm64" } - - { image: "linux-arm64-full", arch: "arm64" } - # Linux armv5 images - - { image: "linux-armv5", arch: "armv5" } - - { image: "linux-armv5-musl", arch: "armv5" } - # Linux armv6 images - - { image: "linux-armv6", arch: "armv6" } - - { image: "linux-armv6-lts", arch: "armv6" } - - { image: "linux-armv6-musl", arch: "armv6" } - # Linux armv7 images - - { image: "linux-armv7", arch: "armv7" } - - { image: "linux-armv7a", arch: "armv7" } - - { image: "linux-armv7l-musl", arch: "armv7" } - # Linux x86 images - - { image: "linux-x86", arch: "x86" } - # Linux x86_64 images - - { image: "linux-x64", arch: "x86_64" } - - { image: "linux-x64-tinycc", arch: "x86_64" } - - { image: "linux-x64-clang", arch: "x86_64" } - - { image: "linux-x86_64-full", arch: "x86_64" } - # Linux riscv images - - { image: "linux-riscv32", arch: "riscv32" } - - { image: "linux-riscv64", arch: "riscv64" } - # Linux s390x images - - { image: "linux-s390x", arch: "s390x" } - # Linux mips images - - { image: "linux-mips", arch: "mips" } - # Linux ppc64le images - - { image: "linux-ppc64le", arch: "ppc64le" } - # Linux m68k images - - { image: "linux-m68k-uclibc", arch: "m68k" } - # Linux xtensa images - - { image: "linux-xtensa-uclibc", arch: "xtensa" } - # Windows x86_x64 images - - { image: "windows-static-x64", arch: "x86_x64" } - - { image: "windows-static-x64-posix", arch: "x86_x64" } - - { image: "windows-static-x64", arch: "x86_x64" } - - { image: "windows-shared-x64", arch: "x86_x64" } - - { image: "windows-shared-x64-posix", arch: "x64" } - # Windows x86 images - - { image: "windows-static-x86", arch: "x86" } - - { image: "windows-shared-x86", arch: "x86" } - # Windows arm images - - { image: "windows-armv7", arch: "armv7" } - - { image: "windows-arm64", arch: "arm64" } - # manylinux2014 images - - { image: "manylinux2014-x86", arch: "x86" } - - { image: "manylinux2014-x64", arch: "x86_64" } - - { image: "manylinux2014-aarch64", arch: "arm64" } - # web-wasm images - - { image: "web-wasm", arch: "JS" } + # Android images + - { + image: "android-arm", + stockfish: "yes", + stockfish_arg: "ARCH=armv7 COMP=ndk", + ninja: "no", + ninja_arg: "", + openssl: "no", + openssl_arg: "android-arm", + } + - { + image: "android-arm64", + stockfish: "yes", + stockfish_arg: "ARCH=armv8 COMP=ndk", + ninja: "no", + ninja_arg: "", + openssl: "no", + openssl_arg: "android-arm64", + } + - { + image: "android-x86", + stockfish: "yes", + stockfish_arg: "ARCH=x86-32 COMP=ndk", + ninja: "no", + ninja_arg: "", + openssl: "no", + openssl_arg: "android-x86", + } + - { + image: "android-x86_64", + stockfish: "yes", + stockfish_arg: "ARCH=x86-64 COMP=ndk", + ninja: "no", + ninja_arg: "", + openssl: "no", + openssl_arg: "android-x86_64", + } + # Linux arm64/armv8 images + - { + image: "linux-arm64", + stockfish: "yes", + stockfish_arg: "ARCH=armv8", + ninja: "yes", + ninja_arg: "", + openssl: "yes", + openssl_arg: "linux-aarch64", + } + - { + image: "linux-arm64-musl", + stockfish: "yes", + stockfish_arg: "ARCH=armv8", + ninja: "yes", + ninja_arg: "", + openssl: "yes", + openssl_arg: "linux-aarch64", + } + - { + image: "linux-arm64-full", + stockfish: "yes", + stockfish_arg: "ARCH=armv8", + ninja: "yes", + ninja_arg: "", + openssl: "yes", + openssl_arg: "linux-aarch64", + } + # Linux armv5 images + - { + image: "linux-armv5", + stockfish: "no", + stockfish_arg: "", + ninja: "yes", + ninja_arg: "", + openssl: "yes", + openssl_arg: "linux-armv4", + } + - { + image: "linux-armv5-musl", + stockfish: "no", + stockfish_arg: "", + ninja: "yes", + ninja_arg: "", + openssl: "yes", + openssl_arg: "linux-armv4", + } + # Linux armv6 images + - { + image: "linux-armv6", + stockfish: "no", + stockfish_arg: "", + ninja: "yes", + ninja_arg: "", + openssl: "yes", + openssl_arg: "linux-armv4", + } + - { + image: "linux-armv6-lts", + stockfish: "no", + stockfish_arg: "", + ninja: "yes", + ninja_arg: "", + openssl: "yes", + openssl_arg: "linux-armv4", + } + - { + image: "linux-armv6-musl", + stockfish: "no", + stockfish_arg: "", + ninja: "yes", + ninja_arg: "", + openssl: "yes", + openssl_arg: "linux-armv4", + } + # Linux armv7 images + - { + image: "linux-armv7", + stockfish: "yes", + stockfish_arg: "ARCH=armv7", + ninja: "yes", + ninja_arg: "", + openssl: "yes", + openssl_arg: "linux-armv4", + } + - { + image: "linux-armv7a", + stockfish: "yes", + stockfish_arg: "ARCH=armv7-neon", + ninja: "yes", + ninja_arg: "", + openssl: "yes", + openssl_arg: "linux-armv4", + } + - { + image: "linux-armv7l-musl", + stockfish: "yes", + stockfish_arg: "ARCH=armv7", + ninja: "yes", + ninja_arg: "", + openssl: "yes", + openssl_arg: "linux-armv4", + } + # Linux x86 images + - { + image: "linux-x86", + stockfish: "yes", + stockfish_arg: "ARCH=x86-32-sse41-popcnt", + ninja: "yes", + ninja_arg: "", + openssl: "yes", + openssl_arg: "linux-x86", + } + # Linux x86_64 images + - { + image: "linux-x64", + stockfish: "yes", + stockfish_arg: "ARCH=x86-64-modern", + ninja: "yes", + ninja_arg: "", + openssl: "yes", + openssl_arg: "linux-x86_64", + } + - { + image: "linux-x64-tinycc", + stockfish: "yes", + stockfish_arg: "ARCH=x86-64-modern", + ninja: "yes", + ninja_arg: "", + openssl: "no", + openssl_arg: "linux-generic64 no-asm no-threads no-engine no-hw no-weak-ssl-ciphers no-dtls no-shared no-dso", + } + - { + image: "linux-x64-clang", + stockfish: "yes", + stockfish_arg: "ARCH=x86-64-modern COMP=clang", + ninja: "yes", + ninja_arg: "", + openssl: "no", + openssl_arg: "linux-x86_64-clang", + } + - { + image: "linux-x86_64-full", + stockfish: "yes", + stockfish_arg: "ARCH=x86-64-modern", + ninja: "yes", + ninja_arg: "", + openssl: "yes", + openssl_arg: "linux-x86_64", + } + # Linux riscv images + - { + image: "linux-riscv32", + stockfish: "no", + stockfish_arg: "", + ninja: "yes", + ninja_arg: "", + openssl: "yes", + openssl_arg: "linux-generic32", + } + - { + image: "linux-riscv64", + stockfish: "no", + stockfish_arg: "", + ninja: "yes", + ninja_arg: "", + openssl: "yes", + openssl_arg: "linux-generic64", + } + # Linux s390x images + - { + image: "linux-s390x", + stockfish: "no", + stockfish_arg: "", + ninja: "yes", + ninja_arg: "", + openssl: "yes", + openssl_arg: "linux64-s390x", + } + # Linux mips images + - { + image: "linux-mips", + stockfish: "no", + stockfish_arg: "", + ninja: "yes", + ninja_arg: "", + openssl: "yes", + openssl_arg: "linux-generic32", + } + # Linux ppc64le images + - { + image: "linux-ppc64le", + stockfish: "yes", + stockfish_arg: "ARCH=ppc-64", + ninja: "yes", + ninja_arg: "", + openssl: "yes", + openssl_arg: "linux-ppc64le", + } + # Linux m68k images + - { + image: "linux-m68k-uclibc", + stockfish: "no", + stockfish_arg: "", + ninja: "no", + ninja_arg: "", + openssl: "no", + openssl_arg: "linux-generic32 no-asm no-threads no-engine no-hw no-weak-ssl-ciphers no-dtls no-shared no-dso", + } + # Linux xtensa images + - { + image: "linux-xtensa-uclibc", + stockfish: "no", + stockfish_arg: "", + ninja: "yes", + ninja_arg: "", + openssl: "yes", + openssl_arg: "linux-generic64 no-asm no-threads no-engine no-hw no-weak-ssl-ciphers no-dtls no-shared no-dso", + } + # Windows x86_x64 images + - { + image: "windows-static-x64", + stockfish: "yes", + stockfish_arg: "ARCH=x86-64-modern COMP=mingw", + ninja: "no", + ninja_arg: "", + openssl: "no", + openssl_arg: "mingw64 no-asm", + } + - { + image: "windows-static-x64-posix", + stockfish: "yes", + stockfish_arg: "ARCH=x86-64-modern COMP=mingw", + ninja: "no", + ninja_arg: "", + openssl: "no", + openssl_arg: "mingw64 no-asm", + } + - { + image: "windows-shared-x64", + stockfish: "no", + stockfish_arg: "", + ninja: "no", + ninja_arg: "", + openssl: "no", + openssl_arg: "mingw64 no-asm", + } + - { + image: "windows-shared-x64-posix", + stockfish: "no", + stockfish_arg: "", + ninja: "no", + ninja_arg: "", + openssl: "no", + openssl_arg: "mingw64 no-asm", + } + # Windows x86 images + - { + image: "windows-static-x86", + stockfish: "yes", + stockfish_arg: "ARCH=x86-32-sse41-popcnt COMP=mingw", + ninja: "no", + ninja_arg: "", + openssl: "no", + openssl_arg: "mingw no-asm", + } + - { + image: "windows-shared-x86", + stockfish: "no", + stockfish_arg: "", + ninja: "no", + ninja_arg: "", + openssl: "no", + openssl_arg: "mingw no-asm", + } + # Windows arm images + - { + image: "windows-armv7", + stockfish: "no", + stockfish_arg: "ARCH=armv7-neon COMP=clang", + ninja: "no", + ninja_arg: "", + openssl: "no", + openssl_arg: "mingw no-asm", + } + - { + image: "windows-arm64", + stockfish: "no", + stockfish_arg: "ARCH=armv8 COMP=clang", + ninja: "yes", + ninja_arg: "", + openssl: "no", + openssl_arg: "mingw64 no-asm", + } + # manylinux2014 images + - { + image: "manylinux2014-x86", + stockfish: "yes", + stockfish_arg: "ARCH=x86-32-sse41-popcnt", + ninja: "yes", + ninja_arg: "", + openssl: "yes", + openssl_arg: "linux-x86", + } + - { + image: "manylinux2014-x64", + stockfish: "yes", + stockfish_arg: "ARCH=x86-64-modern", + ninja: "yes", + ninja_arg: "", + openssl: "yes", + openssl_arg: "linux-x86_64", + } + - { + image: "manylinux2014-aarch64", + stockfish: "no", + stockfish_arg: "", + ninja: "no", + ninja_arg: "", + openssl: "yes", + openssl_arg: "linux-aarch64", + } + # web-wasm images + - { + image: "web-wasm", + stockfish: "no", + stockfish_arg: "", + ninja: "no", + ninja_arg: "", + openssl: "no", + openssl_arg: "linux-generic64 no-asm no-threads no-engine no-hw no-weak-ssl-ciphers no-dtls no-shared no-dso", + } steps: - uses: actions/checkout@v2 - uses: actions/download-artifact@v2 @@ -117,8 +428,32 @@ jobs: run: make ${{ matrix.arch_name.image }} - name: basic test run: make ${{ matrix.arch_name.image }}.test + - name: stockfish build test + if: ${{ matrix.arch_name.stockfish == 'yes' }} + run: | + git clone --depth 1 --branch sf_14 https://github.com/official-stockfish/Stockfish.git + cd Stockfish/src + ./../../tools/dockcross-make-builder.sh ${{ matrix.arch_name.image }} net + ./../../tools/dockcross-make-builder.sh ${{ matrix.arch_name.image }} build ${{ matrix.arch_name.stockfish_arg }} -j2 + cd ../.. + rm -rf Stockfish + - name: ninja build test + if: ${{ matrix.arch_name.ninja == 'yes' }} + run: | + git clone --depth 1 --branch v1.10.2 https://github.com/ninja-build/ninja.git + cd ninja + ./../tools/dockcross-cmake-builder.sh ${{ matrix.arch_name.image }} ${{ matrix.arch_name.ninja_arg }} + - name: openssl build test + if: ${{ matrix.arch_name.openssl == 'yes' }} + run: | + git clone --depth 1 --branch OpenSSL_1_1_1k https://github.com/openssl/openssl.git + cd openssl + ./../tools/dockcross-command.sh ${{ matrix.arch_name.image }} ./Configure ${{ matrix.arch_name.openssl_arg }} + ./../tools/dockcross-make-builder.sh ${{ matrix.arch_name.image }} -j2 + cd .. + rm -rf openssl - name: deploy if: github.ref == 'refs/heads/master' run: | - docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_PASS }} - docker image push dockcross/${{ matrix.arch_name.image }} --all-tags + docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_PASS }} + docker image push dockcross/${{ matrix.arch_name.image }} --all-tags diff --git a/tools/dockcross-cmake-builder.sh b/tools/dockcross-cmake-builder.sh index 6aa2072..c96b598 100755 --- a/tools/dockcross-cmake-builder.sh +++ b/tools/dockcross-cmake-builder.sh @@ -5,7 +5,7 @@ if (( $# >= 1 )); then build_file=build-${image%:*} shift 1 - cmake_arg=$* + cmake_arg=$@ echo "cmake arg: $cmake_arg" #echo "Pulling dockcross/$image" @@ -16,7 +16,7 @@ if (( $# >= 1 )); then chmod +x ./dockcross-"$image" echo "Build $build_file" - ./dockcross-"$image" cmake -B "$build_file" -S . -G Ninja "$cmake_arg" + ./dockcross-"$image" cmake -B "$build_file" -S . -G Ninja $cmake_arg ./dockcross-"$image" ninja -C "$build_file" else echo "Usage: ${0##*/} " diff --git a/tools/dockcross-command.sh b/tools/dockcross-command.sh new file mode 100755 index 0000000..e63b06a --- /dev/null +++ b/tools/dockcross-command.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash + +if (( $# >= 2 )); then + image=$1 + shift 1 + + command=$@ + echo "command: $command" + + #echo "Pulling dockcross/$image" + #docker pull dockcross/"$image" + + echo "Make script dockcross-$image" + docker run --rm dockcross/"$image" > ./dockcross-"$image" + chmod +x ./dockcross-"$image" + + echo "Run command in dockcross-$image" + ./dockcross-"$image" $command +else + echo "Usage: ${0##*/} " + exit 1 +fi diff --git a/tools/dockcross-make-builder.sh b/tools/dockcross-make-builder.sh index 2f45d81..afbd310 100755 --- a/tools/dockcross-make-builder.sh +++ b/tools/dockcross-make-builder.sh @@ -5,7 +5,7 @@ if (( $# >= 1 )); then build_file=build-${image%:*} shift 1 - make_arg=$* + make_arg=$@ echo "make arg: $make_arg" #echo "Pulling dockcross/$image" @@ -16,7 +16,7 @@ if (( $# >= 1 )); then chmod +x ./dockcross-"$image" echo "Build $build_file" - ./dockcross-"$image" bash -c 'make CXX=${CXX} CC=${CC} AR=${AR} AS=${AS} LD=${LD} CPP=${CPP} FC=${FC} '"$make_arg" + ./dockcross-"$image" bash -c 'make CXX=${CXX} CC=${CC} AR=${AR} AS=${AS} LD=${LD} CPP=${CPP} FC=${FC}' $make_arg else echo "Usage: ${0##*/} " exit 1