diff --git a/.gitignore b/.gitignore index e69de29..897c42a 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1 @@ +/vrpn-version_07.33.tar.gz diff --git a/sources b/sources index e69de29..90e342c 100644 --- a/sources +++ b/sources @@ -0,0 +1 @@ +ad1475cdcc2572fcf447f8e88404f753 vrpn-version_07.33.tar.gz diff --git a/vrpn-config_install.patch b/vrpn-config_install.patch new file mode 100644 index 0000000..68b4c81 --- /dev/null +++ b/vrpn-config_install.patch @@ -0,0 +1,24 @@ +Index: vrpn-version_07.33/server_src/CMakeLists.txt +=================================================================== +--- vrpn-version_07.33.orig/server_src/CMakeLists.txt ++++ vrpn-version_07.33/server_src/CMakeLists.txt +@@ -143,13 +143,18 @@ configure_file("${CMAKE_CURRENT_SOURCE_D + @ONLY) + + if(VRPN_INSTALL) ++ set(SYSCONF_INSTALL_DIR ++ etc ++ CACHE ++ PATH ++ "Directory to install configuration files") + if(WIN32) + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/vrpn.cfg" + DESTINATION bin + COMPONENT mainserver) + else() + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/vrpn.cfg" +- DESTINATION etc ++ DESTINATION ${SYSCONF_INSTALL_DIR} + COMPONENT mainserver) + endif() + diff --git a/vrpn-dont_install_garbage.patch b/vrpn-dont_install_garbage.patch new file mode 100644 index 0000000..13aaf98 --- /dev/null +++ b/vrpn-dont_install_garbage.patch @@ -0,0 +1,103 @@ +Index: vrpn-version_07.33/client_src/CMakeLists.txt +=================================================================== +--- vrpn-version_07.33.orig/client_src/CMakeLists.txt ++++ vrpn-version_07.33/client_src/CMakeLists.txt +@@ -74,9 +74,9 @@ if(VRPN_BUILD_CLIENTS) + target_link_libraries(${APP} ${VRPN_CLIENT_LIBRARY}) + + set_target_properties(${APP} PROPERTIES FOLDER Tests) +- if(VRPN_INSTALL) +- install(TARGETS ${APP} RUNTIME DESTINATION bin COMPONENT tests) +- endif() ++ #if(VRPN_INSTALL) ++ # install(TARGETS ${APP} RUNTIME DESTINATION bin COMPONENT tests) ++ #endif() + endforeach() + + if(GLUT_FOUND AND OPENGL_FOUND) +@@ -89,15 +89,15 @@ if(VRPN_BUILD_CLIENTS) + + set_target_properties(testimager_client PROPERTIES FOLDER Tests) + +- if(VRPN_INSTALL) +- install(TARGETS +- testimager_client +- RUNTIME +- DESTINATION +- bin +- COMPONENT +- tests) +- endif() ++ #if(VRPN_INSTALL) ++ # install(TARGETS ++ # testimager_client ++ # RUNTIME ++ # DESTINATION ++ # bin ++ # COMPONENT ++ # tests) ++ #endif() + option(VRPN_GLUT_IS_STATIC_FREEGLUT + "Is the GLUT used for the imaging test client a static build of FreeGLUT?" + NO) +@@ -121,15 +121,15 @@ if(VRPN_BUILD_CLIENTS) + + set_target_properties(c_interface_example PROPERTIES FOLDER Tests) + +- if(VRPN_INSTALL) +- install(TARGETS +- c_interface_example +- RUNTIME +- DESTINATION +- bin +- COMPONENT +- tests) +- endif() ++ #if(VRPN_INSTALL) ++ # install(TARGETS ++ # c_interface_example ++ # RUNTIME ++ # DESTINATION ++ # bin ++ # COMPONENT ++ # tests) ++ #endif() + + + ### +Index: vrpn-version_07.33/server_src/CMakeLists.txt +=================================================================== +--- vrpn-version_07.33.orig/server_src/CMakeLists.txt ++++ vrpn-version_07.33/server_src/CMakeLists.txt +@@ -219,10 +219,10 @@ if(BUILD_TESTING) + target_link_libraries(${APP} ${VRPN_SERVER_LIBRARY}) + set_target_properties(${APP} PROPERTIES FOLDER Tests) + +- if(VRPN_INSTALL) +- install(TARGETS ${APP} +- RUNTIME DESTINATION bin COMPONENT tests) +- endif() ++ #if(VRPN_INSTALL) ++ # install(TARGETS ${APP} ++ # RUNTIME DESTINATION bin COMPONENT tests) ++ #endif() + endforeach() + add_test(test_loopback test_loopback) + add_test(test_vrpn test_vrpn) +Index: vrpn-version_07.33/CMakeLists.txt +=================================================================== +--- vrpn-version_07.33.orig/CMakeLists.txt ++++ vrpn-version_07.33/CMakeLists.txt +@@ -1393,9 +1393,9 @@ if(VRPN_BUILD_SERVERS AND VRPN_BUILD_SER + add_executable(${APP} ${SOURCE}) + target_link_libraries(${APP} vrpnserver) + set_target_properties(${APP} PROPERTIES FOLDER Tests) +- if(VRPN_INSTALL) +- install(TARGETS ${APP} RUNTIME DESTINATION bin COMPONENT tests) +- endif() ++ #if(VRPN_INSTALL) ++ # install(TARGETS ${APP} RUNTIME DESTINATION bin COMPONENT tests) ++ #endif() + endforeach() + endif() + diff --git a/vrpn-find_hidapi.patch b/vrpn-find_hidapi.patch new file mode 100644 index 0000000..b2d596d --- /dev/null +++ b/vrpn-find_hidapi.patch @@ -0,0 +1,20 @@ +Index: vrpn-version_07.33/cmake/FindHIDAPI.cmake +=================================================================== +--- vrpn-version_07.33.orig/cmake/FindHIDAPI.cmake ++++ vrpn-version_07.33/cmake/FindHIDAPI.cmake +@@ -24,10 +24,13 @@ + # http://www.boost.org/LICENSE_1_0.txt) + + find_library(HIDAPI_LIBRARY +- NAMES hidapi) ++ NAMES hidapi hidapi-libusb) + + find_path(HIDAPI_INCLUDE_DIR +- NAMES hidapi.h) ++ NAMES hidapi.h ++ PATH_SUFFIXES ++ include ++ include/hidapi) + + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args(HIDAPI diff --git a/vrpn-find_jsoncpp.patch b/vrpn-find_jsoncpp.patch new file mode 100644 index 0000000..003966e --- /dev/null +++ b/vrpn-find_jsoncpp.patch @@ -0,0 +1,12 @@ +Index: vrpn-version_07.33/cmake/FindJsonCpp.cmake +=================================================================== +--- vrpn-version_07.33.orig/cmake/FindJsonCpp.cmake ++++ vrpn-version_07.33/cmake/FindJsonCpp.cmake +@@ -69,6 +69,7 @@ list(APPEND _jsoncppnames + + find_library(JSONCPP_LIBRARY + NAMES ++ jsoncpp + ${_jsoncppnames} + PATHS + "${JSONCPP_ROOT_DIR}/libs" diff --git a/vrpn-find_modbus.patch b/vrpn-find_modbus.patch new file mode 100644 index 0000000..8fa2e29 --- /dev/null +++ b/vrpn-find_modbus.patch @@ -0,0 +1,25 @@ +Index: vrpn-version_07.33/cmake/FindModbus.cmake +=================================================================== +--- vrpn-version_07.33.orig/cmake/FindModbus.cmake ++++ vrpn-version_07.33/cmake/FindModbus.cmake +@@ -46,16 +46,16 @@ find_path(MODBUS_INCLUDE_DIR + "${MODBUS_ROOT_DIR}" + PATH_SUFFIXES + include ++ include/modbus + PATHS + "${_progfiles}/libmodbus" + C:/usr/local +- /usr/local) ++ /usr/local ++ /usr) + + # Look for the library. + find_library(MODBUS_LIBRARY +- NAMES +- libmodbus.lib +- libmodbus.a ++ modbus + HINTS + "${MODBUS_ROOT_DIR}" + PATH_SUFFIXES diff --git a/vrpn-fix_library_install_rules.patch b/vrpn-fix_library_install_rules.patch new file mode 100644 index 0000000..8f12fca --- /dev/null +++ b/vrpn-fix_library_install_rules.patch @@ -0,0 +1,160 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index a03978b..0ad0c6d 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1245,16 +1245,10 @@ if(VRPN_BUILD_SERVER_LIBRARY) + if(VRPN_INSTALL) + install(TARGETS + vrpnserver +- ARCHIVE +- DESTINATION +- lib +- COMPONENT +- serversdk +- PUBLIC_HEADER +- DESTINATION +- include +- COMPONENT +- serversdk) ++ RUNTIME DESTINATION bin COMPONENT serversdk ++ LIBRARY DESTINATION lib${LIB_SUFFIX} COMPONENT serversdk ++ ARCHIVE DESTINATION lib${LIB_SUFFIX} COMPONENT serversdk ++ PUBLIC_HEADER DESTINATION include COMPONENT serversdk) + endif() + add_cppcheck(vrpnserver STYLE UNUSED_FUNCTIONS) + endif() +@@ -1292,16 +1286,10 @@ if(VRPN_BUILD_CLIENT_LIBRARY) + if(VRPN_INSTALL) + install(TARGETS + vrpn +- ARCHIVE +- DESTINATION +- lib +- COMPONENT +- clientsdk +- PUBLIC_HEADER +- DESTINATION +- include +- COMPONENT +- clientsdk) ++ RUNTIME DESTINATION bin COMPONENT clientsdk ++ LIBRARY DESTINATION lib${LIB_SUFFIX} COMPONENT clientsdk ++ ARCHIVE DESTINATION lib${LIB_SUFFIX} COMPONENT clientsdk ++ PUBLIC_HEADER DESTINATION include COMPONENT clientsdk) + endif() + add_cppcheck(vrpn STYLE UNUSED_FUNCTIONS) + endif() +diff --git a/atmellib/CMakeLists.txt b/atmellib/CMakeLists.txt +index 30d51f1..003785c 100644 +--- a/atmellib/CMakeLists.txt ++++ b/atmellib/CMakeLists.txt +@@ -24,14 +24,8 @@ set_property(TARGET + if(VRPN_INSTALL) + install(TARGETS + vrpn_atmel +- ARCHIVE +- DESTINATION +- lib +- COMPONENT +- serversdk +- PUBLIC_HEADER +- DESTINATION +- include +- COMPONENT +- serversdk) ++ RUNTIME DESTINATION bin COMPONENT serversdk ++ LIBRARY DESTINATION lib${LIB_SUFFIX} COMPONENT serversdk ++ ARCHIVE DESTINATION lib${LIB_SUFFIX} COMPONENT serversdk ++ PUBLIC_HEADER DESTINATION include COMPONENT serversdk) + endif() +diff --git a/gpsnmealib/CMakeLists.txt b/gpsnmealib/CMakeLists.txt +index fee7b3a..9a34e2d 100644 +--- a/gpsnmealib/CMakeLists.txt ++++ b/gpsnmealib/CMakeLists.txt +@@ -25,14 +25,8 @@ set_property(TARGET gpsnmea PROPERTY FOLDER "Library") + if(VRPN_INSTALL) + install(TARGETS + gpsnmea +- ARCHIVE +- DESTINATION +- lib +- COMPONENT +- serversdk +- PUBLIC_HEADER +- DESTINATION +- include +- COMPONENT +- serversdk) +-endif() +\ No newline at end of file ++ RUNTIME DESTINATION bin COMPONENT serversdk ++ LIBRARY DESTINATION lib${LIB_SUFFIX} COMPONENT serversdk ++ ARCHIVE DESTINATION lib${LIB_SUFFIX} COMPONENT serversdk ++ PUBLIC_HEADER DESTINATION include COMPONENT serversdk) ++endif() +diff --git a/quat/CMakeLists.txt b/quat/CMakeLists.txt +index 597776e..8d48c94 100644 +--- a/quat/CMakeLists.txt ++++ b/quat/CMakeLists.txt +@@ -38,28 +38,16 @@ set_target_properties(quat PROPERTIES FOLDER Library) + if(VRPN_INSTALL) + install(TARGETS + quat +- ARCHIVE +- DESTINATION +- lib +- COMPONENT +- serversdk +- PUBLIC_HEADER +- DESTINATION +- include +- COMPONENT +- serversdk) ++ RUNTIME DESTINATION bin COMPONENT serversdk ++ LIBRARY DESTINATION lib${LIB_SUFFIX} COMPONENT serversdk ++ ARCHIVE DESTINATION lib${LIB_SUFFIX} COMPONENT serversdk ++ PUBLIC_HEADER DESTINATION include COMPONENT serversdk) + install(TARGETS + quat +- ARCHIVE +- DESTINATION +- lib +- COMPONENT +- clientsdk +- PUBLIC_HEADER +- DESTINATION +- include +- COMPONENT +- clientsdk) ++ RUNTIME DESTINATION bin COMPONENT clientsdk ++ LIBRARY DESTINATION lib${LIB_SUFFIX} COMPONENT clientsdk ++ ARCHIVE DESTINATION lib${LIB_SUFFIX} COMPONENT clientsdk ++ PUBLIC_HEADER DESTINATION include COMPONENT clientsdk) + endif() + + add_subdirectory(testapps) +diff --git a/server_src/timecode_generator_server/CMakeLists.txt b/server_src/timecode_generator_server/CMakeLists.txt +index 5f8dce6..925bc44 100644 +--- a/server_src/timecode_generator_server/CMakeLists.txt ++++ b/server_src/timecode_generator_server/CMakeLists.txt +@@ -25,14 +25,8 @@ set_target_properties(vrpn_timecode_generator + if(VRPN_INSTALL) + install(TARGETS + vrpn_timecode_generator +- ARCHIVE +- DESTINATION +- lib +- COMPONENT +- serversdk +- PUBLIC_HEADER +- DESTINATION +- include +- COMPONENT +- serversdk) +-endif() +\ No newline at end of file ++ RUNTIME DESTINATION bin COMPONENT serversdk ++ LIBRARY DESTINATION lib${LIB_SUFFIX} COMPONENT serversdk ++ ARCHIVE DESTINATION lib${LIB_SUFFIX} COMPONENT serversdk ++ PUBLIC_HEADER DESTINATION include COMPONENT serversdk) ++endif() diff --git a/vrpn-java_install.patch b/vrpn-java_install.patch new file mode 100644 index 0000000..b095105 --- /dev/null +++ b/vrpn-java_install.patch @@ -0,0 +1,177 @@ +Index: vrpn-version_07.33/java_vrpn/CMakeLists.txt +=================================================================== +--- vrpn-version_07.33.orig/java_vrpn/CMakeLists.txt ++++ vrpn-version_07.33/java_vrpn/CMakeLists.txt +@@ -6,6 +6,29 @@ + + if(JAVA_FOUND AND JNI_FOUND AND JAVAH_EXECUTABLE AND VRPN_BUILD_JAVA) + ++ set(JAVA_INSTALL_LIBDIR ++ lib ++ CACHE PATH ++ "Where to install java shared objects") ++ set(JAVA_INSTALL_JNIDIR ++ share/java ++ CACHE PATH ++ "Where to install JNI jar files") ++ ++ if("${JAVA_INSTALL_LIBDIR}" STREQUAL lib) ++ set(JAVA_LOAD_VRPN ++ "System.loadLibrary(\"java_vrpn\")") ++ else() ++ if(IS_ABSOLUTE "${JAVA_INSTALL_LIBDIR}") ++ set(JAVA_LOAD_VRPN ++ "System.load(\"${JAVA_INSTALL_LIBDIR}/${CMAKE_SHARED_LIBRARY_PREFIX}java_vrpn${CMAKE_SHARED_LIBRARY_SUFFIX}\")") ++ else() ++ set(JAVA_LOAD_VRPN ++ "System.load(\"${CMAKE_INSTALL_PREFIX}/${JAVA_INSTALL_LIBDIR}/${CMAKE_SHARED_LIBRARY_PREFIX}java_vrpn${CMAKE_SHARED_LIBRARY_SUFFIX}\")") ++ endif() ++ endif() ++ configure_file("vrpn/VRPN.java.in" "vrpn/VRPN.java") ++ + # Set up file lists + set(JAVA_CLASSES + AnalogOutputRemote +@@ -22,7 +45,6 @@ if(JAVA_FOUND AND JNI_FOUND AND JAVAH_EX + TextSender + TrackerRemote + TrackerRemoteListener +- VRPN + VRPNDevice) + set(JAVAC_OUTPUT) + set(JAVAC_INPUT) +@@ -38,6 +60,15 @@ if(JAVA_FOUND AND JNI_FOUND AND JAVAH_EX + JAVA_JNI_HEADERS + "${CMAKE_CURRENT_BINARY_DIR}/vrpn_${class}.h") + endforeach() ++ list(APPEND ++ JAVAC_OUTPUT ++ "${CMAKE_CURRENT_BINARY_DIR}/vrpn/VRPN.class") ++ list(APPEND ++ JAVAC_INPUT ++ "${CMAKE_CURRENT_BINARY_DIR}/vrpn/VRPN.java") ++ list(APPEND ++ JAVA_JNI_HEADERS ++ "${CMAKE_CURRENT_BINARY_DIR}/vrpn_VRPN.h") + + # *.java -> *.class + add_custom_command(OUTPUT +@@ -87,6 +118,20 @@ if(JAVA_FOUND AND JNI_FOUND AND JAVAH_EX + COMMENT + "Generating JNI header file for vrpn.${in}") + endforeach() ++ add_custom_command(OUTPUT ++ "${CMAKE_CURRENT_BINARY_DIR}/vrpn_VRPN.h" ++ DEPENDS ++ "${CMAKE_CURRENT_BINARY_DIR}/vrpn/VRPN.class" ++ COMMAND ++ "${JAVAH_EXECUTABLE}" ++ -d ++ "${CMAKE_CURRENT_BINARY_DIR}" ++ -jni ++ -classpath ++ "${CMAKE_CURRENT_BINARY_DIR}" ++ vrpn.VRPN ++ COMMENT ++ "Generating JNI header file for vrpn.${in}") + + # target for vrpn.jar + add_custom_target(java_vrpn_jar +@@ -120,12 +165,15 @@ if(JAVA_FOUND AND JNI_FOUND AND JAVAH_EX + + if(VRPN_INSTALL) + install(TARGETS java_vrpn +- ARCHIVE DESTINATION lib COMPONENT java +- LIBRARY DESTINATION lib COMPONENT java +- RUNTIME DESTINATION lib COMPONENT java) ++ ARCHIVE DESTINATION "${JAVA_INSTALL_LIBDIR}" ++ COMPONENT java ++ LIBRARY DESTINATION "${JAVA_INSTALL_LIBDIR}" ++ COMPONENT java ++ RUNTIME DESTINATION "${JAVA_INSTALL_LIBDIR}" ++ COMPONENT java) + + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/vrpn.jar" +- DESTINATION share/java ++ DESTINATION "${JAVA_INSTALL_JNIDIR}" + COMPONENT java + RENAME vrpn-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.jar) + endif() +Index: vrpn-version_07.33/java_vrpn/vrpn/VRPN.java +=================================================================== +--- vrpn-version_07.33.orig/java_vrpn/vrpn/VRPN.java ++++ /dev/null +@@ -1,34 +0,0 @@ +- +- +-package vrpn; +- +-public class VRPN +-{ +- +- /** +- * All VRPN objects must assert this lock before making any calls +- * into native code. A corollary of this is that no native methods +- * may be public; all native methods must be wrapped by other methods +- * that first synchronize on this lock before calling the native +- * method. +- */ +- protected final static Object downInVrpnLock = new Object( ); +- +- static +- { +- try { System.loadLibrary( "java_vrpn" ); } +- catch( UnsatisfiedLinkError e ) +- { +- System.out.println( e.getMessage( ) ); +- System.out.println( "Error initializing java_vrpn." ); +- System.out.println( " -- Unable to find native library." ); +- } +- catch( SecurityException e ) +- { +- System.out.println( e.getMessage( ) ); +- System.out.println( "Security exception: you couldn't load the native vrpn dll." ); +- } +- } // end static initializer block +- +- +-} // end class VRPN +Index: vrpn-version_07.33/java_vrpn/vrpn/VRPN.java.in +=================================================================== +--- /dev/null ++++ vrpn-version_07.33/java_vrpn/vrpn/VRPN.java.in +@@ -0,0 +1,34 @@ ++ ++ ++package vrpn; ++ ++public class VRPN ++{ ++ ++ /** ++ * All VRPN objects must assert this lock before making any calls ++ * into native code. A corollary of this is that no native methods ++ * may be public; all native methods must be wrapped by other methods ++ * that first synchronize on this lock before calling the native ++ * method. ++ */ ++ protected final static Object downInVrpnLock = new Object( ); ++ ++ static ++ { ++ try { @JAVA_LOAD_VRPN@; } ++ catch( UnsatisfiedLinkError e ) ++ { ++ System.out.println( e.getMessage( ) ); ++ System.out.println( "Error initializing java_vrpn." ); ++ System.out.println( " -- Unable to find native library." ); ++ } ++ catch( SecurityException e ) ++ { ++ System.out.println( e.getMessage( ) ); ++ System.out.println( "Security exception: you couldn't load the native vrpn dll." ); ++ } ++ } // end static initializer block ++ ++ ++} // end class VRPN diff --git a/vrpn-python_install.patch b/vrpn-python_install.patch new file mode 100644 index 0000000..f9b56e9 --- /dev/null +++ b/vrpn-python_install.patch @@ -0,0 +1,64 @@ +Index: vrpn-version_07.33/python/CMakeLists.txt +=================================================================== +--- vrpn-version_07.33.orig/python/CMakeLists.txt ++++ vrpn-version_07.33/python/CMakeLists.txt +@@ -52,14 +52,19 @@ if(PYTHONLIBS_FOUND AND (VRPN_BUILD_PYTH + OUTPUT_NAME vrpn) + + if(VRPN_INSTALL) ++ set(VRPN_PYTHON_INSTALL_DIR ++ lib/${PYTHONVERSIONDIR}dist-packages/ ++ CACHE ++ PATH ++ "Directory to install python modules") + if(WIN32) + # install(TARGETS vrpn-python +-# RUNTIME DESTINATION lib/${PYTHONVERSIONDIR}dist-packages/ COMPONENT python +-# LIBRARY DESTINATION lib/${PYTHONVERSIONDIR}dist-packages/ COMPONENT python) ++# RUNTIME DESTINATION "${VRPN_PYTHON_INSTALL_DIR}" COMPONENT python ++# LIBRARY DESTINATION "${VRPN_PYTHON_INSTALL_DIR}" COMPONENT python) + else() + install(TARGETS vrpn-python +- RUNTIME DESTINATION lib/${PYTHONVERSIONDIR}dist-packages/ COMPONENT python +- LIBRARY DESTINATION lib/${PYTHONVERSIONDIR}dist-packages/ COMPONENT python) ++ RUNTIME DESTINATION "${VRPN_PYTHON_INSTALL_DIR}" COMPONENT python ++ LIBRARY DESTINATION "${VRPN_PYTHON_INSTALL_DIR}" COMPONENT python) + endif() + endif() + endif() +Index: vrpn-version_07.33/python_vrpn/CMakeLists.txt +=================================================================== +--- vrpn-version_07.33.orig/python_vrpn/CMakeLists.txt ++++ vrpn-version_07.33/python_vrpn/CMakeLists.txt +@@ -68,23 +68,28 @@ if(SWIG_FOUND AND PYTHONLIBS_FOUND AND V + swig_link_libraries(${module} ${PYTHON_LIBRARIES} ${LIBS} ${SERVER_EXTRA_LIBS}) + set_target_properties(_${module} PROPERTIES FOLDER "Python Bindings") + ++ set(VRPN_PYTHON_INSTALL_DIR ++ lib/${PYTHONVERSIONDIR}dist-packages/ ++ CACHE ++ PATH ++ "Directory to install python modules") + if(VRPN_INSTALL) + install(FILES + "${CMAKE_CURRENT_BINARY_DIR}/${module}.py" + DESTINATION +- lib/${PYTHONVERSIONDIR}dist-packages/ ++ "${VRPN_PYTHON_INSTALL_DIR}" + COMPONENT + python) + install(TARGETS + ${SWIG_MODULE_${module}_REAL_NAME} + RUNTIME + DESTINATION +- lib/${PYTHONVERSIONDIR}dist-packages/ ++ "${VRPN_PYTHON_INSTALL_DIR}" + COMPONENT + python + LIBRARY + DESTINATION +- lib/${PYTHONVERSIONDIR}dist-packages/ ++ "${VRPN_PYTHON_INSTALL_DIR}" + COMPONENT + python) + endif() diff --git a/vrpn-soversion.patch b/vrpn-soversion.patch new file mode 100644 index 0000000..e10ed23 --- /dev/null +++ b/vrpn-soversion.patch @@ -0,0 +1,109 @@ +Index: vrpn-version_07.33/gpsnmealib/CMakeLists.txt +=================================================================== +--- vrpn-version_07.33.orig/gpsnmealib/CMakeLists.txt ++++ vrpn-version_07.33/gpsnmealib/CMakeLists.txt +@@ -21,6 +21,10 @@ set_property(TARGET + PUBLIC_HEADER + ${GPSNMEALIB_PUBLIC_HEADERS}) + set_property(TARGET gpsnmea PROPERTY FOLDER "Library") ++set_target_properties(gpsnmea ++ PROPERTIES ++ VERSION ${CPACK_PACKAGE_VERSION} ++ SOVERSION ${CPACK_PACKAGE_VERSION_MAJOR}) + + if(VRPN_INSTALL) + install(TARGETS +Index: vrpn-version_07.33/quat/CMakeLists.txt +=================================================================== +--- vrpn-version_07.33.orig/quat/CMakeLists.txt ++++ vrpn-version_07.33/quat/CMakeLists.txt +@@ -35,6 +35,10 @@ set(QUATLIB_HEADER quat.h) + add_library(quat ${QUATLIB_SOURCES} ${QUATLIB_HEADER}) + set_property(TARGET quat PROPERTY PUBLIC_HEADER ${QUATLIB_HEADER}) + set_target_properties(quat PROPERTIES FOLDER Library) ++set_target_properties(quat ++ PROPERTIES ++ VERSION ${CPACK_PACKAGE_VERSION} ++ SOVERSION ${CPACK_PACKAGE_VERSION_MAJOR}) + if(VRPN_INSTALL) + install(TARGETS + quat +Index: vrpn-version_07.33/server_src/CMakeLists.txt +=================================================================== +--- vrpn-version_07.33.orig/server_src/CMakeLists.txt ++++ vrpn-version_07.33/server_src/CMakeLists.txt +@@ -59,6 +59,10 @@ if(VRPN_USE_PHANTOM_SERVER AND OPENGL_FO + PUBLIC_HEADER + ${PHANTOM_HEADERS}) + set_target_properties(vrpn_phantom PROPERTIES FOLDER Library) ++ set_target_properties(vrpn_phantom ++ PROPERTIES ++ VERSION ${CPACK_PACKAGE_VERSION} ++ SOVERSION ${CPACK_PACKAGE_VERSION_MAJOR}) + + if(VRPN_INSTALL) + install(TARGETS +Index: vrpn-version_07.33/server_src/timecode_generator_server/CMakeLists.txt +=================================================================== +--- vrpn-version_07.33.orig/server_src/timecode_generator_server/CMakeLists.txt ++++ vrpn-version_07.33/server_src/timecode_generator_server/CMakeLists.txt +@@ -20,7 +20,11 @@ target_link_libraries(vrpn_timecode_gene + set_target_properties(vrpn_timecode_generator + PROPERTIES + FOLDER +- "Main Server") ++ "Main Server" ++ VERSION ++ ${CPACK_PACKAGE_VERSION} ++ SOVERSION ++ ${CPACK_PACKAGE_VERSION_MAJOR}) + + if(VRPN_INSTALL) + install(TARGETS +Index: vrpn-version_07.33/CMakeLists.txt +=================================================================== +--- vrpn-version_07.33.orig/CMakeLists.txt ++++ vrpn-version_07.33/CMakeLists.txt +@@ -1244,6 +1244,12 @@ if(VRPN_BUILD_SERVER_LIBRARY) + PROPERTY + LINK_FLAGS + ${SERVER_LINK_FLAGS}) ++ set_target_properties(vrpnserver ++ PROPERTIES ++ VERSION ++ ${CPACK_PACKAGE_VERSION} ++ SOVERSION ++ ${CPACK_PACKAGE_VERSION_MAJOR}) + + if(UNIX) + add_subdirectory(atmellib) +@@ -1298,6 +1304,12 @@ if(VRPN_BUILD_CLIENT_LIBRARY) + PROPERTY + FOLDER + "Library") ++ set_target_properties(vrpn ++ PROPERTIES ++ VERSION ++ ${CPACK_PACKAGE_VERSION} ++ SOVERSION ++ ${CPACK_PACKAGE_VERSION_MAJOR}) + + if(VRPN_INSTALL) + install(TARGETS +Index: vrpn-version_07.33/atmellib/CMakeLists.txt +=================================================================== +--- vrpn-version_07.33.orig/atmellib/CMakeLists.txt ++++ vrpn-version_07.33/atmellib/CMakeLists.txt +@@ -21,6 +21,12 @@ set_property(TARGET + PROPERTY + FOLDER + "Library") ++set_target_properties(vrpn_atmel ++ PROPERTIES ++ VERSION ++ ${CPACK_PACKAGE_VERSION} ++ SOVERSION ++ ${CPACK_PACKAGE_VERSION_MAJOR}) + if(VRPN_INSTALL) + install(TARGETS + vrpn_atmel diff --git a/vrpn.service b/vrpn.service new file mode 100644 index 0000000..57c5607 --- /dev/null +++ b/vrpn.service @@ -0,0 +1,10 @@ +[Unit] +Description=VRPN server +After=network.target + +[Service] +Type=simple +ExecStart=/usr/bin/vrpn_server -f /etc/vrpn.cfg + +[Install] +WantedBy=multi-user.target diff --git a/vrpn.spec b/vrpn.spec new file mode 100644 index 0000000..b3b1043 --- /dev/null +++ b/vrpn.spec @@ -0,0 +1,237 @@ +Name: vrpn +Version: 07.33 +Release: 1%{?dist} +Summary: The Virtual-Reality Peripheral Network + +# linking to wiiuse (GPLv3+) and gpm (GPLv2+) libraries makes the vrpn server +# (libvrpnserver.so and vrpn_server binary, as well as python and java modules) +# GPLv3+-licensed. The rest of files is supplied under the Boost license. +License: Boost and GPLv3+ +URL: https://github.com/vrpn/vrpn/ +Source0: https://github.com/vrpn/vrpn/archive/version_%{version}.tar.gz#/%{name}-version_%{version}.tar.gz +Source1: vrpn.service +Patch0: vrpn-find_modbus.patch +Patch1: vrpn-find_hidapi.patch +Patch2: vrpn-find_jsoncpp.patch +# patch3 from upstream commit 7f961a3 +Patch3: vrpn-fix_library_install_rules.patch +Patch4: vrpn-java_install.patch +Patch5: vrpn-python_install.patch +Patch6: vrpn-soversion.patch +Patch7: vrpn-config_install.patch +Patch8: vrpn-dont_install_garbage.patch + +BuildRequires: cmake +BuildRequires: doxygen +BuildRequires: gcc +BuildRequires: glut-devel +BuildRequires: gpm-devel +BuildRequires: graphviz +BuildRequires: help2man +BuildRequires: hidapi-devel +BuildRequires: java-devel +BuildRequires: jsoncpp-devel +BuildRequires: libGL-devel +BuildRequires: libmodbus-devel +BuildRequires: libudev-devel +BuildRequires: libusb-devel +BuildRequires: perl-Parse-RecDescent +BuildRequires: python2-devel +BuildRequires: python3-devel +BuildRequires: systemd +BuildRequires: swig +BuildRequires: wiiuse-devel + +%systemd_requires + +%description +The Virtual-Reality Peripheral Network (VRPN) is a set of classes within a +library and a set of servers that are designed to implement a +network-transparent interface between application programs and the set of +physical devices (tracker, etc.) used in a virtual-reality (VR) system. The +idea is to have a PC or other host at each VR station that controls the +peripherals (tracker, button device, haptic device, analog inputs, sound, etc). +VRPN provides connections between the application and all of the devices using +the appropriate class-of-service for each type of device sharing this link. The +application remains unaware of the network topology. Note that it is possible +to use VRPN with devices that are directly connected to the machine that the +application is running on, either using separate control programs or running +all as a single program. + + +%package devel +Summary: Development files for the Virtual-Reality Peripheral Network +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description devel +The Virtual-Reality Peripheral Network (VRPN) is a set of classes within a +library and a set of servers that are designed to implement a +network-transparent interface between application programs and the set of +physical devices (tracker, etc.) used in a virtual-reality (VR) system. + +This package contains development files for VRPN libraries. + + +%package doc +Summary: Developer's documentation for VRPN +BuildArch: noarch + +%description doc +The Virtual-Reality Peripheral Network (VRPN) is a set of classes within a +library and a set of servers that are designed to implement a +network-transparent interface between application programs and the set of +physical devices (tracker, etc.) used in a virtual-reality (VR) system. + +This package contains generated VRPN source code documentation. + + +%package java +Summary: Java bindings for the Virtual-Reality Peripheral Network +License: GPLv3+ + +Requires: java-headless +Requires: javapackages-tools + +%description java +The Virtual-Reality Peripheral Network (VRPN) is a set of classes within a +library and a set of servers that are designed to implement a +network-transparent interface between application programs and the set of +physical devices (tracker, etc.) used in a virtual-reality (VR) system. + +This package contains Java bindings for VRPN libraries. + + +%package -n python2-%{name} +Summary: Python 2 bindings for the Virtual-Reality Peripheral Network +License: GPLv3+ + +%python_provide python2-%{name} + +%description -n python2-%{name} +The Virtual-Reality Peripheral Network (VRPN) is a set of classes within a +library and a set of servers that are designed to implement a +network-transparent interface between application programs and the set of +physical devices (tracker, etc.) used in a virtual-reality (VR) system. + +This package contains Python 2 bindings for VRPN libraries. + + +%package -n python3-%{name} +Summary: Python 3 bindings for the Virtual-Reality Peripheral Network +License: GPLv3+ + +%python_provide python3-%{name} + +%description -n python3-%{name} +The Virtual-Reality Peripheral Network (VRPN) is a set of classes within a +library and a set of servers that are designed to implement a +network-transparent interface between application programs and the set of +physical devices (tracker, etc.) used in a virtual-reality (VR) system. + +This package contains Python 3 bindings for VRPN libraries. + + +%prep +%autosetup -n %{name}-version_%{version} -p1 + + +%build +mkdir build +pushd build + +%cmake \ + -DVRPN_GPL_SERVER=ON \ + -DBUILD_TESTING=ON \ + -DVRPN_BUILD_PYTHON_HANDCODED_3X=ON \ + -DVRPN_PYTHON_INSTALL_DIR=%{python3_sitearch} \ + -DJAVA_INSTALL_LIBDIR=%{_libdir}/%{name} \ + -DJAVA_INSTALL_JNIDIR=%{_jnidir} \ + .. +%make_build all doc + +# now build modules for python2 +mv python python3 +%cmake \ + -DVRPN_BUILD_PYTHON_HANDCODED_3X=OFF \ + -DVRPN_BUILD_PYTHON=ON \ + -DVRPN_BUILD_PYTHON_HANDCODED_2X=ON \ + -DVRPN_PYTHON_INSTALL_DIR=%{python2_sitearch} \ + .. +%make_build + +popd + + +%install +%make_install -C build +%make_install -C build/python3 +install -D -m644 %{SOURCE1} %{buildroot}%{_unitdir}/%{name}.service + +# generate man pages +mkdir -p %{buildroot}%{_mandir}/man1 +for prog in ./build/server_src/vrpn_server \ + ./build/client_src/run_auxiliary_logger \ + ./build/client_src/vrpn_print_{devices,messages,performance} +do + progname=$(basename "$prog") + help2man \ + --version-string=%{version} \ + --no-info \ + --no-discard-stderr \ + --output="%{buildroot}%{_mandir}/man1/$progname.1" \ + "$prog" +done + + +%check +pushd build +ctest -VV +popd + + +%post +/sbin/ldconfig +%systemd_post %{name}.service + +%preun +%systemd_preun %{name}.service + +%postun +/sbin/ldconfig +%systemd_postun_with_restart %{name}.service + + +%files +%doc ChangeLog Format +%license README.Legal +%{_libdir}/*.so.* +%{_bindir}/* +%{_datadir}/%{name}-%{version} +%config(noreplace) %{_sysconfdir}/vrpn.cfg +%{_unitdir}/%{name}.service +%{_mandir}/man1/* + +%files devel +%{_includedir}/* +%{_libdir}/*.so + +%files doc +%doc %{_docdir}/%{name}-%{version} +%exclude %{_docdir}/%{name}-%{version}/source-docs/html/*.map +%exclude %{_docdir}/%{name}-%{version}/source-docs/html/*.md5 + +%files java +%{_libdir}/%{name}/libjava_%{name}.so +%{_jnidir}/*.jar + +%files -n python2-%{name} +%{python2_sitearch}/*.so +%{python2_sitearch}/*.py* + +%files -n python3-%{name} +%{python3_sitearch}/*.so + + +%changelog +* Wed Feb 24 2016 Dmitry Mikhirev 07.33-1 +- Initial package