summaryrefslogtreecommitdiffstats
path: root/.github/workflows
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows')
-rw-r--r--.github/workflows/ninja-build.yml110
1 files changed, 110 insertions, 0 deletions
diff --git a/.github/workflows/ninja-build.yml b/.github/workflows/ninja-build.yml
new file mode 100644
index 0000000000..214ec6db1e
--- /dev/null
+++ b/.github/workflows/ninja-build.yml
@@ -0,0 +1,110 @@
+# 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
+ install_cmd: brew install
+ cmake_flags: -DFEATURE_system_sqlite=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-${{ runner.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-${{ runner.os }}-${{ github.ref }}-
+ ccache-${{ runner.os }}-refs/heads/dev-
+ ccache-${{ runner.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