Skip to content

Commit d488a6f

Browse files
committed
Appveyor: build zfpy on MSVC release builds with python 2.7 and 3.5 (expect zfpy failures on MSVC)
change zfpy target dir to be bin/ and update PYTHONPATH for tests
1 parent 8f17569 commit d488a6f

File tree

5 files changed

+68
-3
lines changed

5 files changed

+68
-3
lines changed

appveyor.sh

+17-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,23 @@ BUILD_FLAGS="$BUILD_FLAGS -DBUILD_UTILITIES=ON"
1818
BUILD_FLAGS="$BUILD_FLAGS -DBUILD_EXAMPLES=ON"
1919
BUILD_FLAGS="$BUILD_FLAGS -DBUILD_CFP=ON"
2020
BUILD_FLAGS="$BUILD_FLAGS -DCFP_NAMESPACE=cfp2"
21-
BUILD_FLAGS="$BUILD_FLAGS -DZFP_WITH_ALIGNED_ALLOC=ON"
21+
22+
# zfpy only built for MSVC, Release builds
23+
if [ $COMPILER == "msvc" ] && [ $BUILD_TYPE == "Release" ]; then
24+
# verify active python version matches what was specified in appveyor.yml
25+
26+
# fetch python version X.Y (single digits only)
27+
ACTIVE_PY_VERSION=$(python -c 'import platform; print(platform.python_version())' | cut -c1-3)
28+
# $PYTHON_VERSION comes from appveyor.yml and has form XY (no dot separating major and minor versions)
29+
ACTIVE_PY_VERSION=${ACTIVE_PY_VERSION:0:1}${ACTIVE_PY_VERSION:2:1}
30+
31+
if [ $ACTIVE_PY_VERSION != $PYTHON_VERSION ]; then
32+
exit 1
33+
fi
34+
35+
BUILD_FLAGS="$BUILD_FLAGS -DBUILD_ZFPY=ON"
36+
fi
37+
2238
BUILD_FLAGS="$BUILD_FLAGS -DBUILD_OPENMP=OFF"
2339
BUILD_FLAGS="$BUILD_FLAGS -DBUILD_CUDA=OFF"
2440

appveyor.yml

+25
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
version: 0.5.5-{build}
22

33
environment:
4+
# zfpy only build for Release builds (otherwise need debug python libs python27_d.lib)
45
matrix:
56
- COMPILER: mingw
67
GENERATOR: MinGW Makefiles
@@ -33,6 +34,7 @@ environment:
3334
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
3435
PLATFORM: x64
3536
BUILD_TYPE: Release
37+
PYTHON_VERSION: 35
3638

3739
- COMPILER: msvc
3840
GENERATOR: Visual Studio 15 2017
@@ -45,6 +47,7 @@ environment:
4547
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
4648
PLATFORM: Win32
4749
BUILD_TYPE: Release
50+
PYTHON_VERSION: 35
4851

4952
- COMPILER: msvc
5053
GENERATOR: Visual Studio 14 2015 Win64
@@ -55,6 +58,7 @@ environment:
5558
GENERATOR: Visual Studio 14 2015 Win64
5659
PLATFORM: x64
5760
BUILD_TYPE: Release
61+
PYTHON_VERSION: 35
5862

5963
- COMPILER: msvc
6064
GENERATOR: Visual Studio 14 2015
@@ -65,10 +69,31 @@ environment:
6569
GENERATOR: Visual Studio 14 2015
6670
PLATFORM: Win32
6771
BUILD_TYPE: Release
72+
PYTHON_VERSION: 27
6873

6974
install:
7075
- if "%COMPILER%"=="mingw" set PATH=C:\MinGW\bin;%PATH%
7176
- if "%COMPILER%"=="mingw-w64" set PATH=C:\MinGW\bin;%PATH%
7277

78+
# set env vars for Python system dir (assumed to always be MSVC)
79+
- ps: |
80+
if ($env:PYTHON_VERSION) {
81+
$env:PYTHON_DIR = "C:\Python$env:PYTHON_VERSION"
82+
if ($env:PLATFORM -eq "x64") {
83+
$env:PYTHON_DIR = "$env:PYTHON_DIR-x64"
84+
}
85+
86+
$env:PYTHON_LIB_PATH = "$env:PYTHON_DIR\libs\python$env:PYTHON_VERSION.lib"
87+
}
88+
89+
# placing these behind a conditional for some reason prevents CMake from picking up the virtualenv
90+
- if "%COMPILER%"=="msvc" if "%BUILD_TYPE%"=="Release" set PATH=%PYTHON_DIR%;%PYTHON_DIR%\Scripts;%PATH%
91+
- if "%COMPILER%"=="msvc" if "%BUILD_TYPE%"=="Release" pip install virtualenv
92+
- if "%COMPILER%"=="msvc" if "%BUILD_TYPE%"=="Release" set VIRTUALENV_NAME=pyVirtualEnv
93+
- if "%COMPILER%"=="msvc" if "%BUILD_TYPE%"=="Release" virtualenv %VIRTUALENV_NAME%
94+
- if "%COMPILER%"=="msvc" if "%BUILD_TYPE%"=="Release" "%VIRTUALENV_NAME%\\Scripts\\activate.bat"
95+
- if "%COMPILER%"=="msvc" if "%BUILD_TYPE%"=="Release" pip install -r python\requirements.txt
96+
- if "%COMPILER%"=="msvc" if "%BUILD_TYPE%"=="Release" python --version
97+
7398
build_script:
7499
- sh appveyor.sh

cmake/appveyor.cmake

+15
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ set(CTEST_SITE "appveyor")
1111
set(CTEST_CMAKE_GENERATOR "${GENERATOR}")
1212
set(CTEST_BUILD_NAME "$ENV{APPVEYOR_REPO_BRANCH}-${job_details}")
1313
set(cfg_options
14+
-DCMAKE_BUILD_TYPE=$ENV{BUILD_TYPE}
1415
-DBUILD_CFP=${BUILD_CFP}
16+
-DBUILD_ZFPY=${BUILD_ZFPY}
1517
-DZFP_WITH_OPENMP=${BUILD_OPENMP}
1618
-DZFP_WITH_CUDA=${BUILD_CUDA}
1719
)
@@ -46,6 +48,19 @@ if(BUILD_CFP)
4648
endif()
4749
endif()
4850

51+
if(BUILD_ZFPY)
52+
set(CTEST_SITE "${CTEST_SITE}_zfpy$ENV{PYTHON_VERSION}")
53+
54+
# sanitize python include dir path (ex. windows vs linux slashes)
55+
set(PYTHON_INCLUDE_DIR "")
56+
file(TO_CMAKE_PATH "${CTEST_SOURCE_DIRECTORY}\\$ENV{VIRTUALENV_NAME}\\Include" PYTHON_INCLUDE_DIR)
57+
58+
list(APPEND cfg_options
59+
-DPYTHON_INCLUDE_DIR=${PYTHON_INCLUDE_DIR}
60+
-DPYTHON_LIBRARY=$ENV{PYTHON_LIB_PATH}
61+
)
62+
endif()
63+
4964
if(OMP_TESTS_ONLY)
5065
list(APPEND cfg_options
5166
-DZFP_OMP_TESTS_ONLY=1

python/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ target_link_libraries(zfpy zfp)
1919
python_extension_module(zfpy)
2020

2121
# Build to the currrent binary dir to avoid conflicts with other libraries named zfp
22-
set(PYLIB_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/lib" CACHE PATH "Directory where zfp python library will be built")
22+
set(PYLIB_BUILD_DIR "${CMAKE_BINARY_DIR}/bin" CACHE PATH "Directory where zfp python library will be built")
2323
set_target_properties(zfpy PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PYLIB_BUILD_DIR})
2424
# Install to the typical python module directory
2525
set(python_install_lib_dir "lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages/")

tests/python/CMakeLists.txt

+10-1
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,18 @@ target_link_libraries(test_utils zfp genSmoothRandNumsLib stridedOperationsLib z
2020
python_extension_module(test_utils)
2121
set_target_properties(test_utils PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PYLIB_BUILD_DIR})
2222

23+
set(TEST_PYTHON_PATH "${PYLIB_BUILD_DIR}")
24+
if(MSVC)
25+
set(TEST_PYTHON_PATH "${TEST_PYTHON_PATH}/${CMAKE_BUILD_TYPE}")
26+
endif()
27+
28+
if(DEFINED ENV{PYTHONPATH})
29+
set(TEST_PYTHON_PATH "${TEST_PYTHON_PATH}:$ENV{PYTHONPATH}")
30+
endif()
31+
2332
add_test(NAME test_numpy
2433
COMMAND ${PYTHON_EXECUTABLE} test_numpy.py
2534
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
2635

2736
set_tests_properties(test_numpy PROPERTIES
28-
ENVIRONMENT PYTHONPATH=${PYLIB_BUILD_DIR}:$ENV{PYTHONPATH})
37+
ENVIRONMENT PYTHONPATH=${TEST_PYTHON_PATH})

0 commit comments

Comments
 (0)