Skip to content

Commit de886c4

Browse files
authored
Merge pull request #120 from sdpython/ci
Improves CI
2 parents 17859ed + 2442216 commit de886c4

20 files changed

+366
-399
lines changed

.github/workflows/mypy.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
name: Type annotation with mypy
2+
on: [push, pull_request]
3+
jobs:
4+
mypy:
5+
runs-on: ubuntu-latest
6+
steps:
7+
- uses: actions/checkout@v3
8+
- uses: actions/setup-python@v4
9+
with:
10+
python-version: '3.11'
11+
- name: Install mypy
12+
run: pip install mypy
13+
- name: Run mypy
14+
run: mypy

.github/workflows/wheels-linux.yml

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,19 @@ name: Build Wheel Linux
22

33
on:
44
push:
5+
# branches:
6+
# - main
7+
# - 'releases/**'
8+
pull_request:
9+
types:
10+
- closed
511
branches:
612
- main
7-
- 'releases/**'
13+
#on:
14+
# push:
15+
# branches:
16+
# - main
17+
# - 'releases/**'
818

919
jobs:
1020
build_wheels:
@@ -20,7 +30,7 @@ jobs:
2030
# Used to host cibuildwheel
2131
- uses: actions/setup-python@v4
2232
with:
23-
python-version: '3.10'
33+
python-version: '3.11'
2434

2535
- name: Install cibuildwheel
2636
run: python -m pip install cibuildwheel
@@ -30,10 +40,6 @@ jobs:
3040

3141
- name: Build wheels
3242
run: python -m cibuildwheel --output-dir wheelhouse
33-
# to supply options, put them in 'env', like:
34-
#env:
35-
# # CIBW_BUILD: "cp310* cp311*"
36-
# CIBW_SKIP: cp36-* cp37-* cp38-* cp39-*
3743

3844
- uses: actions/upload-artifact@v3
3945
with:

.github/workflows/wheels-mac.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@ name: Build Wheel MacOS
22

33
on:
44
push:
5+
# branches:
6+
# - main
7+
# - 'releases/**'
8+
pull_request:
9+
types:
10+
- closed
511
branches:
612
- main
713
- 'releases/**'
@@ -30,9 +36,6 @@ jobs:
3036

3137
- name: Build wheels
3238
run: python -m cibuildwheel --output-dir wheelhouse
33-
# to supply options, put them in 'env', like:
34-
#env:
35-
# CIBW_BUILD: cp311*
3639

3740
- uses: actions/upload-artifact@v3
3841
with:

.github/workflows/wheels-windows.yml

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,14 @@ name: Build Wheel Windows
22

33
on:
44
push:
5+
# branches:
6+
# - main
7+
# - 'releases/**'
8+
pull_request:
9+
types:
10+
- closed
511
branches:
612
- main
7-
- 'releases/**'
813

914
jobs:
1015
build_wheels:
@@ -30,9 +35,6 @@ jobs:
3035

3136
- name: Build wheels
3237
run: python -m cibuildwheel
33-
# to supply options, put them in 'env', like:
34-
# env:
35-
# CIBW_BUILD: cp310-win_amd64* cp311-win_amd64*
3638

3739
- uses: actions/upload-artifact@v3
3840
with:

MANIFEST.in

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
1-
recursive-include mlinsights *.c *.cpp *.h *.pyx *.pxd *.pxi *.py
1+
recursive-include mlinsights *.c *.cpp *.h *.pyx *.pxd *.pxi *.py _cmake *.cmake *.in
22
include pyproject.toml
33
include MANIFEST.in
44
include setup.cfg
55
prune _doc
66
prune _unittests
7-
prune bin
87
exclude *.bat
98
exclude *.yml
109
exclude *.git*

_cmake/CMakeLists.txt

Lines changed: 14 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,10 @@
1-
cmake_minimum_required(VERSION 3.24.0)
1+
cmake_minimum_required(VERSION 3.25.0)
22
project(mlinsights VERSION ${MLINSIGHTS_VERSION})
33

4-
# CUDA is not used.
5-
set(USE_CUDA 0)
6-
7-
#
8-
# initialisation
9-
#
10-
11-
message(STATUS "-------------------")
12-
message(STATUS "MLINSIGHTS_VERSION=${MLINSIGHTS_VERSION}")
13-
message(STATUS "CMAKE_VERSION=${CMAKE_VERSION}")
14-
message(STATUS "CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}")
15-
message(STATUS "CMAKE_C_COMPILER_VERSION=${CMAKE_C_COMPILER_VERSION}")
16-
message(STATUS "CMAKE_CXX_COMPILER_VERSION=${CMAKE_CXX_COMPILER_VERSION}")
17-
message(STATUS "USE_SETUP_PYTHON=${USE_SETUP_PYTHON}")
18-
message(STATUS "USE_PYTHON_SETUP=${USE_PYTHON_SETUP}")
19-
message(STATUS "PYTHON_VERSION=${PYTHON_VERSION}")
20-
message(STATUS "PYTHON_VERSION_MM=${PYTHON_VERSION_MM}")
21-
message(STATUS "PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}")
22-
message(STATUS "PYTHON_INCLUDE_DIR=${PYTHON_INCLUDE_DIR}")
23-
message(STATUS "PYTHON_LIBRARY=${PYTHON_LIBRARY}")
24-
message(STATUS "PYTHON_LIBRARY_DIR=${PYTHON_LIBRARY_DIR}")
25-
message(STATUS "PYTHON_NUMPY_INCLUDE_DIR=${PYTHON_NUMPY_INCLUDE_DIR}")
26-
message(STATUS "PYTHON_MODULE_EXTENSION=${PYTHON_MODULE_EXTENSION}")
27-
message(STATUS "PYTHON_NUMPY_VERSION=${PYTHON_NUMPY_VERSION}")
28-
message(STATUS "USE_CUDA=${USE_CUDA}")
29-
# message(STATUS "CUDA_BUILD=${CUDA_BUILD}")
30-
# message(STATUS "CUDA_LINK=${CUDA_LINK}")
31-
message(STATUS "USE_NVTX=${USE_NVTX}")
32-
message(STATUS "ORT_VERSION=${ORT_VERSION}")
33-
34-
# message(STATUS "ENV-PATH=$ENV{PATH}")
35-
# message(STATUS "ENV-PYTHONPATH=$ENV{PYTHONPATH}")
36-
message(STATUS "--------------------------------------------")
37-
message(STATUS "--------------------------------------------")
38-
message(STATUS "--------------------------------------------")
394

405
# Don't let cmake set a default value for CMAKE_CUDA_ARCHITECTURES
416
# see https://cmake.org/cmake/help/latest/policy/CMP0104.html
427
# cmake_policy(SET CMP0104 OLD) # deprecated
43-
file(WRITE "../_setup_ext.txt" "")
448

459
list(APPEND CMAKE_MODULE_PATH
4610
"${CMAKE_CURRENT_SOURCE_DIR}"
@@ -66,6 +30,12 @@ message(STATUS "ROOT_INCLUDE_PATH=${ROOT_INCLUDE_PATH}")
6630
message(STATUS "ROOT_UNITTEST_PATH=${ROOT_UNITTEST_PATH}")
6731
message(STATUS "--------------------------------------------")
6832

33+
#
34+
# common libraries for everything
35+
#
36+
37+
include("targets/common.cmake")
38+
6939
#
7040
# standalone modules
7141
#
@@ -74,6 +44,13 @@ include("targets/_tree_digitize_cy.cmake")
7444
include("targets/direct_blas_lapack_cy.cmake")
7545
include("targets/piecewise_cy.cmake")
7646

47+
#
48+
#
49+
# finalize
50+
#
51+
52+
include("finalize.cmake")
53+
7754
#
7855
# write version
7956
#

_cmake/constants.cmake

Lines changed: 138 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,44 @@
1+
2+
if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.24.0")
3+
cmake_policy(SET CMP0135 NEW)
4+
cmake_policy(SET CMP0077 NEW)
5+
endif()
6+
7+
#
8+
# initialisation
9+
#
10+
11+
message(STATUS "--------------------------------------------")
12+
message(STATUS "--------------------------------------------")
13+
message(STATUS "--------------------------------------------")
14+
message(STATUS "ONNX_EXTENDED_VERSION=${ONNX_EXTENDED_VERSION}")
15+
message(STATUS "CMAKE_VERSION=${CMAKE_VERSION}")
16+
message(STATUS "CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}")
17+
message(STATUS "CMAKE_C_COMPILER_VERSION=${CMAKE_C_COMPILER_VERSION}")
18+
message(STATUS "CMAKE_CXX_COMPILER_VERSION=${CMAKE_CXX_COMPILER_VERSION}")
19+
message(STATUS "USE_SETUP_PYTHON=${USE_SETUP_PYTHON}")
20+
message(STATUS "USE_PYTHON_SETUP=${USE_PYTHON_SETUP}")
21+
message(STATUS "PYTHON_VERSION=${PYTHON_VERSION}")
22+
message(STATUS "PYTHON_VERSION_MM=${PYTHON_VERSION_MM}")
23+
message(STATUS "PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}")
24+
message(STATUS "PYTHON_INCLUDE_DIR=${PYTHON_INCLUDE_DIR}")
25+
message(STATUS "PYTHON_LIBRARY=${PYTHON_LIBRARY}")
26+
message(STATUS "PYTHON_LIBRARY_DIR=${PYTHON_LIBRARY_DIR}")
27+
message(STATUS "PYTHON_NUMPY_INCLUDE_DIR=${PYTHON_NUMPY_INCLUDE_DIR}")
28+
message(STATUS "PYTHON_MODULE_EXTENSION=${PYTHON_MODULE_EXTENSION}")
29+
message(STATUS "PYTHON_NUMPY_VERSION=${PYTHON_NUMPY_VERSION}")
30+
message(STATUS "USE_CUDA=${USE_CUDA}")
31+
message(STATUS "CUDA_BUILD=${CUDA_BUILD}")
32+
message(STATUS "CUDA_LINK=${CUDA_LINK}")
33+
message(STATUS "USE_NVTX=${USE_NVTX}")
34+
message(STATUS "ORT_VERSION=${ORT_VERSION}")
35+
message(STATUS "PYTHON_MANYLINUX=${PYTHON_MANYLINUX}")
36+
message(STATUS "SETUP_BUILD_PATH=${SETUP_BUILD_PATH}")
37+
message(STATUS "SETUP_BUILD_LIB=${SETUP_BUILD_LIB}")
38+
message(STATUS "--------------------------------------------")
39+
message(STATUS "--------------------------------------------")
40+
message(STATUS "--------------------------------------------")
41+
142
#
243
# python extension
344
#
@@ -9,21 +50,86 @@ else()
950
set(DLLEXT "so")
1051
endif()
1152

53+
if(NOT CMAKE_BUILD_TYPE)
54+
set(CMAKE_BUILD_TYPE Release)
55+
endif()
56+
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g")
57+
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3") # -DNDEBUG
58+
59+
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g")
60+
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3") # -DNDEBUG
61+
1262
#
13-
# C++ 14 or C++ 17
63+
# C++ 14 or C++ 17 or...
1464
#
15-
if(MSVC)
16-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++17")
65+
if (PYTHON_MANYLINUX EQUAL "1")
66+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
67+
set(CMAKE_CXX_EXTENSIONS OFF)
68+
set(CMAKE_CXX_STANDARD 17)
69+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-unknown-pragmas -Wextra")
70+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wno-unknown-pragmas -Wextra")
71+
if(APPLE)
72+
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15")
73+
elseif(MSVC)
74+
# nothing
75+
else()
76+
execute_process(
77+
COMMAND ldd --version | grep "ldd (.*)"
78+
OUTPUT_VARIABLE ldd_version_output
79+
ERROR_VARIABLE ldd_version_error
80+
RESULT_VARIABLE ldd_version_result)
81+
endif()
1782
else()
18-
if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL "11")
19-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")
83+
if(MSVC)
84+
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++17")
85+
set(CMAKE_CXX_STANDARD 17)
86+
elseif(APPLE)
87+
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15")
88+
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")
89+
set(CMAKE_CXX_STANDARD 17)
90+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-unknown-pragmas -Wextra")
91+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wno-unknown-pragmas -Wextra")
2092
else()
21-
if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL "6")
22-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
93+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-unknown-pragmas -Wextra")
94+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wno-unknown-pragmas -Wextra")
95+
if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL "15")
96+
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++23")
97+
set(CMAKE_CXX_STANDARD 23)
98+
elseif(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL "11")
99+
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++20")
100+
set(CMAKE_CXX_STANDARD 20)
101+
elseif(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL "9")
102+
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")
103+
set(CMAKE_CXX_STANDARD 17)
104+
elseif(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL "6")
105+
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
106+
set(CMAKE_CXX_STANDARD 14)
23107
else()
24108
message(FATAL_ERROR "gcc>=6.0 is needed but "
25109
"${CMAKE_C_COMPILER_VERSION} was detected.")
26110
endif()
111+
# needed to build many linux build
112+
# set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lm")
113+
# set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -lm")
114+
115+
execute_process(
116+
COMMAND ldd --version | grep "ldd (.*)"
117+
OUTPUT_VARIABLE ldd_version_output
118+
ERROR_VARIABLE ldd_version_error
119+
RESULT_VARIABLE ldd_version_result)
120+
endif()
121+
endif()
122+
123+
# Disable fast-math for Intel oneAPI compiler
124+
if("${CMAKE_CXX_COMPILER_ID}" MATCHES "IntelLLVM")
125+
if("${CMAKE_CXX_COMPILER_ID}" MATCHES "MSVC-like")
126+
# Using icx-cl compiler driver with MSVC-like arguments
127+
message(STATUS "IntelLLVM + MSVC-like")
128+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /fp:precise")
129+
else()
130+
# Using icpx compiler driver
131+
message(STATUS "IntelLLVM + no MSVC")
132+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-fast-math")
27133
endif()
28134
endif()
29135

@@ -55,9 +161,31 @@ if(APPLE)
55161
set(ENV(CPPFLAGS) "-I/usr/local/opt/llvm/include")
56162
endif()
57163

58-
message(STATUS "--------------------------------------------")
164+
message(STATUS "**********************************")
165+
message(STATUS "**********************************")
166+
message(STATUS "**********************************")
167+
message(STATUS "GLIBC_VERSION=${ldd_version_output}")
168+
message(STATUS "CMAKE_C_COMPILER=${CMAKE_C_COMPILER}")
169+
message(STATUS "CMAKE_C_FLAGS_INIT=${CMAKE_C_FLAGS_INIT}")
170+
message(STATUS "CMAKE_C_FLAGS=${CMAKE_C_FLAGS}")
171+
message(STATUS "CMAKE_C_FLAGS_RELEASE=${CMAKE_C_FLAGS_RELEASE}")
172+
message(STATUS "CMAKE_C_COMPILER_VERSION=${CMAKE_C_COMPILER_VERSION}")
173+
message(STATUS "CMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}")
174+
message(STATUS "CMAKE_CXX_FLAGS_INIT=${CMAKE_CXX_FLAGS_INIT}")
59175
message(STATUS "CMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}")
176+
message(STATUS "CMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}")
177+
message(STATUS "CMAKE_CXX_COMPILER_ID=${CMAKE_CXX_COMPILER_ID}")
178+
message(STATUS "CMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}")
179+
message(STATUS "CMAKE_CXX_STANDARD_REQUIRED=${CMAKE_CXX_STANDARD_REQUIRED}")
180+
message(STATUS "CMAKE_CXX_EXTENSIONS=${CMAKE_CXX_EXTENSIONS}")
181+
message(STATUS "CMAKE_EXE_LINKER_FLAGS=${CMAKE_EXE_LINKER_FLAGS}")
182+
message(STATUS "CMAKE_LINKER=${CMAKE_LINKER}")
183+
message(STATUS "CMAKE_SHARED_LINKER_FLAGS=${CMAKE_SHARED_LINKER_FLAGS}")
60184
message(STATUS "LDFLAGS=${LDFLAGS}")
61185
message(STATUS "CPPFLAGS=${CPPFLAGS}")
62-
message(STATUS "--------------------------------------------")
63-
186+
message(STATUS "DLL_EXT=${DLL_EXT}")
187+
message(STATUS "TEST_FOLDER=${TEST_FOLDER}")
188+
message(STATUS "CMAKE_CURRENT_SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}")
189+
message(STATUS "**********************************")
190+
message(STATUS "**********************************")
191+
message(STATUS "**********************************")

0 commit comments

Comments
 (0)