From 337b9bbb6144c6ab6c5f79dcad6f4578425a77d3 Mon Sep 17 00:00:00 2001 From: Nikolai Ponomarev Date: Thu, 24 Aug 2023 16:34:23 +0300 Subject: [PATCH] Add TRIK toolchain CI --- .github/workflows/trik-toolchain.yml | 152 +++++++++++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 .github/workflows/trik-toolchain.yml diff --git a/.github/workflows/trik-toolchain.yml b/.github/workflows/trik-toolchain.yml new file mode 100644 index 00000000..022718ba --- /dev/null +++ b/.github/workflows/trik-toolchain.yml @@ -0,0 +1,152 @@ +name: 'TRIK toolchain on Ubuntu Latest' +on: + push: + branches: + pull_request: + branches: + workflow_dispatch: + +jobs: + trik-toolchain: + runs-on: ubuntu-latest + defaults: + run: + shell: bash -l {0} # to force import of ~/.bash_profile + + concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + + steps: + - name: Restore TRIK toolchain + uses: actions/cache/restore@v3 + with: + path: /opt/trik-sdk + key: trik-sdk + + - name: Check if TRIK toolchain is up-to-date + id: trik-toolchain-check + run: | + curl -O https://dl.trikset.com/distro/latest-full/trik-sdk-x86_64-arm926ejse-toolchain-trik-nodistro.0.sh.sha256 + diff -qN trik-sdk-x86_64-arm926ejse-toolchain-trik-nodistro.0.sh.sha256 \ + /opt/trik-sdk/trik-sdk-x86_64-arm926ejse-toolchain-trik-nodistro.0.sh.sha256 \ + && echo "install=false" >> $GITHUB_OUTPUT \ + || echo "install=true" >> $GITHUB_OUTPUT + + - name: Install TRIK toolchain + if: steps.trik-toolchain-check.outputs.install == true + run: | + rm -rf /opt/trik-sdk + curl -O https://dl.trikset.com/distro/latest-full/trik-sdk-x86_64-arm926ejse-toolchain-trik-nodistro.0.sh + chmod +x ./trik-sdk-x86_64-arm926ejse-toolchain-trik-nodistro.0.sh + ./trik-sdk-x86_64-arm926ejse-toolchain-trik-nodistro.0.sh -y + mv trik-sdk-x86_64-arm926ejse-toolchain-trik-nodistro.0.sh.sha256 /opt/trik-sdk + + - name: Save TRIK toolchain + if: steps.trik-toolchain-check.outputs.install == true + uses: actions/cache/save@v3 + with: + path: /opt/trik-sdk + key: trik-sdk + + - name: Install QEMU with binfmt + run: | + sudo apt-get install qemu-user-binfmt + + - name: Configure git + run: | + git --version + git config --global core.symlinks true + git config --global core.autocrlf false + + #prepare for actions/checkout, otherwise it fails + echo "LC_ALL=en_US.utf8" >> $GITHUB_ENV + echo "$(dirname $(realpath $(which git)))" >> $GITHUB_PATH + echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> $GITHUB_ENV + echo "PERL5LIB=$PERL5LIB" >> $GITHUB_ENV + + - name: Checkout repository + uses: actions/checkout@v3 + with: + fetch-depth: 1 + submodules: recursive + + - name: Use ccache + uses: hendrikmuhs/ccache-action@v1.2 + with: + key: ${{ github.workflow }} + + - name: Check available tools + run: | + set -xeo pipefail + . /opt/trik-sdk/environment-setup-arm926ejse-oe-linux-gnueabi + uname -a + rsync --version + qmake --version && qmake -query + python3 --version + echo $CXX + $CXX --version + ccache --version + qemu-arm --version + + - name: "[TRIK brick] QMake" + timeout-minutes: 1 + run: | + . /opt/trik-sdk/environment-setup-arm926ejse-oe-linux-gnueabi + mkdir build-brick + cd build-brick + qmake CONFIG+=release CONFIG+=noPch CONFIG+=ccache \ + "$GITHUB_WORKSPACE/" + + - name: "[TRIK brick] QMake all" + timeout-minutes: 3 + run: | + . /opt/trik-sdk/environment-setup-arm926ejse-oe-linux-gnueabi + cd build-brick + make -j $(nproc) qmake_all + + - name: "[TRIK brick] Make all" + timeout-minutes: 10 + run: | + . /opt/trik-sdk/environment-setup-arm926ejse-oe-linux-gnueabi + cd build-brick + make -j $(nproc) all + + - name: "[QEMU + NoPython] QMake" + timeout-minutes: 1 + run: | + . /opt/trik-sdk/environment-setup-arm926ejse-oe-linux-gnueabi + mkdir build-qemu + cd build-qemu + qmake CONFIG+=release CONFIG+=tests CONFIG+=noPch CONFIG+=ccache \ + CONFIG+=trik_not_brick CONFIG+=trik_nopython \ + "$GITHUB_WORKSPACE/" + + - name: "[QEMU + NoPython] QMake all" + timeout-minutes: 3 + run: | + . /opt/trik-sdk/environment-setup-arm926ejse-oe-linux-gnueabi + cd build-qemu + make -j $(nproc) qmake_all + + - name: "[QEMU + NoPython] Make all" + timeout-minutes: 10 + run: | + . /opt/trik-sdk/environment-setup-arm926ejse-oe-linux-gnueabi + cd build-qemu + make -j $(nproc) all + + - name: "[QEMU + NoPython] Unit tests" + timeout-minutes: 5 + run: | + . /opt/trik-sdk/environment-setup-arm926ejse-oe-linux-gnueabi + cd build-qemu + # export TRIK_PYTHONPATH=$(python3 -c "import sys; import os; print(os.pathsep.join(sys.path))") + # export PYTHONVERBOSE=2 + # export PYTHONDEBUG=2 + # export PYTHONMALLOC=malloc_debug + # export PYTHONFAULTHANDLER=1 + # export PYTHONDEVMODE=1 #only from 3.7, overrides PYTHONMALLOC and some other + export QEMU_LD_PREFIX=/opt/trik-sdk/sysroots/arm926ejse-oe-linux-gnueabi/ + env | sort + make -k check TESTARGS="-platform offscreen"