浏览代码

Merge pull request #9791 from Michael-Gardner/HPCC-17340

HPCC-17340 Include libRInside.so and check for Rcpp version at build

Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 8 年之前
父节点
当前提交
a6d31b8273
共有 3 个文件被更改,包括 37 次插入19 次删除
  1. 0 8
      CMakeLists.txt
  2. 25 6
      cmake_modules/FindR.cmake
  3. 12 5
      plugins/Rembed/CMakeLists.txt

+ 0 - 8
CMakeLists.txt

@@ -284,14 +284,6 @@ if(TOP_LEVEL_PROJECT)
         message("-- Auto Detecting Packaging type")
         message("-- Auto Detecting Packaging type")
         message("-- distro uses ${packageManagement}, revision is ${packageRevisionArch}")
         message("-- distro uses ${packageManagement}, revision is ${packageRevisionArch}")
 
 
-        if("${packageManagement}" STREQUAL "RPM")
-            set(CPACK_RPM_SPEC_MORE_DEFINE
-"%define _use_internal_dependency_generator 0
-%define __getdeps() while read file; do /usr/lib/rpm/rpmdeps -%{1} ${file} | %{__grep} -v libRInside.so | %{__grep} -v libRcpp.so ; done | /bin/sort -u
-%define __find_provides /bin/sh -c '%{__getdeps P}'
-%define __find_requires /bin/sh -c '%{__getdeps R}'")
-        endif()
-
         if("${packageManagement}" STREQUAL "DEB")
         if("${packageManagement}" STREQUAL "DEB")
             set(CPACK_PACKAGE_FILE_NAME "${PACKAGE_FILE_NAME_PREFIX}_${CPACK_RPM_PACKAGE_VERSION}-${stagever}${packageRevisionArch}")
             set(CPACK_PACKAGE_FILE_NAME "${PACKAGE_FILE_NAME_PREFIX}_${CPACK_RPM_PACKAGE_VERSION}-${stagever}${packageRevisionArch}")
         elseif("${packageManagement}" STREQUAL "RPM")
         elseif("${packageManagement}" STREQUAL "RPM")

+ 25 - 6
cmake_modules/FindR.cmake

@@ -44,14 +44,33 @@ IF (NOT R_FOUND)
     SET (RCPP_LIBRARY "")    # Newer versions of Rcpp are header-only, with no associated library.
     SET (RCPP_LIBRARY "")    # Newer versions of Rcpp are header-only, with no associated library.
   ENDIF()
   ENDIF()
 
 
+  #Rcpp/config.h
+  #define RCPP_VERSION Rcpp_Version(0,12,3)
+  FILE(STRINGS "${RCPP_INCLUDE_DIR}/Rcpp/config.h" version_string REGEX "#define RCPP_VERSION Rcpp_Version\\(")
+  #major
+  STRING(REGEX REPLACE "#define RCPP_VERSION Rcpp_Version\\(" "" major "${version_string}")
+  STRING(REGEX REPLACE ",[0-9]+,[0-9]+\\)" "" major "${major}")
+  #minor
+  STRING(REGEX REPLACE "#define RCPP_VERSION Rcpp_Version\\([0-9]+," "" minor "${version_string}")
+  STRING(REGEX REPLACE ",[0-9]+\\)" "" minor "${minor}")
+  #patch
+  STRING(REGEX REPLACE "#define RCPP_VERSION Rcpp_Version\\([0-9]+,[0-9]+," "" patch "${version_string}")
+  STRING(REGEX REPLACE "\\)" "" patch "${patch}")
+  SET(RCPP_VERSION_STRING "${major}.${minor}.${patch}")
+
   SET (R_INCLUDE_DIRS ${R_INCLUDE_DIR} ${RINSIDE_INCLUDE_DIR} ${RCPP_INCLUDE_DIR})
   SET (R_INCLUDE_DIRS ${R_INCLUDE_DIR} ${RINSIDE_INCLUDE_DIR} ${RCPP_INCLUDE_DIR})
   SET (R_LIBRARIES ${R_LIBRARY} ${RINSIDE_LIBRARY} ${RCPP_LIBRARY})
   SET (R_LIBRARIES ${R_LIBRARY} ${RINSIDE_LIBRARY} ${RCPP_LIBRARY})
 
 
-  include(FindPackageHandleStandardArgs)
-  find_package_handle_standard_args(R DEFAULT_MSG
-    R_LIBRARIES
-    R_INCLUDE_DIRS
-  )
+  INCLUDE(FindPackageHandleStandardArgs)
+  find_package_handle_standard_args(R
+    REQUIRED_VARS R_LIBRARY
+                  RINSIDE_LIBRARY
+                  R_INCLUDE_DIR
+                  RCPP_INCLUDE_DIR
+                  RINSIDE_INCLUDE_DIR
+                  R_LIBRARIES
+                  R_INCLUDE_DIRS
+    VERSION_VAR RCPP_VERSION_STRING)
 
 
-  MARK_AS_ADVANCED(R_INCLUDE_DIRS R_LIBRARIES)
+  MARK_AS_ADVANCED(R_INCLUDE_DIRS R_LIBRARIES RINSIDE_LIBRARY)
 ENDIF()
 ENDIF()

+ 12 - 5
plugins/Rembed/CMakeLists.txt

@@ -25,7 +25,7 @@
 project(Rembed)
 project(Rembed)
 
 
 if(REMBED)
 if(REMBED)
-    ADD_PLUGIN(Rembed PACKAGES R)
+    ADD_PLUGIN(Rembed PACKAGES R MINVERSION 0.12.1)
     if(MAKE_REMBED)
     if(MAKE_REMBED)
         set(
         set(
             SRCS
             SRCS
@@ -49,15 +49,22 @@ if(REMBED)
         endif()
         endif()
 
 
         HPCC_ADD_LIBRARY(Rembed SHARED ${SRCS})
         HPCC_ADD_LIBRARY(Rembed SHARED ${SRCS})
-        install(
-            TARGETS Rembed
-            DESTINATION plugins)
-
+        SET_DEPENDENCIES(CPACK_DEBIAN_PACKAGE_DEPENDS R-base-core r-cran-rcpp r-cran-inline)
+        SET_DEPENDENCIES(CPACK_RPM_PACKAGE_REQUIRES R-Rcpp)
         target_link_libraries(
         target_link_libraries(
             Rembed
             Rembed
             ${R_LIBRARIES}
             ${R_LIBRARIES}
             eclrtl
             eclrtl
             jlib)
             jlib)
+
+        install(
+            TARGETS Rembed
+            DESTINATION plugins)
+        install(
+            FILES ${RINSIDE_LIBRARY}
+            DESTINATION ${LIB_DIR}
+            PERMISSIONS OWNER_WRITE OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
+            COMPONENT Runtime)
     endif()
     endif()
 endif()
 endif()