Skip to content

Commit

Permalink
Fix Windows: CLI.py.help.ls Path
Browse files Browse the repository at this point in the history
Fix test issue on conda-forge by adding the exact same hints as for
other python tests. Avoid appending the multi-config directory so
we can use the same path hints during test runs from the build dir.
  • Loading branch information
ax3l committed Jan 4, 2021
1 parent cc946d5 commit 6512f0d
Showing 1 changed file with 44 additions and 13 deletions.
57 changes: 44 additions & 13 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -586,12 +586,33 @@ if(openPMD_HAVE_PYTHON)
set_target_properties(openPMD.py PROPERTIES
ARCHIVE_OUTPUT_NAME openpmd_api_cxx
LIBRARY_OUTPUT_NAME openpmd_api_cxx
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_PYTHON_OUTPUT_DIRECTORY}/openpmd_api
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_PYTHON_OUTPUT_DIRECTORY}/openpmd_api
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_PYTHON_OUTPUT_DIRECTORY}/openpmd_api
PDB_OUTPUT_DIRECTORY ${CMAKE_PYTHON_OUTPUT_DIRECTORY}/openpmd_api
COMPILE_PDB_OUTPUT_DIRECTORY ${CMAKE_PYTHON_OUTPUT_DIRECTORY}/openpmd_api
)
if(WIN32)
# avoid appending the multi-configuration during build, which complicates
# PYTHONPATH settings for testing
# https://cmake.org/cmake/help/latest/prop_tgt/LIBRARY_OUTPUT_DIRECTORY_CONFIG.html
string(TOUPPER ${CMAKE_BUILD_TYPE} config)
set_target_properties(openPMD.py PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY_${config}
${CMAKE_PYTHON_OUTPUT_DIRECTORY}/openpmd_api
LIBRARY_OUTPUT_DIRECTORY_${config}
${CMAKE_PYTHON_OUTPUT_DIRECTORY}/openpmd_api
RUNTIME_OUTPUT_DIRECTORY_${config}
${CMAKE_PYTHON_OUTPUT_DIRECTORY}/openpmd_api
PDB_OUTPUT_DIRECTORY_${config}
${CMAKE_PYTHON_OUTPUT_DIRECTORY}/openpmd_api
COMPILE_PDB_OUTPUT_DIRECTORY_${config}
${CMAKE_PYTHON_OUTPUT_DIRECTORY}/openpmd_api
)
else()
set_target_properties(openPMD.py PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_PYTHON_OUTPUT_DIRECTORY}/openpmd_api
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_PYTHON_OUTPUT_DIRECTORY}/openpmd_api
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_PYTHON_OUTPUT_DIRECTORY}/openpmd_api
PDB_OUTPUT_DIRECTORY ${CMAKE_PYTHON_OUTPUT_DIRECTORY}/openpmd_api
COMPILE_PDB_OUTPUT_DIRECTORY ${CMAKE_PYTHON_OUTPUT_DIRECTORY}/openpmd_api
)
endif()
add_custom_command(TARGET openPMD.py POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
${openPMD_SOURCE_DIR}/src/binding/python/openpmd_api
Expand Down Expand Up @@ -960,19 +981,21 @@ if(BUILD_TESTING)
${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
)
if(WIN32)
string(REGEX REPLACE "/" "\\\\" WIN_BUILD_BASEDIR ${openPMD_BINARY_DIR})
string(REGEX REPLACE "/" "\\\\" WIN_BUILD_PYDIR ${CMAKE_PYTHON_OUTPUT_DIRECTORY})
string(REGEX REPLACE "/" "\\\\" WIN_BUILD_BINDIR ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
string(REPLACE ";" "\\;" WIN_PATH "$ENV{PATH}")
string(REPLACE ";" "\\;" WIN_PYTHONPATH "$ENV{PYTHONPATH}")
message(STATUS "PATH=${WIN_BUILD_BINDIR}\\${CMAKE_BUILD_TYPE}\;${WIN_PATH}\n")
message(STATUS "PYTHONPATH=${WIN_BUILD_PYDIR}\;${WIN_PYTHONPATH}")
set_property(TEST Unittest.py
PROPERTY ENVIRONMENT
"PATH=${WIN_BUILD_BINDIR}\\${CMAKE_BUILD_TYPE}\;${WIN_PATH}\n"
"PYTHONPATH=${WIN_BUILD_BASEDIR}\\${CMAKE_INSTALL_PYTHONDIR}\\${CMAKE_BUILD_TYPE}\;${WIN_PYTHONPATH}"
"PYTHONPATH=${WIN_BUILD_PYDIR}\;${WIN_PYTHONPATH}"
)
else()
set_tests_properties(Unittest.py
PROPERTIES ENVIRONMENT
"PYTHONPATH=${openPMD_BINARY_DIR}/${CMAKE_INSTALL_PYTHONDIR}:$ENV{PYTHONPATH}"
"PYTHONPATH=${CMAKE_PYTHON_OUTPUT_DIRECTORY}:$ENV{PYTHONPATH}"
)
endif()
endif()
Expand Down Expand Up @@ -1031,15 +1054,21 @@ if(BUILD_TESTING)
WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
)
if(WIN32)
string(REGEX REPLACE "/" "\\\\" WIN_BUILD_PYDIR ${CMAKE_PYTHON_OUTPUT_DIRECTORY})
string(REGEX REPLACE "/" "\\\\" WIN_BUILD_BINDIR ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
string(REPLACE ";" "\\;" WIN_PATH "$ENV{PATH}")
string(REPLACE ";" "\\;" WIN_PYTHONPATH "$ENV{PYTHONPATH}")
message(STATUS "PATH=${WIN_BUILD_BINDIR}\\${CMAKE_BUILD_TYPE}\;${WIN_PATH}\n")
message(STATUS "PYTHONPATH=${WIN_BUILD_PYDIR}\;${WIN_PYTHONPATH}")
set_property(TEST CLI.py.help.${pymodulename}
PROPERTY ENVIRONMENT
"PATH=${WIN_BUILD_BINDIR}\\${CMAKE_BUILD_TYPE}\;${WIN_PATH}\n"
"PYTHONPATH=${WIN_BUILD_BASEDIR}\\${CMAKE_INSTALL_PYTHONDIR}\\${CMAKE_BUILD_TYPE}\;${WIN_PYTHONPATH}"
"PYTHONPATH=${WIN_BUILD_PYDIR}\;${WIN_PYTHONPATH}"
)
else()
set_tests_properties(CLI.py.help.${pymodulename}
PROPERTIES ENVIRONMENT
"PYTHONPATH=${openPMD_BINARY_DIR}/${CMAKE_INSTALL_PYTHONDIR}:$ENV{PYTHONPATH}"
"PYTHONPATH=${CMAKE_PYTHON_OUTPUT_DIRECTORY}:$ENV{PYTHONPATH}"
)
endif()
endforeach()
Expand Down Expand Up @@ -1076,19 +1105,21 @@ if(BUILD_TESTING)
)
endif()
if(WIN32)
string(REGEX REPLACE "/" "\\\\" WIN_BUILD_BASEDIR ${openPMD_BINARY_DIR})
string(REGEX REPLACE "/" "\\\\" WIN_BUILD_PYDIR ${CMAKE_PYTHON_OUTPUT_DIRECTORY})
string(REGEX REPLACE "/" "\\\\" WIN_BUILD_BINDIR ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
string(REPLACE ";" "\\;" WIN_PATH "$ENV{PATH}")
string(REPLACE ";" "\\;" WIN_PYTHONPATH "$ENV{PYTHONPATH}")
message(STATUS "PATH=${WIN_BUILD_BINDIR}\\${CMAKE_BUILD_TYPE}\;${WIN_PATH}\n")
message(STATUS "PYTHONPATH=${WIN_BUILD_PYDIR}\;${WIN_PYTHONPATH}")
set_property(TEST Example.py.${examplename}
PROPERTY ENVIRONMENT
"PATH=${WIN_BUILD_BINDIR}\\${CMAKE_BUILD_TYPE}\;${WIN_PATH}\n"
"PYTHONPATH=${WIN_BUILD_BASEDIR}\\${CMAKE_INSTALL_PYTHONDIR}\\${CMAKE_BUILD_TYPE}\;${WIN_PYTHONPATH}"
"PYTHONPATH=${WIN_BUILD_PYDIR}\;${WIN_PYTHONPATH}"
)
else()
set_tests_properties(Example.py.${examplename}
PROPERTIES ENVIRONMENT
"PYTHONPATH=${openPMD_BINARY_DIR}/${CMAKE_INSTALL_PYTHONDIR}:$ENV{PYTHONPATH}"
"PYTHONPATH=${CMAKE_PYTHON_OUTPUT_DIRECTORY}:$ENV{PYTHONPATH}"
)
endif()
endif()
Expand Down

0 comments on commit 6512f0d

Please sign in to comment.