From 2ba34400ba5248f5a5a0d348a1a7579faf1fbcb1 Mon Sep 17 00:00:00 2001 From: Vimanyu Date: Fri, 19 Jun 2020 13:39:48 -0700 Subject: [PATCH 01/11] setting up infrastructure for external dependencies added vcpkg as a submodule added vcpkg response files for various platforms added requirements files to handle python dependencies --- .gitmodules | 3 +++ external/pip_requirements.txt | 2 ++ external/vcpkg | 1 + external/vcpkg_x64-linux_response_file.txt | 6 ++++++ external/vcpkg_x64-osx_response_file.txt | 6 ++++++ external/vcpkg_x64-windows-static_response_file.txt | 6 ++++++ 6 files changed, 24 insertions(+) create mode 100644 .gitmodules create mode 100644 external/pip_requirements.txt create mode 160000 external/vcpkg create mode 100644 external/vcpkg_x64-linux_response_file.txt create mode 100644 external/vcpkg_x64-osx_response_file.txt create mode 100644 external/vcpkg_x64-windows-static_response_file.txt diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000000..63ff859c51 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "external/vcpkg"] + path = external/vcpkg + url = https://github.com/microsoft/vcpkg.git diff --git a/external/pip_requirements.txt b/external/pip_requirements.txt new file mode 100644 index 0000000000..5aaa75d727 --- /dev/null +++ b/external/pip_requirements.txt @@ -0,0 +1,2 @@ +absl-py +protobuf diff --git a/external/vcpkg b/external/vcpkg new file mode 160000 index 0000000000..ee17a68508 --- /dev/null +++ b/external/vcpkg @@ -0,0 +1 @@ +Subproject commit ee17a685087a6886e5681e355d36cd784f0dd2c8 diff --git a/external/vcpkg_x64-linux_response_file.txt b/external/vcpkg_x64-linux_response_file.txt new file mode 100644 index 0000000000..1adba55af6 --- /dev/null +++ b/external/vcpkg_x64-linux_response_file.txt @@ -0,0 +1,6 @@ +openssl +protobuf +zlib +abseil +--triplet +x64-linux diff --git a/external/vcpkg_x64-osx_response_file.txt b/external/vcpkg_x64-osx_response_file.txt new file mode 100644 index 0000000000..4199f79c2f --- /dev/null +++ b/external/vcpkg_x64-osx_response_file.txt @@ -0,0 +1,6 @@ +openssl +protobuf +zlib +abseil +--triplet +x64-osx diff --git a/external/vcpkg_x64-windows-static_response_file.txt b/external/vcpkg_x64-windows-static_response_file.txt new file mode 100644 index 0000000000..d5889f747a --- /dev/null +++ b/external/vcpkg_x64-windows-static_response_file.txt @@ -0,0 +1,6 @@ +openssl +protobuf +zlib +abseil +--triplet +x64-windows-static From d52c334db5db1bd9100b9eb9f08959085edbbafd Mon Sep 17 00:00:00 2001 From: Vimanyu Date: Fri, 19 Jun 2020 14:34:52 -0700 Subject: [PATCH 02/11] basic workflow for windows --- .github/workflows/windows.yml | 79 +++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 .github/workflows/windows.yml diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml new file mode 100644 index 0000000000..ea53cb7b50 --- /dev/null +++ b/.github/workflows/windows.yml @@ -0,0 +1,79 @@ +name: Windows Builds + +on: + push: + pull_request: + +jobs: + build: + name: ${{ matrix.os }}-${{ matrix.build_type }}-${{ matrix.architecture }}-${{ matrix.python_version }}-${{ matrix.generator }} + runs-on: ${{ matrix.os }} + strategy: + # If any of the configurations fail, others will proceed to run + fail-fast: false + matrix: + os: [windows-latest,] + build_type: ["Release", "Debug"] + architecture: ["x64",] + python_version: [2.7] + generator: ["Visual Studio 16 2019",] + include: + - os: windows-latest + architecture: "x64" + vcpkg_triplet: "x64-windows-static" + # For x64, this variable probably doesnt make sense but + # for x86, the command line argument to pass to cmake is -A Win32 and not -A x86 + msbuild_platform: "x64" + + steps: + # Check out with submodule (vcpkg is a submodule) + - uses: actions/checkout@v2 + with: + submodules: true + + - name: Install Ninja + if: startsWith(matrix.generator, 'Ninja') && startsWith(matrix.os, 'windows') + run: | + choco install ninja + + - name: Install vcpkg packages (windows) + if: startsWith(matrix.os, 'windows') + run: | + ${{ github.workspace }}/external/vcpkg/bootstrap-vcpkg.bat -disableMetrics + ${{ github.workspace }}/external/vcpkg/vcpkg install openssl protobuf zlib abseil --triplet ${{ matrix.vcpkg_triplet }} + + - name: Setup python + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python_version }} + architecture: ${{ matrix.architecture }} + + - name: Install pip packages + run: | + python -m pip install --upgrade pip + pip install absl-py protobuf + + - name: Configure + shell: bash + run: | + mkdir build + cmake \ + -S . \ + -B build \ + -G "${{ matrix.generator }}" \ + -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ + -DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake \ + -DVCPKG_TARGET_TRIPLET=${{ matrix.vcpkg_triplet }} \ + + - name: Build + shell: bash + run: cmake --build build --config ${{ matrix.build_type }} -j 8 + + - name: Print built libraries + shell: bash + run: | + find build -name "*.lib" + find build -name "*.dll" + find build -name "*.dylib" + find build -name "*.a" + find build -name "*.so" From 8f52ba9dd792209ea42cfe3e950760e565fab058 Mon Sep 17 00:00:00 2001 From: Vimanyu Date: Fri, 19 Jun 2020 16:08:14 -0700 Subject: [PATCH 03/11] fixed path to vcpkg toolchain file --- .github/workflows/windows.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index ea53cb7b50..9a12915fb5 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -62,7 +62,7 @@ jobs: -B build \ -G "${{ matrix.generator }}" \ -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ - -DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake \ + -DCMAKE_TOOLCHAIN_FILE=external/vcpkg/scripts/buildsystems/vcpkg.cmake \ -DVCPKG_TARGET_TRIPLET=${{ matrix.vcpkg_triplet }} \ - name: Build From d599a0cd36b463b8c2171de29e2b4a6a22f06fff Mon Sep 17 00:00:00 2001 From: Vimanyu Date: Fri, 19 Jun 2020 17:10:00 -0700 Subject: [PATCH 04/11] adding caching for dependencies handled by vcpkg --- .github/workflows/windows.yml | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 9a12915fb5..217a1c2b07 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -13,7 +13,7 @@ jobs: fail-fast: false matrix: os: [windows-latest,] - build_type: ["Release", "Debug"] + build_type: ["Release"] architecture: ["x64",] python_version: [2.7] generator: ["Visual Studio 16 2019",] @@ -31,16 +31,28 @@ jobs: with: submodules: true + - name: Set env variables for subsequent steps (all) + run: | + echo "::set-env name=VCPKG_RESPONSE_FILE::external/vcpkg_${{ matrix.vcpkg_triplet }}_response_file.txt" + echo "::set-env name=PIP_REQUIREMENTS_FILE::external/pip_requirements.txt" + - name: Install Ninja if: startsWith(matrix.generator, 'Ninja') && startsWith(matrix.os, 'windows') run: | choco install ninja + - name: Cache vcpkg C++ dependencies + id: cache_vcpkg + uses: actions/cache@v2 + with: + path: external/vcpkg/installed + key: dev-vcpkg-${{ matrix.vcpkg_triplet }}-${{ hashFiles(format('{0}', env.VCPKG_RESPONSE_FILE)) }}-${{ hashFiles('.git/modules/vcpkg/HEAD') }} + - name: Install vcpkg packages (windows) if: startsWith(matrix.os, 'windows') run: | ${{ github.workspace }}/external/vcpkg/bootstrap-vcpkg.bat -disableMetrics - ${{ github.workspace }}/external/vcpkg/vcpkg install openssl protobuf zlib abseil --triplet ${{ matrix.vcpkg_triplet }} + ${{ github.workspace }}/external/vcpkg/vcpkg install @${{env.VCPKG_RESPONSE_FILE}} - name: Setup python uses: actions/setup-python@v2 @@ -51,7 +63,7 @@ jobs: - name: Install pip packages run: | python -m pip install --upgrade pip - pip install absl-py protobuf + pip install -r ${{ env.PIP_REQUIREMENTS_FILE }} - name: Configure shell: bash From 92ce584089d2360f4207fc68e9768eb84cbf8496 Mon Sep 17 00:00:00 2001 From: Vimanyu Date: Fri, 19 Jun 2020 17:20:45 -0700 Subject: [PATCH 05/11] cache hash key now uses submodule version of vcpkg --- .github/workflows/windows.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 217a1c2b07..9b51f90e6a 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -46,7 +46,7 @@ jobs: uses: actions/cache@v2 with: path: external/vcpkg/installed - key: dev-vcpkg-${{ matrix.vcpkg_triplet }}-${{ hashFiles(format('{0}', env.VCPKG_RESPONSE_FILE)) }}-${{ hashFiles('.git/modules/vcpkg/HEAD') }} + key: dev-vcpkg-${{ matrix.vcpkg_triplet }}-${{ hashFiles(format('{0}', env.VCPKG_RESPONSE_FILE)) }}-${{ hashFiles('.git/modules/external/vcpkg/HEAD') }} - name: Install vcpkg packages (windows) if: startsWith(matrix.os, 'windows') From 3bbb5895c85246df1609880313d242a037bdf4fb Mon Sep 17 00:00:00 2001 From: Vimanyu Date: Fri, 19 Jun 2020 18:11:52 -0700 Subject: [PATCH 06/11] do not install vcpkg deps on cache hit --- .github/workflows/windows.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 9b51f90e6a..9ffa4ed390 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -49,7 +49,7 @@ jobs: key: dev-vcpkg-${{ matrix.vcpkg_triplet }}-${{ hashFiles(format('{0}', env.VCPKG_RESPONSE_FILE)) }}-${{ hashFiles('.git/modules/external/vcpkg/HEAD') }} - name: Install vcpkg packages (windows) - if: startsWith(matrix.os, 'windows') + if: steps.cache_vcpkg.outputs.cache-hit!='true' && startsWith(matrix.os, 'windows') run: | ${{ github.workspace }}/external/vcpkg/bootstrap-vcpkg.bat -disableMetrics ${{ github.workspace }}/external/vcpkg/vcpkg install @${{env.VCPKG_RESPONSE_FILE}} From 537c21111c78d85afecebbacc537fcd23527b6e0 Mon Sep 17 00:00:00 2001 From: Vimanyu Date: Fri, 19 Jun 2020 19:52:46 -0700 Subject: [PATCH 07/11] adding ccache and an all desktop workflow --- .github/workflows/desktop.yml | 159 ++++++++++++++++++++++++++++++++++ CMakeLists.txt | 9 ++ 2 files changed, 168 insertions(+) create mode 100644 .github/workflows/desktop.yml diff --git a/.github/workflows/desktop.yml b/.github/workflows/desktop.yml new file mode 100644 index 0000000000..734645de56 --- /dev/null +++ b/.github/workflows/desktop.yml @@ -0,0 +1,159 @@ +name: Desktop Builds + +on: + push: + pull_request: + +env: + CCACHE_DIR: ${{ github.workspace }}/ccache_dir + +jobs: + build: + name: ${{ matrix.os }}-${{ matrix.build_type }}-${{ matrix.architecture }}-${{ matrix.python_version }}-${{ matrix.generator }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [windows-latest, ubuntu-latest, macos-latest] + build_type: ["Release"] + architecture: ["x64",] + python_version: [2.7] + generator: ["Visual Studio 16 2019", "Unix Makefiles", "Ninja"] + exclude: + - os: ubuntu-latest + generator: "Visual Studio 16 2019" + - os: macos-latest + generator: "Visual Studio 16 2019" + - os: windows-latest + generator: "Unix Makefiles" + - os: windows-latest + generator: "Ninja" + + include: + - os: windows-latest + architecture: "x64" + vcpkg_triplet: "x64-windows-static" + msbuild_platform: "x64" + - os: ubuntu-latest + architecture: "x64" + vcpkg_triplet: "x64-linux" + - os: macos-latest + architecture: "x64" + vcpkg_triplet: "x64-osx" + + steps: + - uses: actions/checkout@v2 + with: + submodules: true + + - name: Set env variables for subsequent steps (all) + run: | + echo "::set-env name=VCPKG_RESPONSE_FILE::external/vcpkg_${{ matrix.vcpkg_triplet }}_response_file.txt" + echo "::set-env name=PIP_REQUIREMENTS_FILE::external/pip_requirements.txt" + echo "::set-env name=MATRIX_UNIQUE_NAME::${{ matrix.os }}-${{ matrix.build_type }}-${{ matrix.architecture }}-${{ matrix.python_version }}-${{ matrix.generator }}" + + - name: Install Ninja (windows) + if: startsWith(matrix.generator, 'Ninja') && startsWith(matrix.os, 'windows') + run: | + choco install ninja + + - name: Install Ninja (mac) + if: startsWith(matrix.generator, 'Ninja') && startsWith(matrix.os, 'macos') + run: | + brew install ninja + + - name: Install Ninja (linux) + if: startsWith(matrix.generator, 'Ninja') && startsWith(matrix.os, 'ubuntu') + run: | + sudo apt install ninja-build + + - name: Install system level applications (mac) + if: startsWith(matrix.os, 'macos') + id: macos-brew-install + run: | + brew install ccache + + - name: Install system level applications (linux) + if: startsWith(matrix.os, 'ubuntu') + id: ubuntu-brew-install + run: | + sudo apt install ccache + + - name: Cache vcpkg C++ dependencies + id: cache_vcpkg + uses: actions/cache@v2 + with: + path: external/vcpkg/installed + key: dev-vcpkg-${{ matrix.vcpkg_triplet }}-${{ hashFiles(format('{0}', env.VCPKG_RESPONSE_FILE)) }}-${{ hashFiles('.git/modules/external/vcpkg/HEAD') }} + + - name: Install vcpkg packages (windows) + if: steps.cache_vcpkg.outputs.cache-hit!='true' && startsWith(matrix.os, 'windows') + run: | + ${{ github.workspace }}/external/vcpkg/bootstrap-vcpkg.bat -disableMetrics + ${{ github.workspace }}/external/vcpkg/vcpkg install @${{env.VCPKG_RESPONSE_FILE}} + + - name: Install vcpkg packages (mac and linux) + if: steps.cache_vcpkg.outputs.cache-hit!='true' && startsWith(matrix.os, 'windows')!='true' + run: | + ${{ github.workspace }}/external/vcpkg/bootstrap-vcpkg.sh -disableMetrics + ${{ github.workspace }}/external/vcpkg/vcpkg install @${{env.VCPKG_RESPONSE_FILE}} + + - name: Setup python + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python_version }} + architecture: ${{ matrix.architecture }} + + - name: Get pip cache dir + id: get_pip_cache_dir + run: | + echo "::set-output name=cachedir::$(pip cache dir)" + + - name: pip cache + id: cache_pip + uses: actions/cache@v2 + with: + path: ${{ steps.get_pip_cache_dir.outputs.cachedir }} + key: dev-pip-${{ runner.os }}-${{ matrix.python_version }}-${{ matrix.architecture }}-${{ hashFiles(format('{0}', env.PIP_REQUIREMENTS_FILE)) }} + + - name: Install pip packages + run: | + python -m pip install --upgrade pip + pip install -r ${{ env.PIP_REQUIREMENTS_FILE }} + + - name: Cache ccache files (mac and linux) + if: startsWith(matrix.os, 'macos') || startsWith(matrix.os, 'ubuntu') + id: cache_ccache + uses: actions/cache@v2 + with: + path: ccache_dir + key: dev-test-ccache-${{ env.MATRIX_UNIQUE_NAME }} + + - name: Configure + shell: bash + run: | + mkdir build + cmake \ + -S . \ + -B build \ + -G "${{ matrix.generator }}" \ + -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ + -DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake \ + -DVCPKG_TARGET_TRIPLET=${{ matrix.vcpkg_triplet }} \ + + - name: Build + shell: bash + run: cmake --build build --config ${{ matrix.build_type }} -j 8 + + - name: Stats for ccache (mac and linux) + if: startsWith(matrix.os, 'macos') || startsWith(matrix.os, 'ubuntu') + run: ccache -s + + - name: Print built libraries + shell: bash + run: | + find build -name "*.lib" + find build -name "*.dll" + find build -name "*.dylib" + find build -name "*.a" + find build -name "*.so" diff --git a/CMakeLists.txt b/CMakeLists.txt index 7d3b1ce226..070f565ea5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -75,6 +75,15 @@ project (firebase NONE) enable_language(C) enable_language(CXX) +set(compiler_cache_program ccache) + +find_program(compilercache_program ${compiler_cache_program}) +if(compilercache_program) + set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${compiler_cache_program}") + set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK "${compiler_cache_program}") + message( STATUS "Found compiler cache program : ${compiler_cache_program}" ) +endif() + list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_CURRENT_LIST_DIR}/cmake) include(external_rules) include(cpp_pack) From 3f7ad14da0cfe4f7702f605946bd12d2b165b7dc Mon Sep 17 00:00:00 2001 From: Vimanyu Date: Fri, 19 Jun 2020 19:58:04 -0700 Subject: [PATCH 08/11] correct path for vcpkg toolchain --- .github/workflows/desktop.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/desktop.yml b/.github/workflows/desktop.yml index 734645de56..fb2f0a0437 100644 --- a/.github/workflows/desktop.yml +++ b/.github/workflows/desktop.yml @@ -138,7 +138,7 @@ jobs: -B build \ -G "${{ matrix.generator }}" \ -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ - -DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake \ + -DCMAKE_TOOLCHAIN_FILE=external/vcpkg/scripts/buildsystems/vcpkg.cmake \ -DVCPKG_TARGET_TRIPLET=${{ matrix.vcpkg_triplet }} \ - name: Build From 87237944e69a65037d8229884a76b762c4c2dbd1 Mon Sep 17 00:00:00 2001 From: Vimanyu Date: Fri, 19 Jun 2020 20:38:20 -0700 Subject: [PATCH 09/11] test if ccache cache actually worked --- .github/workflows/desktop.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/desktop.yml b/.github/workflows/desktop.yml index fb2f0a0437..b66c34eade 100644 --- a/.github/workflows/desktop.yml +++ b/.github/workflows/desktop.yml @@ -51,6 +51,7 @@ jobs: echo "::set-env name=VCPKG_RESPONSE_FILE::external/vcpkg_${{ matrix.vcpkg_triplet }}_response_file.txt" echo "::set-env name=PIP_REQUIREMENTS_FILE::external/pip_requirements.txt" echo "::set-env name=MATRIX_UNIQUE_NAME::${{ matrix.os }}-${{ matrix.build_type }}-${{ matrix.architecture }}-${{ matrix.python_version }}-${{ matrix.generator }}" + echo "test if ccache cache works" - name: Install Ninja (windows) if: startsWith(matrix.generator, 'Ninja') && startsWith(matrix.os, 'windows') From 892807832133545cc074695b39814f3e23d52085 Mon Sep 17 00:00:00 2001 From: Vimanyu Date: Mon, 22 Jun 2020 13:38:51 -0700 Subject: [PATCH 10/11] more accurate name for system install step on ubuntu --- .github/workflows/desktop.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/desktop.yml b/.github/workflows/desktop.yml index b66c34eade..47597e24eb 100644 --- a/.github/workflows/desktop.yml +++ b/.github/workflows/desktop.yml @@ -76,7 +76,7 @@ jobs: - name: Install system level applications (linux) if: startsWith(matrix.os, 'ubuntu') - id: ubuntu-brew-install + id: ubuntu-apt-install run: | sudo apt install ccache From e7ef3f282cad100ce25aaed725a973684ac8957a Mon Sep 17 00:00:00 2001 From: Vimanyu Date: Mon, 22 Jun 2020 14:03:52 -0700 Subject: [PATCH 11/11] more robust check for installation of ccache --- .github/workflows/desktop.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/desktop.yml b/.github/workflows/desktop.yml index 47597e24eb..1570534428 100644 --- a/.github/workflows/desktop.yml +++ b/.github/workflows/desktop.yml @@ -51,7 +51,6 @@ jobs: echo "::set-env name=VCPKG_RESPONSE_FILE::external/vcpkg_${{ matrix.vcpkg_triplet }}_response_file.txt" echo "::set-env name=PIP_REQUIREMENTS_FILE::external/pip_requirements.txt" echo "::set-env name=MATRIX_UNIQUE_NAME::${{ matrix.os }}-${{ matrix.build_type }}-${{ matrix.architecture }}-${{ matrix.python_version }}-${{ matrix.generator }}" - echo "test if ccache cache works" - name: Install Ninja (windows) if: startsWith(matrix.generator, 'Ninja') && startsWith(matrix.os, 'windows') @@ -73,12 +72,14 @@ jobs: id: macos-brew-install run: | brew install ccache + echo "::set-env name=CCACHE_INSTALLED::1" - name: Install system level applications (linux) if: startsWith(matrix.os, 'ubuntu') id: ubuntu-apt-install run: | sudo apt install ccache + echo "::set-env name=CCACHE_INSTALLED::1" - name: Cache vcpkg C++ dependencies id: cache_vcpkg @@ -122,8 +123,8 @@ jobs: python -m pip install --upgrade pip pip install -r ${{ env.PIP_REQUIREMENTS_FILE }} - - name: Cache ccache files (mac and linux) - if: startsWith(matrix.os, 'macos') || startsWith(matrix.os, 'ubuntu') + - name: Cache ccache files + if: env.CCACHE_INSTALLED id: cache_ccache uses: actions/cache@v2 with: @@ -147,7 +148,7 @@ jobs: run: cmake --build build --config ${{ matrix.build_type }} -j 8 - name: Stats for ccache (mac and linux) - if: startsWith(matrix.os, 'macos') || startsWith(matrix.os, 'ubuntu') + if: env.CCACHE_INSTALLED run: ccache -s - name: Print built libraries