From e8fa517fe2fee247c73c6eacecdce3281c77a57a Mon Sep 17 00:00:00 2001 From: Tom de Geus Date: Wed, 2 Mar 2022 17:43:56 +0100 Subject: [PATCH 1/6] CI: adding GitHub Actions runners --- .github/workflows/ci.yml | 87 ++++++++++++++++++++++++++++++++++++++++ CMakeLists.txt | 4 +- benchmark/CMakeLists.txt | 2 +- test/CMakeLists.txt | 2 +- 4 files changed, 91 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..6b75f78 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,87 @@ +name: CI + +on: + workflow_dispatch: + pull_request: + push: + branches: + - master + +jobs: + + standard: + + strategy: + fail-fast: false + matrix: + runs-on: [ubuntu-latest, macos-latest, windows-latest] + + defaults: + run: + shell: bash -l {0} + + name: ${{ matrix.runs-on }} • x64 ${{ matrix.args }} + runs-on: ${{ matrix.runs-on }} + + steps: + + - name: Basic GitHub action setup + uses: actions/checkout@v2 + + - name: Set conda environment + uses: mamba-org/provision-with-micromamba@main + with: + environment-name: myenv + environment-file: environment-dev.yml + cache-env: true + extra-specs: | + ninja + + - name: Configure using CMake + run: cmake -Bbuild -G "Ninja" -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX -DPYTHON_EXECUTABLE=`which python` -DDOWNLOAD_GTEST=ON + + - name: Install + working-directory: build + run: cmake --install . + + - name: Build xtensor-python + working-directory: build + run: cmake --build . + + - name: Test xtensor-python + working-directory: build/test + run: ./test_xtensor_python + + - name: Test xtensor-python (Python) + run: py.test -s + + - name: Example - readme 1 + working-directory: docs/source/examples/readme_example_1 + run: | + cmake -Bbuild -DPython_EXECUTABLE=`which python` + cd build + cmake --build . + cp ../example.py . + python example.py + cd .. + + - name: Example - Copy 'cast' + working-directory: docs/source/examples/copy_cast + run: | + cmake -Bbuild -DPython_EXECUTABLE=`which python` + cd build + cmake --build . + cp ../example.py . + python example.py + cd .. + + - name: Example - SFINAE + working-directory: docs/source/examples/sfinae + run: | + cmake -Bbuild -DPython_EXECUTABLE=`which python` + cd build + cmake --build . + cp ../example.py . + python example.py + cd .. + diff --git a/CMakeLists.txt b/CMakeLists.txt index e1bd077..c04f838 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,7 +25,7 @@ foreach(ver ${xtensor_python_version_defines}) set(XTENSOR_PYTHON_VERSION_${CMAKE_MATCH_1} "${CMAKE_MATCH_2}" CACHE INTERNAL "") endif() endforeach() -set(${PROJECT_NAME}_VERSION +set(${PROJECT_NAME}_VERSION ${XTENSOR_PYTHON_VERSION_MAJOR}.${XTENSOR_PYTHON_VERSION_MINOR}.${XTENSOR_PYTHON_VERSION_PATCH}) message(STATUS "xtensor-python v${${PROJECT_NAME}_VERSION}") @@ -45,7 +45,7 @@ else() find_package(xtensor ${xtensor_REQUIRED_VERSION} REQUIRED) message(STATUS "Found xtensor: ${xtensor_INCLUDE_DIRS}/xtensor") endif() - + # Currently no required version for pybind11 if(TARGET pybind11 OR TARGET pybind11::headers) # pybind11 has a variable that indicates its version already, so use that diff --git a/benchmark/CMakeLists.txt b/benchmark/CMakeLists.txt index 28589df..68668bb 100644 --- a/benchmark/CMakeLists.txt +++ b/benchmark/CMakeLists.txt @@ -54,7 +54,7 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU" endif() if(MSVC) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc /MP /bigobj") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc /MP /bigobj /DHAVE_SNPRINTF") set(CMAKE_EXE_LINKER_FLAGS /MANIFEST:NO) foreach(flag_var CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 0c77b0d..8d7a2af 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -41,7 +41,7 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU" endif() if(MSVC) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc /MP /bigobj") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc /MP /bigobj /DHAVE_SNPRINTF") set(CMAKE_EXE_LINKER_FLAGS /MANIFEST:NO) endif() From cbccfb288f7fa3354c4afbd9b51d519be15a5b3d Mon Sep 17 00:00:00 2001 From: Tom de Geus Date: Fri, 4 Mar 2022 09:47:28 +0100 Subject: [PATCH 2/6] Trying generalised fix --- CMakeLists.txt | 6 ++++++ benchmark/CMakeLists.txt | 2 +- test/CMakeLists.txt | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c04f838..aa7f454 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -80,6 +80,12 @@ target_include_directories(xtensor-python INTERFACE target_link_libraries(xtensor-python INTERFACE xtensor) get_target_property(inc_dir xtensor-python INTERFACE_INCLUDE_DIRECTORIES) +if(MSVC) + set_property(TARGET xtensor-python PROPERTY INTERFACE_COMPILE_OPTIONS /DHAVE_SNPRINTF) +else() + set_property(TARGET xtensor-python PROPERTY INTERFACE_COMPILE_OPTIONS -DHAVE_SNPRINTF) +endif() + OPTION(BUILD_TESTS "xtensor test suite" OFF) OPTION(DOWNLOAD_GTEST "build gtest from downloaded sources" OFF) diff --git a/benchmark/CMakeLists.txt b/benchmark/CMakeLists.txt index 68668bb..28589df 100644 --- a/benchmark/CMakeLists.txt +++ b/benchmark/CMakeLists.txt @@ -54,7 +54,7 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU" endif() if(MSVC) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc /MP /bigobj /DHAVE_SNPRINTF") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc /MP /bigobj") set(CMAKE_EXE_LINKER_FLAGS /MANIFEST:NO) foreach(flag_var CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 8d7a2af..0c77b0d 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -41,7 +41,7 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU" endif() if(MSVC) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc /MP /bigobj /DHAVE_SNPRINTF") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc /MP /bigobj") set(CMAKE_EXE_LINKER_FLAGS /MANIFEST:NO) endif() From ca93049860ca486724905743690aabedb732e986 Mon Sep 17 00:00:00 2001 From: Tom de Geus Date: Fri, 25 Mar 2022 11:17:18 +0100 Subject: [PATCH 3/6] CMake/test: changing how Python is linked --- test/CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 0c77b0d..bf1229c 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -80,6 +80,8 @@ else() endif() find_package(Threads) +find_package(pybind11 REQUIRED) +find_package(Python REQUIRED COMPONENTS Interpreter Development NumPy) include_directories(${GTEST_INCLUDE_DIRS}) @@ -93,7 +95,7 @@ set(XTENSOR_PYTHON_TESTS ) add_executable(test_xtensor_python ${XTENSOR_PYTHON_TESTS} ${XTENSOR_PYTHON_HEADERS}) -target_link_libraries(test_xtensor_python xtensor-python ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${PYTHON_LIBRARIES}) +target_link_libraries(test_xtensor_python xtensor-python ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} pybind11::module Python::NumPy) if(DOWNLOAD_GTEST OR GTEST_SRC_DIR) add_dependencies(test_xtensor_python gtest_main) From 8340c749be9642064386eb6b6bde2741f02dee4c Mon Sep 17 00:00:00 2001 From: Tom de Geus Date: Fri, 25 Mar 2022 11:23:38 +0100 Subject: [PATCH 4/6] Debugging --- test/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index bf1229c..41f8fa0 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -95,7 +95,7 @@ set(XTENSOR_PYTHON_TESTS ) add_executable(test_xtensor_python ${XTENSOR_PYTHON_TESTS} ${XTENSOR_PYTHON_HEADERS}) -target_link_libraries(test_xtensor_python xtensor-python ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} pybind11::module Python::NumPy) +target_link_libraries(test_xtensor_python xtensor-python ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${PYTHON_LIBRARIES} Python::Python Python::NumPy) if(DOWNLOAD_GTEST OR GTEST_SRC_DIR) add_dependencies(test_xtensor_python gtest_main) From 63fa74363ec4d06140457755d5fb01a90c3ecb5b Mon Sep 17 00:00:00 2001 From: Tom de Geus Date: Fri, 25 Mar 2022 11:29:07 +0100 Subject: [PATCH 5/6] Helping CMake --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6b75f78..544b018 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -38,7 +38,7 @@ jobs: ninja - name: Configure using CMake - run: cmake -Bbuild -G "Ninja" -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX -DPYTHON_EXECUTABLE=`which python` -DDOWNLOAD_GTEST=ON + run: cmake -Bbuild -G "Ninja" -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX -DPYTHON_EXECUTABLE=`which python` -DPython_EXECUTABLE=`which python` -DDOWNLOAD_GTEST=ON - name: Install working-directory: build From 03c3d46b2df119b539a2bea897cb8640be735726 Mon Sep 17 00:00:00 2001 From: Tom de Geus Date: Fri, 25 Mar 2022 11:35:52 +0100 Subject: [PATCH 6/6] reverting (nothing changed) --- .github/workflows/ci.yml | 2 +- test/CMakeLists.txt | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 544b018..6b75f78 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -38,7 +38,7 @@ jobs: ninja - name: Configure using CMake - run: cmake -Bbuild -G "Ninja" -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX -DPYTHON_EXECUTABLE=`which python` -DPython_EXECUTABLE=`which python` -DDOWNLOAD_GTEST=ON + run: cmake -Bbuild -G "Ninja" -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX -DPYTHON_EXECUTABLE=`which python` -DDOWNLOAD_GTEST=ON - name: Install working-directory: build diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 41f8fa0..0c77b0d 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -80,8 +80,6 @@ else() endif() find_package(Threads) -find_package(pybind11 REQUIRED) -find_package(Python REQUIRED COMPONENTS Interpreter Development NumPy) include_directories(${GTEST_INCLUDE_DIRS}) @@ -95,7 +93,7 @@ set(XTENSOR_PYTHON_TESTS ) add_executable(test_xtensor_python ${XTENSOR_PYTHON_TESTS} ${XTENSOR_PYTHON_HEADERS}) -target_link_libraries(test_xtensor_python xtensor-python ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${PYTHON_LIBRARIES} Python::Python Python::NumPy) +target_link_libraries(test_xtensor_python xtensor-python ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${PYTHON_LIBRARIES}) if(DOWNLOAD_GTEST OR GTEST_SRC_DIR) add_dependencies(test_xtensor_python gtest_main) pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy