Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit d9bf9ab

Browse files
authoredJun 12, 2025··
Combine native platform specific workflows and add reusable actions (#625)
The following reusable actions were created to achieve this: * [ci] Create and use Save PR Info reusable action * [ci] Create and use setting up compiler reusable action * [ci] Create and use install dependencies reusable action * [ci] Create and use selecting default build type into reusable action * [ci] Merge native specific platform workflows into single main.yml workflow file * [docs] Update README.md to reference new single workflow file
1 parent 40ecc1d commit d9bf9ab

File tree

14 files changed

+580
-1229
lines changed

14 files changed

+580
-1229
lines changed
 
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
name: 'Install Dependencies'
2+
description: 'This PR installs the dependencies needed'
3+
4+
runs:
5+
using: composite
6+
steps:
7+
8+
- name: Install dependencies on MacOS
9+
if: runner.os == 'macOS'
10+
shell: bash
11+
run: |
12+
brew update --force
13+
if [[ "$(uname -m)" == "x86_64" ]]; then
14+
brew remove swiftlint
15+
else
16+
brew remove unxip
17+
fi
18+
# workaround for https://github.com/actions/setup-python/issues/577
19+
for pkg in $(brew list | grep '^python@'); do
20+
brew unlink "$pkg"
21+
brew link --overwrite "$pkg"
22+
done
23+
brew upgrade openssl >/dev/null 2>&1
24+
brew upgrade --force
25+
brew install ninja
26+
brew install eigen
27+
brew install boost
28+
brew install gnu-sed
29+
pip install distro pytest
30+
31+
- name: Install dependencies on Linux
32+
if: runner.os == 'Linux'
33+
shell: bash
34+
run: |
35+
# Install deps
36+
sudo apt-get update
37+
sudo apt-get install valgrind ninja-build
38+
sudo apt-get install git g++ debhelper devscripts gnupg python3 doxygen graphviz python3-sphinx
39+
sudo apt-get install -y libc6-dbg
40+
sudo apt-get install valgrind
41+
sudo apt autoremove
42+
sudo apt clean
43+
# Install libraries used by the cppyy test suite
44+
sudo apt install libeigen3-dev
45+
sudo apt install libboost-all-dev
46+
47+
48+
- name: Install dependencies on Windows
49+
if: runner.os == 'Windows'
50+
shell: powershell
51+
run: |
52+
choco install findutils
53+
$env:PATH="C:\Program Files (x86)\GnuWin32\bin;$env:PATH"
54+
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
name: 'Save PR Info'
2+
description: 'This PR saves the PR Info for the job'
3+
4+
runs:
5+
using: composite
6+
steps:
7+
8+
- name: Save PR Info on Unix Systems
9+
if: ${{ runner.os != 'Windows' }}
10+
shell: bash
11+
run: |
12+
mkdir -p ./pr
13+
echo ${{ github.event.number }} > ./pr/NR
14+
echo ${{ github.repository }} > ./pr/REPO
15+
16+
cling_on=$(echo "${{ matrix.cling }}" | tr '[:lower:]' '[:upper:]')
17+
if [[ "$cling_on" == "ON" ]]; then
18+
export CLING_HASH=$(git ls-remote https://github.com/root-project/cling.git refs/tags/v${{ matrix.cling-version }} | tr '\t' '-')
19+
export LLVM_HASH=$(git ls-remote https://github.com/root-project/llvm-project.git cling-llvm${{ matrix.clang-runtime}} | tr '\t' '-')
20+
else
21+
export CLING_HASH="Repl"
22+
# May need to revert back to both having same llvm_hash, as below cause llvm to be rebuilt everytime commit is made to llvm/llvm-project for release a.x
23+
# which could be quite often for new releases
24+
export LLVM_HASH=$(git ls-remote https://github.com/llvm/llvm-project.git refs/heads/release/${{ matrix.clang-runtime}}.x | tr '\t' '-')
25+
fi
26+
27+
echo "CLING_HASH=$CLING_HASH" >> $GITHUB_ENV
28+
echo "LLVM_HASH=$LLVM_HASH" >> $GITHUB_ENV
29+
30+
- name: Save PR Info on Windows systems
31+
if: runner.os == 'Windows'
32+
shell: powershell
33+
run: |
34+
#can be found
35+
mkdir ./pr
36+
echo "${{ github.event.number }}" > ./pr/NR
37+
echo ${{ github.repository }} > ./pr/REPO
38+
39+
if ( "${{ matrix.cling }}" -imatch "On" )
40+
{
41+
$env:CLING_HASH_TEMP = ( git ls-remote https://github.com/root-project/cling.git refs/tags/v${{ matrix.cling-version }} )
42+
$env:CLING_HASH = $env:CLING_HASH_TEMP -replace "\t","-"
43+
}
44+
else
45+
{
46+
$env:CLING_HASH="Repl"
47+
# May need to revert back to both having same llvm_hash, as below cause llvm to be rebuilt everytime commit is made to llvm/llvm-project for release a.x
48+
# which could be quite often for new releases
49+
$env:LLVM_HASH_TEMP = (git ls-remote https://github.com/llvm/llvm-project.git refs/heads/release/${{ matrix.clang-runtime}}.x )
50+
$env:LLVM_HASH = $env:LLVM_HASH_TEMP -replace "\t","-"
51+
}
52+
53+
echo "CLING_HASH=$env:CLING_HASH"
54+
echo "LLVM_HASH=$env:LLVM_HASH"
55+
56+
echo "CLING_HASH=$env:CLING_HASH" >> $GITHUB_ENV
57+
echo "LLVM_HASH=$env:LLVM_HASH" >> $GITHUB_ENV
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
name: 'Select Default Build Type'
2+
description: 'This action selects the default build typose'
3+
4+
runs:
5+
using: composite
6+
steps:
7+
- name: Select default build type of Unix Systems
8+
if: runner.os != 'Windows'
9+
shell: bash
10+
run: |
11+
echo "BUILD_TYPE=Release" >> $GITHUB_ENV
12+
echo "CODE_COVERAGE=0" >> $GITHUB_ENV
13+
echo "ncpus=$(sysctl -n hw.ncpu)" >> $GITHUB_ENV
14+
15+
- name: Select default build type on Windows
16+
if: runner.os == 'Windows'
17+
shell: powershell
18+
run: |
19+
echo "BUILD_TYPE=Release" >> $env:GITHUB_ENV
20+
echo "CODE_COVERAGE=0" >> $env:GITHUB_ENV
21+
$env:ncpus=$([Environment]::ProcessorCount)
22+
echo "ncpus=$env:ncpus" >> $env:GITHUB_ENV
23+
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
name: 'Setup Compiler'
2+
description: 'This PR sets up the compiler for the job'
3+
4+
runs:
5+
using: composite
6+
steps:
7+
8+
- name: Setup Compiler on MacOS
9+
if: runner.os == 'macOS'
10+
shell: bash
11+
run: |
12+
vers="${compiler#*-}"
13+
if [[ "${{ matrix.compiler }}" == *"gcc"* ]]; then
14+
brew install "gcc@$vers"
15+
echo "CC=gcc-${vers}" >> $GITHUB_ENV
16+
echo "CXX=g++-${vers}" >> $GITHUB_ENV
17+
else
18+
brew install llvm@15
19+
if [[ "$(uname -m)" == "x86_64" ]]; then
20+
echo "CC=/usr/local/opt/llvm@15/bin/clang" >> $GITHUB_ENV
21+
echo "CXX=/usr/local/opt/llvm@15/bin/clang++" >> $GITHUB_ENV
22+
else
23+
echo "CC=/opt/homebrew/opt/llvm@15/bin/clang" >> $GITHUB_ENV
24+
echo "CXX=/opt/homebrew/opt/llvm@15/bin/clang++" >> $GITHUB_ENV
25+
fi
26+
fi
27+
echo "SDKROOT=$(xcrun --sdk macosx --show-sdk-path)" >> $GITHUB_ENV
28+
env:
29+
compiler: ${{ matrix.compiler }}
30+
31+
- name: Setup Compiler on Linux
32+
if: runner.os == 'Linux'
33+
shell: bash
34+
run: |
35+
# https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html
36+
vers="${compiler#*-}"
37+
os_codename="`cat /etc/os-release | grep UBUNTU_CODENAME | cut -d = -f 2`"
38+
if [[ "${{ matrix.compiler }}" == *"gcc"* ]]; then
39+
sudo apt install -y gcc-${vers} g++-${vers} lld
40+
echo "CC=gcc-${vers}" >> $GITHUB_ENV
41+
echo "CXX=g++-${vers}" >> $GITHUB_ENV
42+
else
43+
if ! sudo apt install -y clang-${vers}; then
44+
curl https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
45+
echo "deb https://apt.llvm.org/${os_codename}/ llvm-toolchain-${os_codename}-${vers} main" | sudo tee -a /etc/apt/sources.list
46+
sudo apt-get update
47+
sudo apt-get install -y clang-${vers}
48+
fi
49+
echo "CC=clang-${vers}" >> $GITHUB_ENV
50+
echo "CXX=clang++-${vers}" >> $GITHUB_ENV
51+
fi
52+
env:
53+
compiler: ${{ matrix.compiler }}
54+
55+
- name: Save Compiler on Windows Systems
56+
if: runner.os == 'Windows'
57+
shell: powershell
58+
run: |
59+
if ( "${{ matrix.compiler }}" -imatch "clang" )
60+
{
61+
$ver="${{ matrix.compiler }}".split("-")[1]
62+
choco install llvm --version=$ver --no-progress -my
63+
clang --version
64+
#
65+
$env:CC="clang"
66+
$env:CXX="clang++"
67+
echo "CC=clang" >> $env:GITHUB_ENV
68+
echo "CXX=clang++" >> $env:GITHUB_ENV
69+
}
70+
elseif ( "${{ matrix.compiler }}" -imatch "msvc" )
71+
{
72+
# MSVC is builtin in container image
73+
}
74+
else
75+
{
76+
echo "Unsupported compiler - fix YAML file"
77+
}

‎.github/workflows/MacOS-arm.yml

Lines changed: 0 additions & 197 deletions
This file was deleted.

‎.github/workflows/MacOS.yml

Lines changed: 0 additions & 182 deletions
This file was deleted.

‎.github/workflows/Ubuntu-arm.yml

Lines changed: 0 additions & 224 deletions
This file was deleted.

‎.github/workflows/Ubuntu.yml

Lines changed: 0 additions & 213 deletions
This file was deleted.

‎.github/workflows/Windows-arm.yml

Lines changed: 0 additions & 141 deletions
This file was deleted.

‎.github/workflows/Windows.yml

Lines changed: 0 additions & 141 deletions
This file was deleted.

‎.github/workflows/deploy-pages.yml

Lines changed: 4 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -38,33 +38,11 @@ jobs:
3838
with:
3939
python-version: '3.11'
4040

41-
- name: Save PR Info on Unix systems
42-
if: ${{ runner.os != 'windows' }}
43-
run: |
44-
mkdir -p ./pr
45-
echo ${{ github.event.number }} > ./pr/NR
46-
echo ${{ github.repository }} > ./pr/REPO
47-
48-
cling_on=$(echo "${{ matrix.cling }}" | tr '[:lower:]' '[:upper:]')
49-
if [[ "$cling_on" == "ON" ]]; then
50-
export CLING_HASH=$(git ls-remote https://github.com/root-project/cling.git refs/tags/v${{ matrix.cling-version }} | tr '\t' '-')
51-
export LLVM_HASH=$(git ls-remote https://github.com/root-project/llvm-project.git cling-llvm${{ matrix.clang-runtime}} | tr '\t' '-')
52-
else
53-
export CLING_HASH="Repl"
54-
# May need to revert back to both having same llvm_hash, as below cause llvm to be rebuilt everytime commit is made to llvm/llvm-project for release a.x
55-
# which could be quite often for new releases
56-
export LLVM_HASH=$(git ls-remote https://github.com/llvm/llvm-project.git refs/heads/release/${{ matrix.clang-runtime}}.x | tr '\t' '-')
57-
fi
41+
- name: Save PR Info
42+
uses: ./.github/actions/Miscellaneous/Save_PR_Info
5843

59-
echo "CLING_HASH=$CLING_HASH" >> $GITHUB_ENV
60-
echo "LLVM_HASH=$LLVM_HASH" >> $GITHUB_ENV
61-
62-
- name: Setup default Build Type on *nux
63-
if: runner.os != 'windows'
64-
run: |
65-
echo "BUILD_TYPE=Release" >> $GITHUB_ENV
66-
echo "CODE_COVERAGE=0" >> $GITHUB_ENV
67-
echo "ncpus=$(nproc --all)" >> $GITHUB_ENV
44+
- name: Setup default Build Type
45+
uses: ./.github/actions/Miscellaneous/Select_Default_Build_Type
6846

6947
- name: install mamba
7048
uses: mamba-org/setup-micromamba@main

‎.github/workflows/emscripten.yml

Lines changed: 10 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -88,54 +88,8 @@ jobs:
8888
with:
8989
python-version: '3.11'
9090

91-
- name: Save PR Info on Unix systems
92-
if: ${{ runner.os != 'windows' }}
93-
run: |
94-
mkdir -p ./pr
95-
echo ${{ github.event.number }} > ./pr/NR
96-
echo ${{ github.repository }} > ./pr/REPO
97-
98-
cling_on=$(echo "${{ matrix.cling }}" | tr '[:lower:]' '[:upper:]')
99-
if [[ "$cling_on" == "ON" ]]; then
100-
export CLING_HASH=$(git ls-remote https://github.com/root-project/cling.git refs/tags/v${{ matrix.cling-version }} | tr '\t' '-')
101-
export LLVM_HASH=$(git ls-remote https://github.com/root-project/llvm-project.git cling-llvm${{ matrix.clang-runtime}} | tr '\t' '-')
102-
else
103-
export CLING_HASH="Repl"
104-
# May need to revert back to both having same llvm_hash, as below cause llvm to be rebuilt everytime commit is made to llvm/llvm-project for release a.x
105-
# which could be quite often for new releases
106-
export LLVM_HASH=$(git ls-remote https://github.com/llvm/llvm-project.git refs/heads/release/${{ matrix.clang-runtime}}.x | tr '\t' '-')
107-
fi
108-
109-
echo "CLING_HASH=$CLING_HASH" >> $GITHUB_ENV
110-
echo "LLVM_HASH=$LLVM_HASH" >> $GITHUB_ENV
111-
112-
- name: Save PR Info on Windows systems
113-
if: ${{ runner.os == 'windows' }}
114-
run: |
115-
#can be found
116-
mkdir ./pr
117-
echo "${{ github.event.number }}" > ./pr/NR
118-
echo ${{ github.repository }} > ./pr/REPO
119-
120-
if ( "${{ matrix.cling }}" -imatch "On" )
121-
{
122-
$env:CLING_HASH_TEMP = ( git ls-remote https://github.com/root-project/cling.git refs/tags/v${{ matrix.cling-version }} )
123-
$env:CLING_HASH = $env:CLING_HASH_TEMP -replace "\t","-"
124-
}
125-
else
126-
{
127-
$env:CLING_HASH="Repl"
128-
# May need to revert back to both having same llvm_hash, as below cause llvm to be rebuilt everytime commit is made to llvm/llvm-project for release a.x
129-
# which could be quite often for new releases
130-
$env:LLVM_HASH_TEMP = (git ls-remote https://github.com/llvm/llvm-project.git refs/heads/release/${{ matrix.clang-runtime}}.x )
131-
$env:LLVM_HASH = $env:LLVM_HASH_TEMP -replace "\t","-"
132-
}
133-
134-
echo "CLING_HASH=$env:CLING_HASH"
135-
echo "LLVM_HASH=$env:LLVM_HASH"
136-
137-
echo "CLING_HASH=$env:CLING_HASH" >> $GITHUB_ENV
138-
echo "LLVM_HASH=$env:LLVM_HASH" >> $GITHUB_ENV
91+
- name: Save PR Info
92+
uses: ./.github/actions/Miscellaneous/Save_PR_Info
13993

14094
- name: Restore cached LLVM-${{ matrix.clang-runtime }} and ${{ matrix.cling == 'On' && 'Cling' || 'Clang-REPL' }} build (Unix like systems emscripten)
14195
uses: actions/cache/restore@v4
@@ -154,19 +108,8 @@ jobs:
154108
cd emsdk
155109
./emsdk install ${{ matrix.emsdk_ver }}
156110
157-
- name: Setup default Build Type on *nux
158-
if: ${{ runner.os != 'windows' && steps.cache.outputs.cache-hit != 'true' }}
159-
run: |
160-
echo "BUILD_TYPE=Release" >> $GITHUB_ENV
161-
echo "CODE_COVERAGE=0" >> $GITHUB_ENV
162-
163-
- name: Setup default Build Type on Windows
164-
if: ${{ runner.os == 'windows' && steps.cache.outputs.cache-hit != 'true' }}
165-
run: |
166-
echo "BUILD_TYPE=Release" >> $env:GITHUB_ENV
167-
echo "CODE_COVERAGE=0" >> $env:GITHUB_ENV
168-
$env:ncpus=$([Environment]::ProcessorCount)
169-
echo "ncpus=$env:ncpus" >> $env:GITHUB_ENV
111+
- name: Setup default Build Type
112+
uses: ./.github/actions/Miscellaneous/Select_Default_Build_Type
170113

171114
- name: Install deps on Windows
172115
if: ${{ runner.os == 'windows' && steps.cache.outputs.cache-hit != 'true' }}
@@ -486,46 +429,14 @@ jobs:
486429
with:
487430
fetch-depth: 0
488431

489-
- name: Save PR Info on Unix systems
490-
if: ${{ runner.os != 'windows' }}
491-
run: |
492-
mkdir -p ./pr
493-
echo ${{ github.event.number }} > ./pr/NR
494-
echo ${{ github.repository }} > ./pr/REPO
432+
- name: Save PR Info
433+
uses: ./.github/actions/Miscellaneous/Save_PR_Info
495434

496-
cling_on=$(echo "${{ matrix.cling }}" | tr '[:lower:]' '[:upper:]')
497-
if [[ "$cling_on" == "ON" ]]; then
498-
export CLING_HASH=$(git ls-remote https://github.com/root-project/cling.git refs/tags/v${{ matrix.cling-version }} | tr '\t' '-')
499-
export LLVM_HASH=$(git ls-remote https://github.com/root-project/llvm-project.git cling-llvm${{ matrix.clang-runtime}} | tr '\t' '-')
500-
else
501-
export CLING_HASH="Repl"
502-
# May need to revert back to both having same llvm_hash, as below cause llvm to be rebuilt everytime commit is made to llvm/llvm-project for release a.x
503-
# which could be quite often for new releases
504-
export LLVM_HASH=$(git ls-remote https://github.com/llvm/llvm-project.git refs/heads/release/${{ matrix.clang-runtime}}.x | tr '\t' '-')
505-
fi
435+
- name: Setup default Build Type
436+
uses: ./.github/actions/Miscellaneous/Select_Default_Build_Type
506437

507-
echo "CLING_HASH=$CLING_HASH" >> $GITHUB_ENV
508-
echo "LLVM_HASH=$LLVM_HASH" >> $GITHUB_ENV
509-
510-
- name: Setup default Build Type on *nux
511-
if: runner.os != 'windows'
512-
run: |
513-
echo "BUILD_TYPE=Release" >> $GITHUB_ENV
514-
echo "CODE_COVERAGE=0" >> $GITHUB_ENV
515-
os="${{ matrix.os }}"
516-
if [[ "${os}" == "macos"* ]]; then
517-
echo "ncpus=$(sysctl -n hw.ncpu)" >> $GITHUB_ENV
518-
else
519-
echo "ncpus=$(nproc --all)" >> $GITHUB_ENV
520-
fi
521-
522-
- name: Setup default Build Type on Windows
523-
if: ${{ runner.os == 'windows' }}
524-
run: |
525-
echo "BUILD_TYPE=Release" >> $env:GITHUB_ENV
526-
echo "CODE_COVERAGE=0" >> $env:GITHUB_ENV
527-
$env:ncpus=$([Environment]::ProcessorCount)
528-
echo "ncpus=$env:ncpus" >> $env:GITHUB_ENV
438+
- name: Setup default Build Type
439+
uses: ./.github/actions/Miscellaneous/Select_Default_Build_Type
529440

530441
- name: install mamba
531442
uses: mamba-org/setup-micromamba@main

‎.github/workflows/main.yml

Lines changed: 354 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,354 @@
1+
name: Native Builds
2+
3+
on:
4+
pull_request:
5+
branches: [main]
6+
push:
7+
branches: [main]
8+
release:
9+
types: [published]
10+
schedule:
11+
- cron: '30 20 * * *' # Warning: Timezone dep - 20:00 is 1:00
12+
13+
concurrency:
14+
group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
15+
cancel-in-progress: true
16+
17+
jobs:
18+
build:
19+
name: ${{ matrix.name }}
20+
runs-on: ${{ matrix.os }}
21+
strategy:
22+
fail-fast: false
23+
matrix:
24+
include:
25+
# Ubuntu Arm Jobs
26+
- name: ubu22-arm-gcc12-clang-repl-20-coverage
27+
os: ubuntu-22.04-arm
28+
compiler: gcc-12
29+
clang-runtime: '20'
30+
cling: Off
31+
cppyy: Off
32+
llvm_enable_projects: "clang"
33+
llvm_targets_to_build: "host;NVPTX"
34+
coverage: true
35+
- name: ubu24-arm-gcc12-clang-repl-20
36+
os: ubuntu-24.04-arm
37+
compiler: gcc-12
38+
clang-runtime: '20'
39+
cling: Off
40+
cppyy: Off
41+
llvm_enable_projects: "clang"
42+
llvm_targets_to_build: "host;NVPTX"
43+
- name: ubu24-arm-gcc12-clang-repl-19-cppyy
44+
os: ubuntu-24.04-arm
45+
compiler: gcc-12
46+
clang-runtime: '19'
47+
cling: Off
48+
cppyy: On
49+
llvm_enable_projects: "clang"
50+
llvm_targets_to_build: "host;NVPTX"
51+
- name: ubu24-arm-gcc12-clang-repl-18-cppyy
52+
os: ubuntu-24.04-arm
53+
compiler: gcc-12
54+
clang-runtime: '18'
55+
cling: Off
56+
cppyy: On
57+
llvm_enable_projects: "clang"
58+
llvm_targets_to_build: "host;NVPTX"
59+
- name: ubu24-arm-gcc12-clang-repl-17-cppyy
60+
os: ubuntu-24.04-arm
61+
compiler: gcc-12
62+
clang-runtime: '17'
63+
cling: Off
64+
cppyy: On
65+
llvm_enable_projects: "clang"
66+
llvm_targets_to_build: "host;NVPTX"
67+
- name: ubu24-arm-gcc12-clang-repl-16
68+
os: ubuntu-24.04-arm
69+
compiler: gcc-12
70+
clang-runtime: '16'
71+
cling: Off
72+
cppyy: Off
73+
llvm_enable_projects: "clang"
74+
llvm_targets_to_build: "host;NVPTX"
75+
- name: ubu24-arm-gcc9-clang18-cling-cppyy
76+
os: ubuntu-24.04-arm
77+
compiler: gcc-9
78+
clang-runtime: '18'
79+
cling: On
80+
cppyy: Off
81+
cling-version: '1.2'
82+
llvm_enable_projects: "clang"
83+
llvm_targets_to_build: "host;NVPTX"
84+
# Ubuntu X86 Jobs
85+
- name: ubu24-x86-gcc12-clang-repl-20
86+
os: ubuntu-24.04
87+
compiler: gcc-12
88+
clang-runtime: '20'
89+
cling: Off
90+
cppyy: Off
91+
llvm_enable_projects: "clang"
92+
llvm_targets_to_build: "host;NVPTX"
93+
- name: ubu24-x86-gcc12-clang-repl-19-cppyy
94+
os: ubuntu-24.04
95+
compiler: gcc-12
96+
clang-runtime: '19'
97+
cling: Off
98+
cppyy: On
99+
llvm_enable_projects: "clang"
100+
llvm_targets_to_build: "host;NVPTX"
101+
- name: ubu24-x86-gcc12-clang-repl-18-cppyy
102+
os: ubuntu-24.04
103+
compiler: gcc-12
104+
clang-runtime: '18'
105+
cling: Off
106+
cppyy: On
107+
llvm_enable_projects: "clang"
108+
llvm_targets_to_build: "host;NVPTX"
109+
- name: ubu24-x86-gcc12-clang-repl-17-cppyy
110+
os: ubuntu-24.04
111+
compiler: gcc-12
112+
clang-runtime: '17'
113+
cling: Off
114+
cppyy: On
115+
llvm_enable_projects: "clang"
116+
llvm_targets_to_build: "host;NVPTX"
117+
- name: ubu24-x86-gcc12-clang-repl-16
118+
os: ubuntu-24.04
119+
compiler: gcc-12
120+
clang-runtime: '16'
121+
cling: Off
122+
cppyy: Off
123+
llvm_enable_projects: "clang"
124+
llvm_targets_to_build: "host;NVPTX"
125+
- name: ubu24-x86-gcc9-clang18-cling-cppyy
126+
os: ubuntu-24.04
127+
compiler: gcc-9
128+
clang-runtime: '18'
129+
cling: On
130+
cppyy: Off
131+
cling-version: '1.2'
132+
llvm_enable_projects: "clang"
133+
llvm_targets_to_build: "host;NVPTX"
134+
# MacOS Arm Jobs
135+
- name: osx15-arm-clang-clang-repl-20
136+
os: macos-15
137+
compiler: clang
138+
clang-runtime: '20'
139+
cling: Off
140+
cppyy: Off
141+
llvm_enable_projects: "clang"
142+
llvm_targets_to_build: "host"
143+
- name: osx15-arm-clang-clang-repl-19-cppyy
144+
os: macos-15
145+
compiler: clang
146+
clang-runtime: '19'
147+
cling: Off
148+
cppyy: On
149+
llvm_enable_projects: "clang"
150+
llvm_targets_to_build: "host"
151+
- name: osx15-arm-clang-clang-repl-18-cppyy
152+
os: macos-15
153+
compiler: clang
154+
clang-runtime: '18'
155+
cling: Off
156+
cppyy: On
157+
llvm_enable_projects: "clang"
158+
llvm_targets_to_build: "host"
159+
- name: osx15-arm-clang-clang-repl-17-cppyy
160+
os: macos-15
161+
compiler: clang
162+
clang-runtime: '17'
163+
cling: Off
164+
cppyy: On
165+
llvm_enable_projects: "clang"
166+
llvm_targets_to_build: "host"
167+
- name: osx15-arm-clang-clang-repl-16
168+
os: macos-15
169+
compiler: clang
170+
clang-runtime: '16'
171+
cling: Off
172+
cppyy: Off
173+
llvm_enable_projects: "clang"
174+
llvm_targets_to_build: "host"
175+
- name: osx15-arm-clang-clang18-cling-cppyy
176+
os: macos-15
177+
compiler: clang
178+
clang-runtime: '18'
179+
cling: On
180+
cppyy: On
181+
cling-version: '1.2'
182+
llvm_enable_projects: "clang"
183+
llvm_targets_to_build: "host;NVPTX"
184+
# MacOS X86 Jobs
185+
- name: osx13-x86-clang-clang-repl-20
186+
os: macos-13
187+
compiler: clang
188+
clang-runtime: '20'
189+
cling: Off
190+
cppyy: Off
191+
llvm_enable_projects: "clang"
192+
llvm_targets_to_build: "host"
193+
- name: osx13-x86-clang-clang-repl-19-cppyy
194+
os: macos-13
195+
compiler: clang
196+
clang-runtime: '19'
197+
cling: Off
198+
cppyy: On
199+
llvm_enable_projects: "clang"
200+
llvm_targets_to_build: "host"
201+
- name: osx13-x86-clang-clang-repl-18-cppyy
202+
os: macos-13
203+
compiler: clang
204+
clang-runtime: '18'
205+
cling: Off
206+
cppyy: On
207+
llvm_enable_projects: "clang"
208+
llvm_targets_to_build: "host"
209+
- name: osx13-x86-clang-clang-repl-17-cppyy
210+
os: macos-13
211+
compiler: clang
212+
clang-runtime: '17'
213+
cling: Off
214+
cppyy: On
215+
llvm_enable_projects: "clang"
216+
llvm_targets_to_build: "host"
217+
- name: osx13-x86-clang-clang-repl-16
218+
os: macos-13
219+
compiler: clang
220+
clang-runtime: '16'
221+
cling: Off
222+
llvm_enable_projects: "clang"
223+
llvm_targets_to_build: "host"
224+
- name: osx13-x86-clang-clang18-cling-cppyy
225+
os: macos-13
226+
compiler: clang
227+
clang-runtime: '18'
228+
cling: On
229+
cppyy: On
230+
cling-version: '1.2'
231+
llvm_enable_projects: "clang"
232+
llvm_targets_to_build: "host;NVPTX"
233+
# Windows Arm Jobs
234+
- name: win11-msvc-clang-repl-20
235+
os: windows-11-arm
236+
compiler: msvc
237+
clang-runtime: '20'
238+
cling: Off
239+
llvm_enable_projects: "clang"
240+
llvm_targets_to_build: "host;NVPTX"
241+
- name: win11-msvc-clang18-cling
242+
os: windows-11-arm
243+
compiler: msvc
244+
clang-runtime: '18'
245+
cling: On
246+
cling-version: '1.2'
247+
llvm_enable_projects: "clang"
248+
llvm_targets_to_build: "host;NVPTX"
249+
# Windows X86 Jobs
250+
- name: win2025-msvc-clang-repl-20
251+
os: windows-2025
252+
compiler: msvc
253+
clang-runtime: '20'
254+
cling: Off
255+
llvm_enable_projects: "clang"
256+
llvm_targets_to_build: "host;NVPTX"
257+
- name: win2025-msvc-clang18-cling
258+
os: windows-2025
259+
compiler: msvc
260+
clang-runtime: '18'
261+
cling: On
262+
cling-version: '1.2'
263+
llvm_enable_projects: "clang"
264+
llvm_targets_to_build: "host;NVPTX"
265+
266+
steps:
267+
- uses: actions/checkout@v4
268+
with:
269+
fetch-depth: 0
270+
271+
- name: Set up Python
272+
uses: actions/setup-python@v5
273+
with:
274+
python-version: '3.11'
275+
276+
- name: Save PR Info
277+
uses: ./.github/actions/Miscellaneous/Save_PR_Info
278+
279+
- name: Restore cached LLVM-${{ matrix.clang-runtime }} and ${{ matrix.cling == 'On' && 'Cling' || 'Clang-REPL' }} build
280+
uses: actions/cache/restore@v4
281+
id: cache
282+
with:
283+
path: |
284+
llvm-project
285+
${{ matrix.cling=='On' && 'cling' || '' }}
286+
key: ${{ env.CLING_HASH }}-${{ runner.os }}-${{ matrix.os }}-${{ matrix.compiler }}-clang-${{ matrix.clang-runtime }}.x-patch-${{ hashFiles(format('patches/llvm/clang{0}-*.patch', matrix.clang-runtime)) || 'none' }}
287+
288+
- name: Setup default Build Type
289+
uses: ./.github/actions/Miscellaneous/Select_Default_Build_Type
290+
291+
- name: Setup compiler
292+
uses: ./.github/actions/Miscellaneous/Setup_Compiler
293+
294+
- name: Install dependencies
295+
uses: ./.github/actions/Miscellaneous/Install_Dependencies
296+
297+
- name: Build LLVM-${{ matrix.clang-runtime }} and ${{ matrix.cling == 'On' && 'Cling' || 'Clang-REPL' }}
298+
uses: ./.github/actions/Build_LLVM
299+
with:
300+
cache-hit: ${{ steps.cache.outputs.cache-hit }}
301+
302+
- name: Cache LLVM-${{ matrix.clang-runtime }} and ${{ matrix.cling == 'On' && 'Cling' || 'Clang-REPL' }} build
303+
uses: actions/cache/save@v4
304+
if: ${{ steps.cache.outputs.cache-hit != 'true' }}
305+
with:
306+
path: |
307+
llvm-project
308+
${{ matrix.cling=='On' && 'cling' || '' }}
309+
key: ${{ steps.cache.outputs.cache-primary-key }}
310+
311+
- name: Setup code coverage
312+
if: ${{ success() && (matrix.coverage == true) }}
313+
run: |
314+
sudo apt install lcov
315+
echo "CODE_COVERAGE=1" >> $GITHUB_ENV
316+
echo "BUILD_TYPE=Debug" >> $GITHUB_ENV
317+
318+
- name: Build and test CppInterOp
319+
uses: ./.github/actions/Build_and_Test_CppInterOp
320+
321+
- name: Prepare code coverage report
322+
if: ${{ success() && (matrix.coverage == true) }}
323+
run: |
324+
# Create lcov report
325+
# capture coverage info
326+
vers="${CC#*-}"
327+
lcov --directory build/ --capture --output-file coverage.info --gcov-tool /usr/bin/gcov-${vers}
328+
lcov --remove coverage.info '/usr/*' "${HOME}"'/.cache/*' ${{ github.workspace }}'/llvm-project/*' ${{ github.workspace }}'/unittests/*' --output-file coverage.info
329+
# output coverage data for debugging (optional)
330+
lcov --list coverage.info
331+
332+
- name: Upload to codecov.io
333+
if: ${{ success() && (matrix.coverage == true) }}
334+
uses: codecov/codecov-action@v5
335+
with:
336+
files: ./coverage.info
337+
fail_ci_if_error: true
338+
verbose: true
339+
token: ${{ secrets.CODECOV_TOKEN }}
340+
341+
- name: Build and test cppyy
342+
uses: ./.github/actions/Build_and_Test_cppyy
343+
344+
- name: Show debug info
345+
if: ${{ failure() }}
346+
run: |
347+
export
348+
echo $GITHUB_ENV
349+
350+
- name: Setup tmate session
351+
if: ${{ failure() && runner.debug }}
352+
uses: mxschmitt/action-tmate@v3
353+
# When debugging increase to a suitable value!
354+
timeout-minutes: 30

‎README.md

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,7 @@
11
# CppInterOp
22
<div align="center">
33

4-
[![Build Status](https://github.com/compiler-research/CppInterOp/actions/workflows/Ubuntu.yml/badge.svg)](https://github.com/compiler-research/CppInterOp/actions/workflows/Ubuntu.yml)
5-
[![Build Status](https://github.com/compiler-research/CppInterOp/actions/workflows/Ubuntu-arm.yml/badge.svg)](https://github.com/compiler-research/CppInterOp/actions/workflows/Ubuntu-arm.yml)
6-
[![Build Status](https://github.com/compiler-research/CppInterOp/actions/workflows/MacOS.yml/badge.svg)](https://github.com/compiler-research/CppInterOp/actions/workflows/MacOS.yml)
7-
[![Build Status](https://github.com/compiler-research/CppInterOp/actions/workflows/MacOS-arm.yml/badge.svg)](https://github.com/compiler-research/CppInterOp/actions/workflows/MacOS-arm.yml)
8-
[![Build Status](https://github.com/compiler-research/CppInterOp/actions/workflows/Windows.yml/badge.svg)](https://github.com/compiler-research/CppInterOp/actions/workflows/Windows.yml)
9-
[![Build Status](https://github.com/compiler-research/CppInterOp/actions/workflows/Windows-arm.yml/badge.svg)](https://github.com/compiler-research/CppInterOp/actions/workflows/Windows-arm.yml)
4+
[![Build Status](https://github.com/compiler-research/CppInterOp/actions/workflows/main.yml/badge.svg)](https://github.com/compiler-research/CppInterOp/actions/workflows/main.yml)
105
[![Build Status](https://github.com/compiler-research/CppInterOp/actions/workflows/emscripten.yml/badge.svg)](https://github.com/compiler-research/CppInterOp/actions/workflows/emscripten.yml)
116
[![codecov](https://codecov.io/gh/compiler-research/CppInterOp/branch/main/graph/badge.svg)](https://codecov.io/gh/compiler-research/CppInterOp)
127
[![Conda-Forge](https://img.shields.io/conda/vn/conda-forge/cppinterop)](https://github.com/conda-forge/cppinterop-feedstock)

0 commit comments

Comments
 (0)
Please sign in to comment.