Skip to content

Wait for JS thread to shutdown with graceful timeout #296

Wait for JS thread to shutdown with graceful timeout

Wait for JS thread to shutdown with graceful timeout #296

Workflow file for this run

name: 'TRIK toolchain on Ubuntu Latest'
on:
push:
branches:
- '*'
pull_request:
branches:
- '*'
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
trik-toolchain:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
trik-version: ['', 'trik_new_age']
defaults:
run:
shell: bash -l {0} # to force import of ~/.bash_profile
env:
SDK_DOWNLOAD_URL: https://dl.trikset.com/distro/${{ matrix.trik-version == 'trik_new_age' && 'kirkstone' || 'latest-full' }}
TRIK_SDK_FILENAME: trik-sdk-x86_64-arm926ejse-toolchain-trik-nodistro.0.sh
steps:
- name: Restore TRIK toolchain
uses: actions/cache/restore@v4
with:
path: /opt/trik-sdk
key: ${{ matrix.trik-version }}_sdk
- name: Check if TRIK toolchain is up-to-date
id: trik-toolchain-check
run: |
curl -O ${SDK_DOWNLOAD_URL}/${TRIK_SDK_FILENAME}.sha256
diff -qN ${TRIK_SDK_FILENAME}.sha256 \
/opt/trik-sdk/${TRIK_SDK_FILENAME}.sha256 \
&& echo "install=false" >> $GITHUB_OUTPUT \
|| echo "install=true" >> $GITHUB_OUTPUT
- name: Check if hash of TRIK toolchain is up-to-date
run: |
getFileTimestamp () {
curl -s --head ${SDK_DOWNLOAD_URL}/${TRIK_SDK_FILENAME}${1:-""} \
| sed -n 's/^Last-Modified: //Ip' \
| xargs -I {} date -d "{}" +%s
}
timestampSHA256=$(getFileTimestamp .sha256)
timestampShellScript=$(getFileTimestamp)
if [[ $timestampSHA256 -lt $timestampShellScript ]]; then
echo "::warning ::The SDK installation script file is newer than its hash. Please update the hash."
fi
- name: Install TRIK toolchain
if: steps.trik-toolchain-check.outputs.install == 'true'
run: |
rm -rf /opt/trik-sdk
curl -O ${SDK_DOWNLOAD_URL}/${TRIK_SDK_FILENAME}
chmod +x ./${TRIK_SDK_FILENAME}
./${TRIK_SDK_FILENAME} -y
mv "${TRIK_SDK_FILENAME}.sha256" /opt/trik-sdk
- name: Save TRIK toolchain
if: steps.trik-toolchain-check.outputs.install == 'true'
uses: actions/cache/save@v4
with:
path: /opt/trik-sdk
key: ${{ matrix.trik-version }}_sdk
- name: Install QEMU with binfmt
run: |
sudo apt update
sudo apt install -y 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@v4
with:
fetch-depth: 1
submodules: recursive
- name: Use ccache
uses: hendrikmuhs/[email protected]
with:
key: ${{ github.ref_name }}-${{ github.job }}
- 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 controller] QMake"
timeout-minutes: 1
run: |
. /opt/trik-sdk/environment-setup-arm926ejse-oe-linux-gnueabi
mkdir build-brick
cd build-brick
qmake CONFIG+=release CONFIG+=force_debug_info CONFIG+=precompile_header \
PKGCONFIG+=python3${{ matrix.trik-version && '-embed' || '' }} \
PYTHON_VERSION=$(python3 --version | grep -o '3\.[^.]\+') \
CONFIG+="${{ matrix.trik-version }}" \
"$GITHUB_WORKSPACE/"
- name: "[TRIK controller] 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 controller] Make all"
timeout-minutes: 10
run: |
. /opt/trik-sdk/environment-setup-arm926ejse-oe-linux-gnueabi
cd build-brick
make -j $(nproc) all
- name: "[QEMU + Tests] 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+=force_debug_info CONFIG+=precompile_header \
CONFIG+=${{ matrix.trik-version || 'trik_nopython' }} \
CONFIG+=trik_not_brick \
PKGCONFIG+=python3${{ matrix.trik-version && '-embed' || '' }} \
PYTHON_VERSION=$(python3 --version | grep -o '3\.[^.]\+') \
"$GITHUB_WORKSPACE/"
- name: "[QEMU + Tests] 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 + Tests] Make all"
timeout-minutes: 10
run: |
. /opt/trik-sdk/environment-setup-arm926ejse-oe-linux-gnueabi
cd build-qemu
make -j $(nproc) all
- name: "[QEMU + Tests] Unit tests"
timeout-minutes: 5
run: |
. /opt/trik-sdk/environment-setup-arm926ejse-oe-linux-gnueabi
cd build-qemu
# PYTHONDEVMODE=1 only from 3.7, overrides PYTHONMALLOC and some other
export QEMU_SET_ENV=LD_LIBRARY_PATH=${PWD}/bin,PYTHONDEVMODE=1,TRIK_PYTHONPATH=$(python3 -c "import sys; import os; print(os.pathsep.join(sys.path))"),PYTHONVERBOSE=2,PYTHONDEBUG=2,PYTHONMALLOC=malloc_debug,PYTHONFAULTHANDLER=1
export QEMU_LD_PREFIX=/opt/trik-sdk/sysroots/arm926ejse-oe-linux-gnueabi
env | sort
make -k check