From ce30cb83f44e284427a41778ac37af16a529b7af Mon Sep 17 00:00:00 2001 From: Clement Champetier Date: Tue, 31 Mar 2015 16:59:54 +0200 Subject: [PATCH 1/5] CMake: deploy avtranscoder python lib with python interface --- src/CMakeLists.txt | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 9dcbbb78..ad05a7b6 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -48,11 +48,8 @@ install( PATTERN "*.hpp" PATTERN "*.i" ) -set(LIBRARY_OUTPUT_PATH "${PROJECT_BINARY_DIR}/lib") -install( - DIRECTORY "${LIBRARY_OUTPUT_PATH}" - DESTINATION "${CMAKE_INSTALL_PREFIX}" -) +install(TARGETS avtranscoder-static DESTINATION lib/) +install(TARGETS avtranscoder-shared DESTINATION lib/) ### Install AvTranscoder ressource install( @@ -106,7 +103,8 @@ if(SWIG_FOUND) FILES ${AVTRANSCODER_PYTHON_BINDING_FILE} ${AVTRANSCODER_PYTHON_INIT_FILE} DESTINATION ${AVTRANSCODER_PYTHON_MODULE_OUTPUT_DIR} ) - # Install __init__.py + # Install python lib and __init__.py files + install(TARGETS ${SWIG_MODULE_avtranscoder-py_REAL_NAME} DESTINATION "lib/python${PYTHONLIBS_VERSION_STRING}/site-packages/pyAvTranscoder/") install(CODE "file(WRITE ${CMAKE_INSTALL_PREFIX}/${AVTRANSCODER_PYTHON_MODULE_OUTPUT_DIR}/__init__.py)") else() message("PYTHON not found, will not build python binding.") @@ -152,7 +150,8 @@ if(SWIG_FOUND) COMMAND ${Java_JAR_EXECUTABLE} cf ${AVTRANSCODER_JAR_NAME} "-C" ${AVTRANSCODER_JAVA_CLASS_OUTPUT_PATH} "." ) - # Install jar file + # Install java lib and jar files + install(TARGETS ${SWIG_MODULE_avtranscoder-java_REAL_NAME} DESTINATION lib/) install(FILES ${AVTRANSCODER_JAR_PATH}/${AVTRANSCODER_JAR_NAME} DESTINATION "share/java/") else() message("JAVA not found, will not build java binding.") From b493e58d16112a0054b775ec3012ec691eb37869 Mon Sep 17 00:00:00 2001 From: Clement Champetier Date: Tue, 31 Mar 2015 17:02:42 +0200 Subject: [PATCH 2/5] CMake: set rpath of avtranscoder-python lib --- src/CMakeLists.txt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ad05a7b6..ce6cf8db 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -94,6 +94,13 @@ if(SWIG_FOUND) set_target_properties(${SWIG_MODULE_avtranscoder-py_REAL_NAME} PROPERTIES SOVERSION ${AVTRANSCODER_VERSION_MAJOR}) set_target_properties(${SWIG_MODULE_avtranscoder-py_REAL_NAME} PROPERTIES VERSION ${AVTRANSCODER_VERSION}) endif() + # Force the library to look in the project lib folder relatively + set_target_properties(${SWIG_MODULE_avtranscoder-py_REAL_NAME} PROPERTIES INSTALL_RPATH_USE_LINK_PATH 1) + if(APPLE) + set_target_properties(${SWIG_MODULE_avtranscoder-py_REAL_NAME} PROPERTIES INSTALL_RPATH "@loader_path/../../..") + else() + set_target_properties(${SWIG_MODULE_avtranscoder-py_REAL_NAME} PROPERTIES INSTALL_RPATH "$ORIGIN/../../..:$ORIGIN") + endif() swig_link_libraries(avtranscoder-py avtranscoder-shared ${PYTHON_LIBRARIES}) # Install python interface From dbd4c6ef82cc093067b6336f475976f8d2f55788 Mon Sep 17 00:00:00 2001 From: Clement Champetier Date: Thu, 2 Apr 2015 14:56:08 +0200 Subject: [PATCH 3/5] CMake: deploy java libs in lib/java Force the library to look in the project lib folder relatively. --- src/CMakeLists.txt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ce6cf8db..0ed44259 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -141,6 +141,13 @@ if(SWIG_FOUND) set_target_properties(${SWIG_MODULE_avtranscoder-java_REAL_NAME} PROPERTIES SOVERSION ${AVTRANSCODER_VERSION_MAJOR}) set_target_properties(${SWIG_MODULE_avtranscoder-java_REAL_NAME} PROPERTIES VERSION ${AVTRANSCODER_VERSION}) endif() + # Force the library to look in the project lib folder relatively + set_target_properties(${SWIG_MODULE_avtranscoder-java_REAL_NAME} PROPERTIES INSTALL_RPATH_USE_LINK_PATH 1) + if(APPLE) + set_target_properties(${SWIG_MODULE_avtranscoder-java_REAL_NAME} PROPERTIES INSTALL_RPATH "@loader_path/..") + else() + set_target_properties(${SWIG_MODULE_avtranscoder-java_REAL_NAME} PROPERTIES INSTALL_RPATH "$ORIGIN/..:$ORIGIN") + endif() swig_link_libraries(avtranscoder-java avtranscoder-shared) # Post build of java binding : compile java files (generate class files) and create jar @@ -158,7 +165,7 @@ if(SWIG_FOUND) ) # Install java lib and jar files - install(TARGETS ${SWIG_MODULE_avtranscoder-java_REAL_NAME} DESTINATION lib/) + install(TARGETS ${SWIG_MODULE_avtranscoder-java_REAL_NAME} DESTINATION "lib/java") install(FILES ${AVTRANSCODER_JAR_PATH}/${AVTRANSCODER_JAR_NAME} DESTINATION "share/java/") else() message("JAVA not found, will not build java binding.") From 629a7a87c91d710fa2414d94193554714682723f Mon Sep 17 00:00:00 2001 From: Clement Champetier Date: Thu, 2 Apr 2015 15:02:31 +0200 Subject: [PATCH 4/5] CMake: add build path in the linker search for avtranscoder shared library INSTALL_RPATH_USE_LINK_PATH is a boolean that if set to true will append directories in the linker search path and outside the project to the INSTALL_RPATH. --- src/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 0ed44259..69958051 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -35,6 +35,7 @@ else() endif() set_target_properties(avtranscoder-shared PROPERTIES SOVERSION ${AVTRANSCODER_VERSION_MAJOR}) set_target_properties(avtranscoder-shared PROPERTIES VERSION ${AVTRANSCODER_VERSION}) +set_target_properties(avtranscoder-shared PROPERTIES INSTALL_RPATH_USE_LINK_PATH 1) target_link_libraries(avtranscoder-shared ${FFMPEG_LIBRARIES}) target_include_directories(avtranscoder-shared PUBLIC ${AVTRANSCODER_SRC_PATH} ${FFMPEG_INCLUDE_DIR}) From 1d1d9add94d6e43cb7cc951173128bd9461f573b Mon Sep 17 00:00:00 2001 From: Clement Champetier Date: Thu, 2 Apr 2015 15:05:19 +0200 Subject: [PATCH 5/5] Travis: clean PYTHONPATH before launch tests --- tools/travis.python.nosetests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/travis.python.nosetests.sh b/tools/travis.python.nosetests.sh index 4f235c43..d59cc745 100644 --- a/tools/travis.python.nosetests.sh +++ b/tools/travis.python.nosetests.sh @@ -1,7 +1,7 @@ #!/bin/bash # Get avtranscoder library -export PYTHONPATH=`pwd`/build/dist/lib:`pwd`/build/dist/lib/python2.7.6/site-packages/:$PYTHONPATH +export PYTHONPATH=`pwd`/build/dist/lib/python2.7.6/site-packages/:$PYTHONPATH # Get avtranscoder profiles export AVPROFILES=`pwd`/build/dist/share/ressource