From c8f5ab52f1ff81d2db3aa8701a7e45a30d0062c2 Mon Sep 17 00:00:00 2001 From: Tomas Hrcka Date: Tue, 31 Oct 2023 11:19:46 +0100 Subject: [PATCH] Unretirement request: https://pagure.io/releng/issue/11750 --- .gitignore | 1 + dead.package | 1 - sources | 1 + vrpn-config_install.patch | 24 +++ vrpn-dont_install_garbage.patch | 103 ++++++++++ vrpn-find_hidapi.patch | 20 ++ vrpn-find_jsoncpp.patch | 12 ++ vrpn-find_modbus.patch | 25 +++ vrpn-fix_library_install_rules.patch | 160 +++++++++++++++ vrpn-java_install.patch | 177 +++++++++++++++++ vrpn-python_install.patch | 64 ++++++ vrpn-soversion.patch | 109 ++++++++++ vrpn-wait.patch | 31 +++ vrpn.service | 10 + vrpn.spec | 284 +++++++++++++++++++++++++++ 15 files changed, 1021 insertions(+), 1 deletion(-) create mode 100644 .gitignore delete mode 100644 dead.package create mode 100644 sources create mode 100644 vrpn-config_install.patch create mode 100644 vrpn-dont_install_garbage.patch create mode 100644 vrpn-find_hidapi.patch create mode 100644 vrpn-find_jsoncpp.patch create mode 100644 vrpn-find_modbus.patch create mode 100644 vrpn-fix_library_install_rules.patch create mode 100644 vrpn-java_install.patch create mode 100644 vrpn-python_install.patch create mode 100644 vrpn-soversion.patch create mode 100644 vrpn-wait.patch create mode 100644 vrpn.service create mode 100644 vrpn.spec diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..897c42a --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/vrpn-version_07.33.tar.gz diff --git a/dead.package b/dead.package deleted file mode 100644 index 5204a84..0000000 --- a/dead.package +++ /dev/null @@ -1 +0,0 @@ -Orphaned for 6+ weeks diff --git a/sources b/sources new file mode 100644 index 0000000..90e342c --- /dev/null +++ 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-wait.patch b/vrpn-wait.patch new file mode 100644 index 0000000..9dd04d0 --- /dev/null +++ b/vrpn-wait.patch @@ -0,0 +1,31 @@ +Index: vrpn-version_07.33/vrpn_Connection.C +=================================================================== +--- vrpn-version_07.33.orig/vrpn_Connection.C ++++ vrpn-version_07.33/vrpn_Connection.C +@@ -2486,11 +2486,7 @@ static int vrpn_start_server(const char + for (waitloop = 0; waitloop < (SERVCOUNT); waitloop++) { + int ret; + pid_t deadkid; +-#if defined(sparc) || defined(FreeBSD) || defined(_AIX) || defined(__ANDROID__) +- int status; // doesn't exist on sparc_solaris or FreeBSD +-#else +- union wait status; +-#endif ++ int status; + + /* Check to see if they called back yet. */ + ret = vrpn_poll_for_accept(server_sock, &child_socket, SERVWAIT); +@@ -2504,13 +2500,7 @@ static int vrpn_start_server(const char + } + + /* Check to see if the child is dead yet */ +-#if defined(hpux) || defined(sgi) || defined(__hpux) || defined(__CYGWIN__) || \ +- defined(__APPLE__) +- /* hpux include files have the wrong declaration */ +- deadkid = wait3((int *)&status, WNOHANG, NULL); +-#else + deadkid = wait3(&status, WNOHANG, NULL); +-#endif + if (deadkid == pid) { + fprintf(stderr, "vrpn_start_server: server process exited\n"); + vrpn_closeSocket(server_sock); 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..74a92c9 --- /dev/null +++ b/vrpn.spec @@ -0,0 +1,284 @@ +%undefine __cmake_in_source_build + +Name: vrpn +Version: 07.33 +Release: 26%{?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 +Patch9: vrpn-wait.patch + +BuildRequires: gcc-c++ +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: 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 python3-%{name} +Summary: Python 3 bindings for the Virtual-Reality Peripheral Network +License: GPLv3+ + +%{?python_provide:%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 +%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} \ +%ifarch %{arm} + -DJAVA_AWT_LIBRARY=%{_libdir}/jvm/java/lib/aarch32/libjawt.so \ +%endif # arch %%{arm} + %{nil} +%cmake_build +%cmake_build --target doc + + +%install +%cmake_install +install -D %{_vpath_builddir}/python/vrpn.so %{buildroot}%{python3_sitearch}/vrpn.so +install -D -m644 %{SOURCE1} %{buildroot}%{_unitdir}/%{name}.service + +# generate man pages +mkdir -p %{buildroot}%{_mandir}/man1 +for prog in ./%{_vpath_builddir}/server_src/vrpn_server \ + ./%{_vpath_builddir}/client_src/run_auxiliary_logger \ + ./%{_vpath_builddir}/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 +%ctest + + +%post +%systemd_post %{name}.service + +%preun +%systemd_preun %{name}.service + +%postun +%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 python3-%{name} +%{python3_sitearch}/*.so + + +%changelog +* Sat Aug 01 2020 Fedora Release Engineering - 07.33-26 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Wed Jul 29 2020 Fedora Release Engineering - 07.33-25 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Sat Jul 11 2020 Jiri Vanek - 07.33-24 +- Rebuilt for JDK-11, see https://fedoraproject.org/wiki/Changes/Java11 + +* Sat May 30 2020 Björn Esser - 07.33-23 +- Rebuild (jsoncpp) + +* Tue May 26 2020 Miro Hrončok - 07.33-22 +- Rebuilt for Python 3.9 + +* Fri Jan 31 2020 Fedora Release Engineering - 07.33-21 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Thu Nov 14 2019 Björn Esser - 07.33-20 +- Rebuild (jsoncpp) + +* Mon Aug 19 2019 Miro Hrončok - 07.33-19 +- Rebuilt for Python 3.8 + +* Sat Jul 27 2019 Fedora Release Engineering - 07.33-18 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Wed Jul 03 2019 Björn Esser - 07.33-17 +- Rebuild (jsoncpp) + +* Sun Feb 03 2019 Fedora Release Engineering - 07.33-16 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Mon Jan 14 2019 Miro Hrončok - 07.33-15 +- Subpackage python2-vrpn has been removed + See https://fedoraproject.org/wiki/Changes/Mass_Python_2_Package_Removal + +* Sat Jul 14 2018 Fedora Release Engineering - 07.33-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Tue Jun 19 2018 Miro Hrončok - 07.33-13 +- Rebuilt for Python 3.7 + +* Fri Feb 09 2018 Fedora Release Engineering - 07.33-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Tue Dec 26 2017 Björn Esser - 07.33-11 +- Rebuilt for jsoncpp.so.20 + +* Sat Sep 02 2017 Björn Esser - 07.33-10 +- Fix problems with finding JNI on %%arm + +* Fri Sep 01 2017 Björn Esser - 07.33-9 +- Rebuilt for jsoncpp-1.8.3 + +* Thu Aug 03 2017 Fedora Release Engineering - 07.33-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 07.33-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Sat Feb 11 2017 Fedora Release Engineering - 07.33-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Mon Dec 19 2016 Miro Hrončok - 07.33-5 +- Rebuild for Python 3.6 + +* Mon Oct 03 2016 Björn Esser - 07.33-4 +- Rebuilt for libjsoncpp.so.11 + +* Tue Jul 19 2016 Fedora Release Engineering - 07.33-3 +- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages + +* Wed Jun 8 2016 Dmitry Mikhirev 07.33-2 +- Fix build for fc25 (#1341988) +- Fix installation of python 3 module (#1342509) + +* Wed Feb 24 2016 Dmitry Mikhirev 07.33-1 +- Initial package