Fix build with SDK macosx10.15 #6
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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 building | |
# bundled 3rd party libraries | |
# - ccache | |
name: Smoke build | |
on: push | |
env: | |
BRANCH: dev | |
BRANCH_REF: refs/heads/dev | |
defaults: | |
run: | |
shell: bash | |
jobs: | |
build: | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- name: ubuntu-20.04 | |
os: ubuntu-20.04 | |
# NOTE: system libmd4c is not detected | |
deps: libgl-dev libglu-dev 'libxcb*-dev' libx11-xcb-dev libxkbcommon-x11-dev libpcre2-dev libz-dev libfreetype6-dev libpng-dev libjpeg-dev libsqlite3-dev libharfbuzz-dev libb2-dev libdouble-conversion-dev libmd4c-dev | |
tools: ninja-build ccache | |
install_cmd: sudo apt-get -y install | |
configure_flags: -xcb -system-sqlite -system-pcre -system-zlib -system-freetype -system-libpng -system-libjpeg -system-harfbuzz -system-libb2 -system-doubleconversion -system-libmd4c | |
- name: ubuntu-18.04 | |
os: ubuntu-18.04 | |
# NOTE: system libb2 is not detected because version < 0.98.1 lacks pkg-config module | |
# NOTE: system libharfbuzz is not detected because system has old version | |
deps: libgl-dev libglu-dev 'libxcb*-dev' libx11-xcb-dev libxkbcommon-x11-dev libpcre2-dev libz-dev libfreetype6-dev libpng-dev libjpeg-dev libsqlite3-dev libharfbuzz-dev libb2-dev libdouble-conversion-dev | |
tools: ninja-build ccache gcc-10 | |
install_cmd: sudo apt-get -y install | |
configure_flags: -xcb -system-sqlite -system-pcre -system-zlib -system-freetype -system-libpng -system-libjpeg -system-harfbuzz -system-libb2 -system-doubleconversion | |
- name: macos-10.15 | |
os: macos-10.15 | |
deps: jpeg sqlite libpng pcre2 harfbuzz freetype libb2 double-conversion | |
tools: ninja ccache pkg-config | |
install_cmd: HOMEBREW_NO_INSTALL_CLEANUP=1 brew install | |
# Specifically on macOS pkg_config has to be manually turned on otherwise libraries under /usr/local are not detected. | |
configure_flags: -pkg-config -system-sqlite -system-pcre -system-zlib -system-freetype -system-libpng -system-libjpeg -system-harfbuzz -system-libb2 -system-doubleconversion | |
- 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 | |
# ccache installed separately later in order to force version | |
tools: ninja | |
# We don't want the system headers / libraries from Strawberry Perl while compiling with MinGW 8.1.0 | |
configure_flags: -qt-sqlite -qt-pcre -qt-zlib -qt-freetype -qt-libpng -qt-libjpeg -qt-harfbuzz -no-feature-sql-psql -no-feature-sql-mysql -no-feature-sql-odbc | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: prepare Linux | |
if: runner.os == 'Linux' | |
run: | | |
sudo apt-get update | |
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100 | |
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 100 | |
- name: prepare macOS | |
if: runner.os == 'macOS' | |
run: echo noop | |
- 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/" | |
choco install ccache --version 3.7.12 --yes --no-progress --not-silent --verbose --debug | |
- uses: actions/checkout@v2 | |
with: | |
path: source | |
- name: restore ccache | |
id: ccache | |
uses: actions/cache@v2 | |
with: | |
path: ${{ runner.temp }}/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 }}-${{ env.BRANCH_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: configure ccache | |
run: | | |
ccache --set-config sloppiness=file_macro,time_macros | |
ccache --set-config cache_dir='${{ runner.temp }}'/ccache | |
ccache --set-config compression=true | |
ccache --set-config max_size=1G | |
- 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 | |
ccache --show-config || echo 'Old ccache version does not support --show-config' | |
echo Environment: | |
printenv | |
- name: make build directory | |
run: mkdir build | |
- name: configure | |
working-directory: build | |
run: "../source/configure -opensource -confirm-license -ccache -no-pch | |
-debug -nomake tests -nomake examples | |
-prefix '${{ runner.temp }}'/install_dir | |
${{ matrix.configure_flags }}" | |
- name: ninja | |
working-directory: build | |
run: ninja | |
- name: various stats | |
# Print ccache utilization statistics, then reset them. | |
run: | | |
ccache -s | |
ccache -x 2>/dev/null || true | |
ccache -z | |
- name: print logfiles and other info in case of failure | |
if: ${{ failure() }} | |
run: | | |
echo ==== CMakeOutput.log ==== | |
cat build/CMakeFiles/CMakeOutput.log | |
echo | |
echo ==== CMakeError.log ==== | |
cat build/CMakeFiles/CMakeError.log | |
echo ==== CMakeCache.txt ==== | |
cat build/CMakeCache.txt |