-
Notifications
You must be signed in to change notification settings - Fork 0
130 lines (128 loc) · 4.89 KB
/
cmake.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
name: CI
on:
push:
branches: [ master, main ]
pull_request:
branches: [ '**' ]
jobs:
build-manylinux:
strategy:
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11"]
runs-on: ubuntu-latest
container: ghcr.io/klebert-engineering/manylinux-cpp17-py${{ matrix.python-version }}-x86_64:2024.1
env:
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
SCCACHE_GHA_ENABLED: "true"
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
- name: Run sccache-cache
uses: mozilla-actions/[email protected]
- name: Install Conan and newer Perl
run: |
pip install conan
conan profile detect
# OpenSSL Requires a newer perl: see https://github.com/openssl/openssl/issues/25366
yum update -y && yum install -y perl-IPC-Cmd rh-perl530
ldconfig /opt/rh/rh-perl530/root/lib64/
- name: Configure
run: |
export PATH="/opt/rh/rh-perl530/root/bin:$PATH"
python3 -m venv venv && . ./venv/bin/activate
pip install -U setuptools wheel pip
conan install . -s compiler.cppstd=20 -b missing -b editable \
-o with_wheel=True -o with_service=True -o with_httplib=True
cmake --preset conan-release \
-DCMAKE_C_COMPILER_LAUNCHER=sccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=sccache \
-DMAPGET_ENABLE_TESTING=True \
-DMAPGET_BUILD_EXAMPLES=True \
-GNinja
- name: Build
run: |
. ./venv/bin/activate
cmake --build --preset conan-release
cd build/Release
mv bin/wheel bin/wheel-auditme
auditwheel repair bin/wheel-auditme/mapget*.whl -w bin/wheel
- name: Test
timeout-minutes: 30
run: |
. ./venv/bin/activate
ctest --preset conan-release -C Release --verbose --no-tests=error
- name: Deploy
uses: actions/upload-artifact@v3
with:
name: mapget-py${{ matrix.python-version }}-ubuntu-latest
path: build/Release/bin/wheel/*.whl
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macos-13, windows-2019] # Currently, macos-latest is macos 12
python-version: ["3.8", "3.9", "3.10", "3.11"]
env:
SCCACHE_GHA_ENABLED: "true"
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
- name: Run sccache-cache
uses: mozilla-actions/[email protected]
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
architecture: x64
- name: Install Conan
run: |
pip install conan
conan profile detect
- run: python -m pip install setuptools wheel ninja
- name: Build (macOS)
if: matrix.os == 'macos-13'
run: |
python -m pip install delocate
export MACOSX_DEPLOYMENT_TARGET=10.15
conan install . -s compiler.cppstd=20 -b missing -b editable \
-o with_wheel=True -o with_service=True -o with_httplib=True
cmake --preset conan-release \
-DPython3_ROOT_DIR="$pythonLocation" \
-DPython3_FIND_FRAMEWORK=LAST \
-DCMAKE_C_COMPILER_LAUNCHER=sccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=sccache \
-DMAPGET_ENABLE_TESTING=ON \
-GNinja
cmake --build --preset conan-release
cd build/Release
mv bin/wheel bin/wheel-auditme # Same as on Linux
./_deps/python-cmake-wheel-src/repair-wheel-macos.bash \
"$(pwd)"/bin/wheel-auditme/mapget*.whl \
"$(pwd)"/bin/wheel mapget
- name: Enable Developer Command Prompt (Windows)
uses: ilammy/[email protected]
if: matrix.os == 'windows-latest' || matrix.os == 'windows-2019'
- name: Build (Windows)
if: matrix.os == 'windows-latest' || matrix.os == 'windows-2019'
run: |
echo "cmake -DPython3_ROOT_DIR=$env:pythonLocation"
conan install . -s compiler.cppstd=20 -b missing -b editable `
-o with_wheel=True -o with_service=True -o with_httplib=True
cmake --preset conan-default `
"-DPython3_ROOT_DIR=$env:pythonLocation" `
-DPython3_FIND_REGISTRY=LAST `
-DCMAKE_C_COMPILER_LAUNCHER=sccache `
-DCMAKE_CXX_COMPILER_LAUNCHER=sccache `
-DMAPGET_ENABLE_TESTING=YES `
-DMAPGET_BUILD_EXAMPLES=YES
cmake --build --preset conan-release
- name: Deploy
uses: actions/upload-artifact@v3
with:
name: mapget-py${{ matrix.python-version }}-${{ matrix.os }}
path: build/**/bin/wheel/*.whl
- name: Test
timeout-minutes: 30
run: |
ctest --preset conan-release -C Release --verbose --no-tests=error