-
-
Notifications
You must be signed in to change notification settings - Fork 1k
148 lines (129 loc) · 4.05 KB
/
python.yml
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
name: Python bindings
on:
push:
branches: [ RC_1_2 RC_2_0 master ]
paths:
- src/**
- include/**
- deps/**
- Jamfile
- Jamroot.jam
- bindings/python/**
- setup.py
- setup.cfg
- tox.ini
- pyproject.toml
pull_request:
paths:
- src/**
- include/**
- deps/**
- Jamfile
- Jamroot.jam
- bindings/python/**
- setup.py
- setup.cfg
- tox.ini
- pyproject.toml
concurrency:
group: ${{ github.ref }}-${{ github.workflow }}-${{ github.event_name }}
cancel-in-progress: true
env:
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1
HOMEBREW_NO_AUTO_UPDATE: 1
jobs:
test:
name: build
runs-on: ${{ matrix.os }}
strategy:
# on linux and mac, the boost libraries are fixed to a python version.
# since we install boost from repos on those systems, we must use the
# matching python versions
matrix:
include:
- os: ubuntu-20.04
python-version: 3.8
- os: macos-latest
python-version: "3.12"
- os: windows-2022
python-version: 3.6
steps:
- uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 1
filter: tree:0
# Note:
# - on mac and linux images, 'python' is python2 and 'python3' is
# python3
# - on windows, neither 'python' nor 'python3' is in PATH by default
# - setup-python sets up PATH so 'python' and 'python3' point to the
# requested version on mac and linux, but on windows it only sets up
# 'python'.
- uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: install tox
run: |
python3 -m pip install --upgrade pip
python3 -m pip install --upgrade tox
- name: dependencies (MacOS)
if: runner.os == 'macOS'
run: |
brew install boost-build boost boost-python3 python@3.12 openssl@3 python-setuptools
export PATH=$(brew --prefix)/opt/python@3.12/bin:$PATH
- name: update package lists (linux)
if: runner.os == 'Linux'
continue-on-error: true
run: |
sudo apt update
- uses: Chocobo1/setup-ccache-action@v1
if: runner.os != 'Windows'
with:
update_packager_index: false
override_cache_key: ccache-python-${{ matrix.os }}-${{ github.base_ref }}
ccache_options: |
max_size=500M
- name: dependencies (linux)
if: runner.os == 'Linux'
run: |
sudo apt install libboost-tools-dev libboost-python-dev libboost-dev libboost-system-dev python3 python3-setuptools libssl-dev
- name: install boost (windows)
if: runner.os == 'Windows'
shell: cmd
run: |
git clone --depth=1 --recurse-submodules -j10 --branch=boost-1.78.0 https://github.com/boostorg/boost.git
cd boost
bootstrap.bat
- name: boost headers (windows)
if: runner.os == 'Windows'
shell: cmd
run: |
cd boost
.\b2 headers
- name: build/test with tox (windows)
if: runner.os == 'Windows'
shell: cmd
run: |
set BOOST_ROOT=%CD%\boost
set PATH=%BOOST_ROOT%;%PATH%
set PYTHON_INTERPRETER=python
tox -e py
- name: build no-deprecated (Linux)
if: runner.os == 'Linux'
run: |
cd bindings/python
python3 setup.py build_ext --b2-args "deprecated-functions=off"
- name: tests (Linux)
if: runner.os == 'Linux'
run: |
# Exporting SYSTEM_VERSION_COMPAT=0 helps pip allow install macos 11 tagged wheels. Ref https://github.com/pypa/packaging/issues/497
export SYSTEM_VERSION_COMPAT=0
tox -e py
- name: tests (MacOS)
if: runner.os == 'macOS'
run: |
# Exporting SYSTEM_VERSION_COMPAT=0 helps pip allow install macos 11 tagged wheels. Ref https://github.com/pypa/packaging/issues/497
export SYSTEM_VERSION_COMPAT=0
export PYTHON_INTERPRETER=$(brew --prefix)/opt/python@3.12/bin/python3
tox -e py