summaryrefslogtreecommitdiffstats
path: root/.github/workflows/ninja-build.yml
blob: 5b28a8c5d379ecf689b27f797b044808821c2952 (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
# Smoke builds
#
# The goal of this workflow is to finish as fast as possible. Therefore some
# choices have been made:
# - no optimizations
# - link to system-provided libraries instead of bulding
#   bundled 3rd party libraries
# - ccache

name: Smoke build

on: push

defaults:
  run:
    shell: bash

jobs:

  build:
    strategy:
      fail-fast: false
      matrix:
        include:
          - name: ubuntu-18.04
            os:   ubuntu-18.04
            deps:  libgl-dev libglu-dev libpcre2-dev libz-dev libfreetype6-dev libpng-dev libjpeg-dev libsqlite3-dev
            tools: ninja-build ccache
            install_cmd: sudo apt-get -y install
            cmake_flags: -DFEATURE_system_sqlite=ON
          - name: macos-10.15
            os:   macos-10.15
            deps:  jpeg sqlite
            tools: ninja ccache pkg-config
            install_cmd: brew install
            # Specifically on macOS pkg_config has to be manually turned on otherwise libraries under /usr/local are not detected.
            cmake_flags: -DFEATURE_system_sqlite=ON -DFEATURE_pkg_config=ON
          - name: windows-2019
            os:   windows-2019
            install_cmd: choco install
            install_cmd_postfix: --yes --no-progress
            # Chocolatey sqlite package does not come with headers, so we build with bundled sqlite.
            #deps: sqlite
            tools: ninja ccache
            # Because of header conflicts we disable everything else besides sqlite driver
            cmake_flags: -DFEATURE_system_sqlite=OFF -DFEATURE_sql_psql=OFF -DFEATURE_sql_mysql=OFF -DFEATURE_sql_odbc=OFF
    runs-on: ${{ matrix.os }}


    steps:

    - name: prepare Linux
      if: runner.os == 'Linux'
      run: sudo apt-get update
    - name: prepare Windows
      if: runner.os == 'Windows'
      # Header pthread.h from postgres is included and creates issues.
      # Also library zlib.lib is linked instead of the system one.
      run: rm -rf "C:/Program Files/PostgreSQL/"

    - uses: actions/checkout@v2

    - name: restore ccache
      id: ccache
      uses: actions/cache@v2
      with:
        path: ~/.ccache
        # "github.run_id" is unique, which causes the cache to always get
        # saved at the end of a successful run.
        key:  ccache-${{ matrix.os }}-${{ github.ref }}-${{ github.run_id }}
        # As the unique "key" above will never be found in the cache when the
        # job starts, we need these broader "restore-keys" in order to match
        # and restore the most recent cache.
        restore-keys: |
          ccache-${{ matrix.os }}-${{ github.ref }}-
          ccache-${{ matrix.os }}-refs/heads/dev-
          ccache-${{ matrix.os }}-

    - name: install build dependencies
      run:  ${{ matrix.install_cmd }}  ${{ matrix.deps }}  ${{ matrix.install_cmd_postfix }}
      if: matrix.deps != ''
    - name: install compiler tools
      run:  ${{ matrix.install_cmd }}  ${{ matrix.tools }}  ${{ matrix.install_cmd_postfix }}
    - name: print versions and environment
      run: |
        gcc --version    | head -1
        cmake --version  | head -1
        echo Ninja `ninja --version`
        { ninja --help || true ; } 2>&1 | grep "run N jobs in parallel"
        ccache --version | head -1
        echo Environment:
        printenv

    - name: make build directory
      run:  mkdir build
    - name: configure
      working-directory: build
      run:  ../configure -cmake -opensource -confirm-license \
        \ -debug -no-optimize-debug -nomake tests -nomake examples \
        \ -no-harfbuzz -no-iconv \
        \ -system-pcre -system-zlib -system-freetype -system-libpng -system-libjpeg \
        \ -- -DQT_NO_MAKE_TESTS=ON -DQT_NO_MAKE_EXAMPLES=ON \
        \ -DQT_USE_CCACHE=ON -DBUILD_WITH_PCH=OFF \
        \ ${{ matrix.cmake_flags }}
    - name: ninja
      working-directory: build
      run: ninja

    - name: various stats
      # Print ccache utilization statistics, then reset them.
      run:  ccache -s && ccache -z