From af506f2a6ada2a3477dba3fe152d4ff95065d5d9 Mon Sep 17 00:00:00 2001 From: Taiju Yamada Date: Wed, 18 Mar 2020 17:53:38 +0900 Subject: [PATCH 1/3] change ikfast link to LAPACK_LIBRARIES --- python/CMakeLists.txt | 4 +++- .../{inversekinematics.py => inversekinematics.py.in} | 11 +++-------- 2 files changed, 6 insertions(+), 9 deletions(-) rename python/databases/{inversekinematics.py => inversekinematics.py.in} (99%) diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index 1b9cc7f16f..48e74029f5 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -28,7 +28,9 @@ install(FILES metaclass.py openravepy_ext.py misc.py pyANN.py DESTINATION ${OPEN install(FILES openravepy.__init__.py DESTINATION ${OPENRAVEPY_VER_INSTALL_DIR} COMPONENT ${COMPONENT_PREFIX}python RENAME __init__.py) install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/examples" DESTINATION ${OPENRAVEPY_VER_INSTALL_DIR} FILE_PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ COMPONENT ${COMPONENT_PREFIX}python PATTERN ".svn" EXCLUDE PATTERN ".pyc" EXCLUDE) install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/interfaces" DESTINATION ${OPENRAVEPY_VER_INSTALL_DIR} FILE_PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ COMPONENT ${COMPONENT_PREFIX}python PATTERN ".svn" EXCLUDE PATTERN ".pyc" EXCLUDE) -install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/databases" DESTINATION ${OPENRAVEPY_VER_INSTALL_DIR} FILE_PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ COMPONENT ${COMPONENT_PREFIX}python PATTERN ".svn" EXCLUDE PATTERN ".pyc" EXCLUDE) +install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/databases" DESTINATION ${OPENRAVEPY_VER_INSTALL_DIR} FILE_PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ COMPONENT ${COMPONENT_PREFIX}python PATTERN ".svn" EXCLUDE PATTERN ".pyc" EXCLUDE PATTERN "inversekinematics.py.in" EXCLUDE) +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/databases/inversekinematics.py.in" "${CMAKE_CURRENT_BINARY_DIR}/inversekinematics.py" IMMEDIATE @ONLY) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/inversekinematics.py DESTINATION ${OPENRAVEPY_VER_INSTALL_DIR}/databases) set(CPACK_COMPONENT_${COMPONENT_PREFIX_UPPER}PYTHON_DISPLAY_NAME "Python ${PYTHON_MAJORMINOR_VERSION} bindings" PARENT_SCOPE) set(CPACK_COMPONENT_${COMPONENT_PREFIX_UPPER}PYTHON_DEPENDS ${COMPONENT_PREFIX}base python-numpy python-pkg-resources openrave-python-minimal PARENT_SCOPE) diff --git a/python/databases/inversekinematics.py b/python/databases/inversekinematics.py.in similarity index 99% rename from python/databases/inversekinematics.py rename to python/databases/inversekinematics.py.in index 2fc68c266a..3249a602c0 100644 --- a/python/databases/inversekinematics.py +++ b/python/databases/inversekinematics.py.in @@ -956,18 +956,13 @@ def solveFullIK_TranslationZAxisAngleYNorm4D(*args,**kwargs): # because some parts of ikfast require lapack, always try to link with it try: iswindows = sys.platform.startswith('win') or platform.system().lower() == 'windows' - libraries = None if self.statistics.get('usinglapack',False) or not iswindows: - libraries = ['lapack'] - compiler.link_shared_object(objectfiles,output_filename=output_filename, libraries=libraries) + libraryFiles = "@LAPACK_LIBRARIES@".split() + compiler.link_shared_object(objectfiles,output_filename=output_filename, extra_postargs=libraryFiles) except distutils.errors.LinkError,e: log.warn(e) - if libraries is not None and 'lapack' in libraries: - libraries.remove('lapack') - if len(libraries) == 0: - libraries = None log.info('linking again with %r... (MSVC bug?)',libraries) - compiler.link_shared_object(objectfiles,output_filename=output_filename, libraries=libraries) + compiler.link_shared_object(objectfiles,output_filename=output_filename) if not self.setrobot(): return ValueError('failed to generate ik solver') From c92aa870fce891cfe4b7cd29bbf893cc0e8c17b3 Mon Sep 17 00:00:00 2001 From: Taiju Yamada Date: Wed, 18 Mar 2020 18:30:47 +0900 Subject: [PATCH 2/3] tested --- python/CMakeLists.txt | 3 +++ python/databases/inversekinematics.py.in | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index 48e74029f5..bc06d86070 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -16,6 +16,9 @@ endif() file(READ "${CMAKE_CURRENT_SOURCE_DIR}/../src/cppexamples/FindOpenRAVE.cmake" FindOpenRAVE) +# find LAPACK so that ikfastpy can link to it +find_package(LAPACK) + # python executables need renaming configure_file("${CMAKE_CURRENT_SOURCE_DIR}/openrave.py.in" "${CMAKE_CURRENT_BINARY_DIR}/openrave${OPENRAVE_BIN_SUFFIX}.py" IMMEDIATE @ONLY) configure_file("${CMAKE_CURRENT_SOURCE_DIR}/openrave-robot.py.in" "${CMAKE_CURRENT_BINARY_DIR}/openrave${OPENRAVE_BIN_SUFFIX}-robot.py" IMMEDIATE @ONLY) diff --git a/python/databases/inversekinematics.py.in b/python/databases/inversekinematics.py.in index 3249a602c0..781124a6a7 100644 --- a/python/databases/inversekinematics.py.in +++ b/python/databases/inversekinematics.py.in @@ -957,7 +957,7 @@ class InverseKinematicsModel(DatabaseGenerator): try: iswindows = sys.platform.startswith('win') or platform.system().lower() == 'windows' if self.statistics.get('usinglapack',False) or not iswindows: - libraryFiles = "@LAPACK_LIBRARIES@".split() + libraryFiles = "@LAPACK_LIBRARIES@".split(';') compiler.link_shared_object(objectfiles,output_filename=output_filename, extra_postargs=libraryFiles) except distutils.errors.LinkError,e: log.warn(e) From 9fffbcfa3e99e88c5c4a25b29573ac04d7402a8d Mon Sep 17 00:00:00 2001 From: Taiju Yamada Date: Wed, 18 Mar 2020 18:39:50 +0900 Subject: [PATCH 3/3] fix undefined --- python/databases/inversekinematics.py.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/databases/inversekinematics.py.in b/python/databases/inversekinematics.py.in index 781124a6a7..1d8d15d72b 100644 --- a/python/databases/inversekinematics.py.in +++ b/python/databases/inversekinematics.py.in @@ -961,7 +961,7 @@ class InverseKinematicsModel(DatabaseGenerator): compiler.link_shared_object(objectfiles,output_filename=output_filename, extra_postargs=libraryFiles) except distutils.errors.LinkError,e: log.warn(e) - log.info('linking again with %r... (MSVC bug?)',libraries) + log.info('linking again without lapack... (MSVC bug?)') compiler.link_shared_object(objectfiles,output_filename=output_filename) if not self.setrobot():