Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cache Headers for CI #195

Open
wants to merge 4 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
122 changes: 88 additions & 34 deletions .github/workflows/linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,35 +3,48 @@ name: Linux
on: [push, pull_request]

jobs:
cmake-minimum:
headers:
name: Build and cache Headers
runs-on: ${{ matrix.OS }}
strategy:
matrix:
OS: [ubuntu-18.04]
COMPILER: [gcc-7, gcc-8, clang-8, clang-10]
EXT: [ON, OFF]
OS: [ubuntu-18.04, ubuntu-20.04]
COMPILER: [gcc]
EXT: [ON]
GEN: [Unix Makefiles]
CONFIG: [Debug, Release]
STD: [99, 11]
BIN: [32, 64]
CMAKE: [3.1.3, 3.21.2]
CONFIG: [Release]
STD: [99]
BIN: [64]
CMAKE: [3.21.2]
env:
CMAKE_URL: https://github.com/Kitware/CMake/releases/download/v${{ matrix.CMAKE }}/cmake-${{ matrix.CMAKE }}-Linux-x86_64.tar.gz
CMAKE_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cmake
CTEST_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/ctest


steps:
- name: Checkout OpenCL-ICD-Loader
uses: actions/checkout@v2
- name: Get sha of Headers
id: get-sha
run: |
echo ::set-output name=sha::$( curl -u "u:${{github.token}}" https://api.github.com/repos/KhronosGroup/OpenCL-Headers/git/ref/heads/main | jq .object.sha | tr -d '"' )

- uses: actions/cache@v2
name: Cache Headers
id: headers
env:
cache-name: cache-headers
with:
path: external/OpenCL-Headers/install
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ steps.get-sha.outputs.sha }}

- name: Checkout OpenCL-Headers
if: steps.headers.outputs.cache-hit != 'true'
uses: actions/checkout@v2
with:
repository: KhronosGroup/OpenCL-Headers
path: external/OpenCL-Headers

- name: Create Build Environment
if: steps.headers.outputs.cache-hit != 'true'
run: sudo apt-get update -q;
if [[ "${{matrix.GEN}}" =~ "Ninja" && ! `which ninja` ]]; then sudo apt install -y ninja-build; fi;
sudo apt install -y ${{matrix.COMPILER}};
Expand All @@ -40,9 +53,9 @@ jobs:
mkdir -p /opt/Kitware/CMake;
wget -c $CMAKE_URL -O - | tar -xz --directory /opt/Kitware/CMake;
mv /opt/Kitware/CMake/cmake-${{ matrix.CMAKE }}-* /opt/Kitware/CMake/${{ matrix.CMAKE }}
# Install Ninja only if it's the selected generator and it's not available.


- name: Build & install OpenCL-Headers
if: steps.headers.outputs.cache-hit != 'true'
run: $CMAKE_EXE
-G "${{matrix.GEN}}"
-D CMAKE_BUILD_TYPE=${{matrix.CONFIG}}
Expand All @@ -59,6 +72,55 @@ jobs:
--
-j`nproc`


cmake-minimum:
needs: [headers]
runs-on: ${{ matrix.OS }}
strategy:
matrix:
OS: [ubuntu-18.04]
COMPILER: [gcc-7, gcc-8, clang-8, clang-10]
EXT: [ON, OFF]
GEN: [Unix Makefiles]
CONFIG: [Debug, Release]
STD: [99, 11]
BIN: [32, 64]
CMAKE: [3.1.3, 3.21.2]
env:
CMAKE_URL: https://github.com/Kitware/CMake/releases/download/v${{ matrix.CMAKE }}/cmake-${{ matrix.CMAKE }}-Linux-x86_64.tar.gz
CMAKE_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cmake
CTEST_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/ctest


steps:
- name: Checkout OpenCL-ICD-Loader
uses: actions/checkout@v2

- name: Get sha of Headers
id: get-sha
run: |
echo ::set-output name=sha::$( curl -u "u:${{github.token}}" https://api.github.com/repos/KhronosGroup/OpenCL-Headers/git/ref/heads/main | jq .object.sha | tr -d '"' )

- uses: actions/cache@v2
name: Restore Headers
id: headers
env:
cache-name: cache-headers
with:
path: external/OpenCL-Headers/install
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ steps.get-sha.outputs.sha }}

- name: Create Build Environment
run: sudo apt-get update -q;
if [[ "${{matrix.GEN}}" =~ "Ninja" && ! `which ninja` ]]; then sudo apt install -y ninja-build; fi;
sudo apt install -y ${{matrix.COMPILER}};
if [[ "${{matrix.BIN}}" == "32" && "${{matrix.COMPILER}}" =~ "gcc" ]]; then sudo apt install -y ${{matrix.COMPILER}}-multilib; fi;
if [[ "${{matrix.BIN}}" == "32" && "${{matrix.COMPILER}}" =~ "clang" ]]; then sudo apt install -y gcc-multilib ; fi;
mkdir -p /opt/Kitware/CMake;
wget -c $CMAKE_URL -O - | tar -xz --directory /opt/Kitware/CMake;
mv /opt/Kitware/CMake/cmake-${{ matrix.CMAKE }}-* /opt/Kitware/CMake/${{ matrix.CMAKE }}
# Install Ninja only if it's the selected generator and it's not available.

- name: Configure
shell: bash
run: $CMAKE_EXE
Expand Down Expand Up @@ -137,6 +199,7 @@ jobs:


cmake-latest:
needs: [headers]
runs-on: ${{ matrix.OS }}
strategy:
matrix:
Expand All @@ -157,11 +220,19 @@ jobs:
- name: Checkout OpenCL-ICD-Loader
uses: actions/checkout@v2

- name: Checkout OpenCL-Headers
uses: actions/checkout@v2
- name: Get sha of Headers
id: get-sha
run: |
echo ::set-output name=sha::$( curl -u "u:${{github.token}}" https://api.github.com/repos/KhronosGroup/OpenCL-Headers/git/ref/heads/main | jq .object.sha | tr -d '"' )

- uses: actions/cache@v2
name: Restore Headers
id: headers
env:
cache-name: cache-headers
with:
repository: KhronosGroup/OpenCL-Headers
path: external/OpenCL-Headers
path: external/OpenCL-Headers/install
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ steps.get-sha.outputs.sha }}

- name: Create Build Environment
run: sudo apt-get update -q;
Expand All @@ -176,23 +247,6 @@ jobs:
mv /opt/Kitware/CMake/cmake-${{ matrix.CMAKE }}-* /opt/Kitware/CMake/${{ matrix.CMAKE }}
# Install Ninja only if it's the selected generator and it's not available.

- name: Build & install OpenCL-Headers
run: $CMAKE_EXE
-G "${{matrix.GEN}}"
-D CMAKE_C_FLAGS="-w -m${{matrix.BIN}}"
-D CMAKE_C_COMPILER=${{matrix.COMPILER}}
-D CMAKE_C_STANDARD=${{matrix.STD}}
-D CMAKE_C_EXTENSIONS=${{matrix.EXT}}
-D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-Headers/install
-B $GITHUB_WORKSPACE/external/OpenCL-Headers/build
-S $GITHUB_WORKSPACE/external/OpenCL-Headers;
$CMAKE_EXE
--build $GITHUB_WORKSPACE/external/OpenCL-Headers/build
--target install
--config Release
--
-j`nproc`

- name: Configure
shell: bash
run: $CMAKE_EXE
Expand Down
68 changes: 59 additions & 9 deletions .github/workflows/macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,33 +3,48 @@ name: MacOS
on: [push, pull_request]

jobs:
macos-gcc:

headers:
name: Build and cache Headers
runs-on: macos-latest
strategy:
matrix:
VER: [9, 10, 11]
EXT: [ON, OFF]
GEN: [Xcode, Ninja Multi-Config]
STD: [99, 11] # 90 results in errors
VER: [11]
EXT: [ON]
GEN: [Xcode]
STD: [11] # 90 results in errors

steps:
- name: Checkout OpenCL-ICD-Loader
uses: actions/checkout@v2
- name: Get sha of Headers
id: get-sha
run: |
echo ::set-output name=sha::$( curl -u "u:${{github.token}}" https://api.github.com/repos/KhronosGroup/OpenCL-Headers/git/ref/heads/main | jq .object.sha | tr -d '"' )

- uses: actions/cache@v2
name: Cache Headers
id: headers
env:
cache-name: cache-headers
with:
path: external/OpenCL-Headers/install
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ steps.get-sha.outputs.sha }}

- name: Checkout OpenCL-Headers
if: steps.headers.outputs.cache-hit != 'true'
uses: actions/checkout@v2
with:
repository: KhronosGroup/OpenCL-Headers
path: external/OpenCL-Headers

- name: Create Build Environment
if: steps.headers.outputs.cache-hit != 'true'
run: |
cmake -E make_directory $GITHUB_WORKSPACE/build;
cmake -E make_directory $GITHUB_WORKSPACE/install;
if [[ "${{matrix.GEN}}" == "Ninja Multi-Config" && ! `which ninja` ]]; then brew install ninja; fi;
# Install Ninja only if it's the selected generator and it's not available.

- name: Build & install OpenCL-Headers
if: steps.headers.outputs.cache-hit != 'true'
run: cmake
-G "${{matrix.GEN}}"
-D CMAKE_C_FLAGS="-w"
Expand All @@ -45,6 +60,41 @@ jobs:
--config Release
--parallel `sysctl -n hw.logicalcpu`

macos-gcc:
needs: [headers]
runs-on: macos-latest
strategy:
matrix:
VER: [9, 10, 11]
EXT: [ON, OFF]
GEN: [Xcode, Ninja Multi-Config]
STD: [99, 11] # 90 results in errors

steps:
- name: Checkout OpenCL-ICD-Loader
uses: actions/checkout@v2

- name: Get sha of Headers
id: get-sha
run: |
echo ::set-output name=sha::$( curl -u "u:${{github.token}}" https://api.github.com/repos/KhronosGroup/OpenCL-Headers/git/ref/heads/main | jq .object.sha | tr -d '"' )

- uses: actions/cache@v2
name: Restore Headers
id: headers
env:
cache-name: cache-headers
with:
path: external/OpenCL-Headers/install
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ steps.get-sha.outputs.sha }}

- name: Create Build Environment
run: |
cmake -E make_directory $GITHUB_WORKSPACE/build;
cmake -E make_directory $GITHUB_WORKSPACE/install;
if [[ "${{matrix.GEN}}" == "Ninja Multi-Config" && ! `which ninja` ]]; then brew install ninja; fi;
# Install Ninja only if it's the selected generator and it's not available.

- name: Configure CMake
# no -Werror during configuration because:
# warning: ISO C forbids assignment between function pointer and ‘void *’ [-Wpedantic]
Expand Down Expand Up @@ -93,4 +143,4 @@ jobs:
if: matrix.GEN == 'Ninja Multi-Config'
shell: bash
run: |
cmake --build $GITHUB_WORKSPACE/build --config Release --target install
cmake --build $GITHUB_WORKSPACE/build --config Release --target install
Loading