summaryrefslogtreecommitdiff
path: root/lib/lvgl/.github/workflows/ccpp.yml
blob: 44a164b04dbcca17ee36e5ca653ae2b31e1d7e4f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
name: C/C++ CI

on:
  push:
    branches: [ master, release/v8.* ]
  pull_request:
    branches: [ master, release/v8.* ]

jobs:
  build:
    if: ${{ github.event_name != 'pull_request' || github.repository != github.event.pull_request.head.repo.full_name }}
    runs-on: ubuntu-latest
    strategy:
      matrix:
        # A valid option parameter to the cmake file.
        # See BUILD_OPTIONS in tests/CMakeLists.txt.
        build_option: ['OPTIONS_16BIT',
                       'OPTIONS_24BIT',
                       'OPTIONS_FULL_32BIT',
                       "OPTIONS_VG_LITE"]
    name: Build ${{ matrix.build_option }}
    steps:
    - uses: actions/checkout@v4
    - uses: ammaraskar/gcc-problem-matcher@master
    - name: Install prerequisites
      run: scripts/install-prerequisites.sh
    - name: Building ${{ matrix.build_option }}
      run: python tests/main.py --build-option=${{ matrix.build_option }} build

  test-native:
    runs-on: ubuntu-latest
    name: amd64 Executable Tests
    steps:
    - uses: actions/checkout@v4
    - uses: ammaraskar/gcc-problem-matcher@master
    - name: Install prerequisites
      run: scripts/install-prerequisites.sh
    - name: Fix kernel mmap rnd bits
      # Asan in llvm 14 provided in ubuntu 22.04 is incompatible with
      # high-entropy ASLR in much newer kernels that GitHub runners are
      # using leading to random crashes: https://reviews.llvm.org/D148280
      run: sudo sysctl vm.mmap_rnd_bits=28
    - name: Run tests
      run: python tests/main.py --report --update-image test
    - name: Archive screenshot errors
      if: failure()
      uses: actions/upload-artifact@v4
      with:
        name: screenshot-errors-amd64
        path: |
             tests/ref_imgs/**/*_err.png
             test_screenshot_error.h
#    - name: Upload coverage to Codecov
#      uses: codecov/codecov-action@v4
#      if: github.event_name == 'push' && github.repository == 'lvgl/lvgl'
#      with:
#        fail_ci_if_error: true
#        verbose: true
  test-cross:
    # The host should always be linux
    runs-on: ubuntu-latest
    name: ${{ matrix.arch }} Executable Tests

    # Run steps on a matrix of 3 arch/distro combinations
    strategy:
      matrix:
        include:
          - arch: aarch64
            distro: ubuntu22.04
          - arch: armv6
            distro: bullseye
          - arch: armv7
            distro: bullseye
    steps:
      - uses: actions/checkout@v4
      - uses: ammaraskar/gcc-problem-matcher@master
      - name: Setup cache
        uses: actions/cache@v4
        with:
          path: |
            ~/.ccache
          key: lvgl_ci_cross_test_ccache_${{ matrix.arch }}_${{ github.sha }}
          restore-keys: |
            lvgl_ci_cross_test_ccache_${{ matrix.arch }}
      - uses: uraimo/run-on-arch-action@v2.7.1
        name: Run tests
        id: build
        with:
          arch: ${{ matrix.arch }}
          distro: ${{ matrix.distro }}

          # Not required, but speeds up builds
          githubToken: ${{ github.token }}

          # The shell to run commands with in the container
          shell: /bin/bash

          # Create cached/volume directories on host
          setup: |
            mkdir -p ~/.ccache

          # Mount cached directories in the container for faster builds
          dockerRunArgs: |
            --volume "${HOME}/.ccache:/root/.ccache"

          install: |
            apt-get update -y
            if [[ "${{ matrix.distro }}" == "ubuntu22.04" ]]; then
              apt-get install libjpeg-turbo8-dev -q -y
            else
              apt-get install libjpeg62-turbo-dev -q -y
            fi
            apt-get install build-essential ccache libgcc-10-dev python3 libpng-dev ruby-full gcovr cmake libfreetype6-dev libasan6 pngquant python3-pip libinput-dev libxkbcommon-dev libdrm-dev pkg-config ninja-build -q -y
            pip install pypng lz4
            /usr/sbin/update-ccache-symlinks
            echo 'export PATH="/usr/lib/ccache:$PATH"' | tee -a ~/.bashrc

          run: |
            if [[ "${{ matrix.distro }}" == "ubuntu22.04" ]]; then
              # ASan in llvm 14 provided in ubuntu-22.04 is incompatible with
              # high-entropy ASLR configured in much newer kernels that GitHub
              # runners are using leading to random crashes:
              #   https://github.com/actions/runner-images/issues/9491
              # can remove this once the issue is fixed.
              sysctl -w vm.mmap_rnd_bits=28
            fi
            env PATH="/usr/lib/ccache:$PATH" NON_AMD64_BUILD=1 ASAN_OPTIONS=detect_leaks=0 python3 tests/main.py test
      - name: Archive screenshot errors
        if: failure()
        uses: actions/upload-artifact@v4
        with:
            name: screenshot-errors-${{ matrix.arch }}
            path: |
                tests/ref_imgs/**/*_err.png
                test_screenshot_error.h