-
Notifications
You must be signed in to change notification settings - Fork 2
139 lines (119 loc) · 4.43 KB
/
py-wheel-check.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
131
132
133
134
135
136
137
138
139
on:
push:
branches: [main, master, 'hotfix/*', 'release/*', develop, 'feature/py-*']
pull_request:
branches: [main, master, 'hotfix/*', 'release/*', develop]
name: py-wheel-check
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
python-version: ['3.10', '3.11', '3.12']
defaults:
run:
working-directory: python
name: ${{ matrix.os }} (${{ matrix.python-version }})
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Set system dependencies on Linux
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y libboost-all-dev libeigen3-dev
echo $(sudo apt list --installed)
echo "EIGEN_INCLUDE_DIR=/usr/include/eigen3" >> $GITHUB_ENV
echo "BOOST_INCLUDE_DIR=/usr/include/boost" >> $GITHUB_ENV
- name: Set system dependencies on macOS
if: runner.os == 'macOS'
run: |
brew update
brew install llvm libomp boost eigen
EIGEN_LOC=$(brew --prefix eigen)
BOOST_LOC=$(brew --prefix boost)
LLVM_LOC=$(brew --prefix llvm)
OMP_LOC=$(brew --prefix libomp)
echo "EIGEN_INCLUDE_DIR=$EIGEN_LOC/include/eigen3" >> $GITHUB_ENV
echo "BOOST_INCLUDE_DIR=$BOOST_LOC/include" >> $GITHUB_ENV
echo "LLVM_LOC=$LLVM_LOC" >> $GITHUB_ENV
echo "OMP_LOC=$OMP_LOC" >> $GITHUB_ENV
echo "CC=$LLVM_LOC/bin/clang" >> $GITHUB_ENV
echo "CXX=$LLVM_LOC/bin/clang++" >> $GITHUB_ENV
echo "CPPFLAGS=-I$LLVM_LOC/include -I$OMP_LOC/include" >> $GITHUB_ENV
echo "LDFLAGS=-L$LLVM_LOC/lib -L$OMP_LOC/lib" >> $GITHUB_ENV
- name: Set system dependencies on Windows
if: runner.os == 'Windows'
run: |
choco install eigen -y --no-progress
choco install boost-msvc-14.3 -y --no-progress
$eigenPath = (
Get-ChildItem -Path "C:\ProgramData\chocolatey\lib\eigen" -Recurse -Filter "Eigen" |
Select-Object -First 1
).Parent.FullName
if ($eigenPath) {
echo "eigen is installed in $eigenPath"
} else {
Write-Error "Wrong eigen path"
exit 1
}
$boostPath = $null
$boostCand = @("C:\local", "C:\ProgramData\chocolatey\lib")
foreach ($cand in $boostCand) {
$isPath = (
Get-ChildItem -Path $cand -Directory |
Where-Object { $_.Name -match "boost" } |
Sort-Object LastWriteTime -Descending |
Select-Object -First 1
).FullName
if ($isPath) {
$boostPath = $isPath
break
}
}
if ($boostPath) {
echo "boost is installed in $boostPath"
} else {
Write-Error "Wrong boost path"
exit 1
}
echo "EIGEN_INCLUDE_DIR=$eigenPath" >> $Env:GITHUB_ENV
echo "BOOST_INCLUDE_DIR=$boostPath" >> $Env:GITHUB_ENV
- name: Verify Eigen and boost on non-Windows
if: runner.os != 'Windows'
run: |
ls ${{ env.EIGEN_INCLUDE_DIR }}
ls ${{ env.BOOST_INCLUDE_DIR }}
- name: Verify Eigen and boost on Windows
if: runner.os == 'Windows'
run: |
dir ${{ env.EIGEN_INCLUDE_DIR }}
dir ${{ env.BOOST_INCLUDE_DIR }}
- name: Install requirements
run: |
pip install --upgrade pip
pip install -r requirements/requirements.txt
- name: Verify pip
run: pip list
- name: Build wheel
run: |
pip install build
python -m build --wheel .
- name: Install wheel on non-Windows
if: runner.os != 'Windows'
run: pip install dist/*.whl
- name: Install wheel on Windows
if: runner.os == 'Windows'
run: |
$whl = (Get-ChildItem -Path dist -Filter "*.whl" | Select-Object -First 1).FullName
pip install $whl
- name: Verify installation
run: pip list
- name: OpenMP check
run: python -c "from bvhar.utils import checkomp; checkomp.check_omp()"
- name: Test
run: pytest