Browse Source

HPCC-14924 Fixes for dpkg-shlibdeps conflicting with imported libraries

Signed-off-by: Michael Gardner <michael.gardner@lexisnexis.com>
Michael Gardner 9 years ago
parent
commit
388bd9b9d5

+ 1 - 12
CMakeLists.txt

@@ -116,6 +116,7 @@ if ( PLUGIN )
     HPCC_ADD_SUBDIRECTORY (rtl/nbcd)
     HPCC_ADD_SUBDIRECTORY (rtl/eclrtl)
     HPCC_ADD_SUBDIRECTORY (system/lzma)
+    HPCC_ADD_SUBDIRECTORY (system/lz4_sm)
     HPCC_ADD_SUBDIRECTORY (system/jlib)
     HPCC_ADD_SUBDIRECTORY (dali/base)
     HPCC_ADD_SUBDIRECTORY (common/workunit "CASSANDRAEMBED")
@@ -419,16 +420,4 @@ if(PLATFORM OR CLIENTTOOLS OR REMBED)
     install(FILES ${HPCC_SOURCE_DIR}/${LICENSE_FILE} DESTINATION "." COMPONENT Runtime)
 endif()
 
-if(USE_SHLIBDEPS AND "${packageManagement}" STREQUAL "DEB")
-    install(CODE "
-            execute_process(COMMAND mkdir -p ${INSTALL_DIR}
-                            WORKING_DIRECTORY ${PREFIX})
-            if(EXISTS \"${INSTALL_DIR}/lib\")
-                execute_process(COMMAND rm -f lib
-                                WORKING_DIRECTORY ${INSTALL_DIR})
-            endif()
-            execute_process(COMMAND ln -sf ${CMAKE_BINARY_DIR}/_CPack_Packages/${CPACK_SYSTEM_NAME}/${CPACK_GENERATOR}/${CPACK_PACKAGE_FILE_NAME}${INSTALL_DIR}/lib lib
-                            WORKING_DIRECTORY ${INSTALL_DIR})"
-    COMPONENT Runtime)
-endif()
 include(CPack)

+ 66 - 68
cmake_modules/commonSetup.cmake

@@ -221,8 +221,8 @@ IF ("${COMMONSETUP_DONE}" STREQUAL "")
       set(DEVEL OFF)
   endif()
 
-    # Leave REMBED OFF for compliance with licensing
     if(INCLUDE_PLUGINS)
+        set(REMBED ON)
         set(V8EMBED ON)
         set(MEMCACHED ON)
         set(PYEMBED ON)
@@ -474,70 +474,68 @@ IF ("${COMMONSETUP_DONE}" STREQUAL "")
 
   set ( SCM_GENERATED_DIR ${CMAKE_BINARY_DIR}/generated )
 
-  ###############################################################
-  # Macro for Logging Plugin build in CMake
-
-  macro(LOG_PLUGIN)
-    PARSE_ARGUMENTS(pLOG
-      "OPTION;MDEPS"
-      ""
-      ${ARGN}
-    )
-    LIST(GET pLOG_DEFAULT_ARGS 0 PLUGIN_NAME)
-    if ( ${pLOG_OPTION} )
-        message(STATUS "Building Plugin: ${PLUGIN_NAME}" )
-    else()
-      message("---- WARNING -- Not Building Plugin: ${PLUGIN_NAME}")
-      foreach (dep ${pLOG_MDEPS})
-        MESSAGE("---- WARNING -- Missing dependency: ${dep}")
-      endforeach()
-      if (NOT USE_OPTIONAL)
-        message(FATAL_ERROR "Optional dependencies missing and USE_OPTIONAL not set")
-      endif()
-    endif()
-  endmacro()
-
-  ###############################################################
-  # Macro for adding an optional plugin to the CMake build.
+    ###############################################################
+    # Macro for Logging Plugin build in CMake
 
-  macro(ADD_PLUGIN)
-    PARSE_ARGUMENTS(PLUGIN
-        "PACKAGES;OPTION;MINVERSION;MAXVERSION"
+    macro(LOG_PLUGIN)
+        PARSE_ARGUMENTS(pLOG
+        "OPTION;MDEPS"
         ""
-        ${ARGN}
-    )
-    LIST(GET PLUGIN_DEFAULT_ARGS 0 PLUGIN_NAME)
-    string(TOUPPER ${PLUGIN_NAME} name)
-    set(ALL_PLUGINS_FOUND 1)
-    set(PLUGIN_MDEPS ${PLUGIN_NAME}_mdeps)
-    set(${PLUGIN_MDEPS} "")
-
-    FOREACH(package ${PLUGIN_PACKAGES})
-      set(findvar ${package}_FOUND)
-      string(TOUPPER ${findvar} PACKAGE_FOUND)
-      if ("${PLUGIN_MINVERSION}" STREQUAL "")
-        find_package(${package})
-      else()
-        set(findvar ${package}_VERSION_STRING)
-        string(TOUPPER ${findvar} PACKAGE_VERSION_STRING)
-        find_package(${package} ${PLUGIN_MINVERSION} )
-        if ("${${PACKAGE_VERSION_STRING}}" VERSION_GREATER "${PLUGIN_MAXVERSION}")
-          set(${ALL_PLUGINS_FOUND} 0)
+        ${ARGN})
+        LIST(GET pLOG_DEFAULT_ARGS 0 PLUGIN_NAME)
+        if(${pLOG_OPTION})
+            message(STATUS "Building Plugin: ${PLUGIN_NAME}" )
+        else()
+            message(WARNING "Not Building Plugin: ${PLUGIN_NAME}")
+            foreach (dep ${pLOG_MDEPS})
+                message(WARNING "Missing dependency: ${dep}")
+            endforeach()
+            if(NOT USE_OPTIONAL)
+                message(FATAL_ERROR "Optional dependencies missing and USE_OPTIONAL OFF")
+            endif()
         endif()
-      endif()
-      if (NOT ${PACKAGE_FOUND})
-        set(ALL_PLUGINS_FOUND 0)
-        set(${PLUGIN_MDEPS} ${${PLUGIN_MDEPS}} ${package})
-      endif()
-    ENDFOREACH()
-    option(${PLUGIN_OPTION} "Turn on optional plugin based on availability of dependencies" ${ALL_PLUGINS_FOUND})
-    LOG_PLUGIN(${PLUGIN_NAME} OPTION ${PLUGIN_OPTION} MDEPS ${${PLUGIN_MDEPS}})
-    if(${ALL_PLUGINS_FOUND})
-      set(bPLUGINS ${bPLUGINS} ${PLUGIN_NAME})
-    else()
-      set(nbPLUGINS ${nbPLUGINS} ${PLUGIN_NAME})
-    endif()
-  endmacro()
+    endmacro()
+
+    ###############################################################
+    # Macro for adding an optional plugin to the CMake build.
+
+    macro(ADD_PLUGIN)
+        PARSE_ARGUMENTS(PLUGIN
+            "PACKAGES;MINVERSION;MAXVERSION"
+            ""
+            ${ARGN})
+        LIST(GET PLUGIN_DEFAULT_ARGS 0 PLUGIN_NAME)
+        string(TOUPPER ${PLUGIN_NAME} name)
+        set(ALL_PLUGINS_FOUND 1)
+        set(PLUGIN_MDEPS ${PLUGIN_NAME}_mdeps)
+        set(${PLUGIN_MDEPS} "")
+
+        foreach(package ${PLUGIN_PACKAGES})
+            set(findvar ${package}_FOUND)
+            string(TOUPPER ${findvar} PACKAGE_FOUND)
+            if("${PLUGIN_MINVERSION}" STREQUAL "")
+                find_package(${package})
+            else()
+                set(findvar ${package}_VERSION_STRING)
+                string(TOUPPER ${findvar} PACKAGE_VERSION_STRING)
+                find_package(${package} ${PLUGIN_MINVERSION} )
+                if ("${${PACKAGE_VERSION_STRING}}" VERSION_GREATER "${PLUGIN_MAXVERSION}")
+                    set(${ALL_PLUGINS_FOUND} 0)
+                endif()
+            endif()
+            if(NOT ${PACKAGE_FOUND})
+                set(ALL_PLUGINS_FOUND 0)
+                set(${PLUGIN_MDEPS} ${${PLUGIN_MDEPS}} ${package})
+            endif()
+        endforeach()
+        set(MAKE_${name} ${ALL_PLUGINS_FOUND})
+        LOG_PLUGIN(${PLUGIN_NAME} OPTION ${ALL_PLUGINS_FOUND} MDEPS ${${PLUGIN_MDEPS}})
+        if(${ALL_PLUGINS_FOUND})
+            set(bPLUGINS ${bPLUGINS} ${PLUGIN_NAME})
+        else()
+            set(nbPLUGINS ${nbPLUGINS} ${PLUGIN_NAME})
+        endif()
+    endmacro()
 
   ##################################################################
 
@@ -560,13 +558,13 @@ IF ("${COMMONSETUP_DONE}" STREQUAL "")
 
   ###########################################################################
 
-  if (USE_OPTIONAL)
-    message ("-- USE_OPTIONAL set - missing dependencies for optional features will automatically disable them")
-  endif()
+    if(USE_OPTIONAL)
+        message(WARNING "USE_OPTIONAL set - missing dependencies for optional features will automatically disable them")
+    endif()
 
-  if (NOT "${EXTERNALS_DIRECTORY}" STREQUAL "")
-    message ("-- Using externals directory at ${EXTERNALS_DIRECTORY}")
-  endif()
+    if(NOT "${EXTERNALS_DIRECTORY}" STREQUAL "")
+        message(STATUS "Using externals directory at ${EXTERNALS_DIRECTORY}")
+    endif()
 
   IF ( NOT MAKE_DOCS_ONLY )
       IF ("${EXTERNALS_DIRECTORY}" STREQUAL "")

+ 1 - 1
plugins/Rembed/CMakeLists.txt

@@ -25,7 +25,7 @@
 project(Rembed)
 
 if(REMBED)
-    ADD_PLUGIN(Rembed PACKAGES R OPTION MAKE_REMBED)
+    ADD_PLUGIN(Rembed PACKAGES R)
     if(MAKE_REMBED)
         set(
             SRCS

+ 3 - 1
plugins/cassandra/CMakeLists.txt

@@ -27,7 +27,7 @@ project(cassandraembed)
 if(CASSANDRAEMBED)
     # There is not yet a standard package for cassandra cpp client, and only very modern distros have libuv-dev
     # When there is (and the distros catch up) we may want to add them as dependencies here
-    ADD_PLUGIN(cassandraembed PACKAGES OPTION MAKE_CASSANDRAEMBED)
+    ADD_PLUGIN(cassandraembed)
     if(MAKE_CASSANDRAEMBED)
 
         # until then, we build the required libraries from source
@@ -105,6 +105,8 @@ if(CASSANDRAEMBED)
             endif()
         endif()
 
+        install(CODE "set(ENV{LD_LIBRARY_PATH} \"\$ENV{LD_LIBRARY_PATH}:${PROJECT_BINARY_DIR}:${PROJECT_BINARY_DIR}/cassandra\")")
+
         install(
             TARGETS cassandraembed
             DESTINATION plugins

+ 1 - 1
plugins/javaembed/CMakeLists.txt

@@ -26,7 +26,7 @@
 project(javaembed)
 
 if(JAVAEMBED)
-    ADD_PLUGIN(javaembed PACKAGES JNI OPTION MAKE_JAVAEMBED)
+    ADD_PLUGIN(javaembed PACKAGES JNI)
     if(MAKE_JAVAEMBED)
         set(
             SRCS

+ 14 - 15
plugins/kafka/CMakeLists.txt

@@ -25,9 +25,8 @@
 project(kafka)
 
 if(KAFKA)
-    ADD_PLUGIN(kafka PACKAGES OPTION MAKE_KAFKA)
+    ADD_PLUGIN(kafka)
     if(MAKE_KAFKA)
-
         # librdkafka packages do not include everything we need to properly
         # build against it; until/if they are ever fixed we will need to build
         # our own version of librdkafka from source and include it ourselves
@@ -57,22 +56,23 @@ if(KAFKA)
         # in order to make the built scripts function correctly
 
         add_custom_command(
-            OUTPUT ${LIBRDKAFKA_LIB}
-            COMMAND cp -r ${PROJECT_SOURCE_DIR}/librdkafka ${PROJECT_BINARY_DIR}/src
-            COMMAND cd ${PROJECT_BINARY_DIR}/src && ./configure --prefix=${PROJECT_BINARY_DIR}
-            COMMAND cd ${PROJECT_BINARY_DIR}/src && make && make install
-            COMMENT Copying and building librdkafka)
+		OUTPUT ${LIBRDKAFKA_LIB}
+		COMMAND cp -r ${PROJECT_SOURCE_DIR}/librdkafka ${PROJECT_BINARY_DIR}/src
+		COMMAND cd ${PROJECT_BINARY_DIR}/src && ./configure --prefix=${PROJECT_BINARY_DIR}
+		COMMAND cd ${PROJECT_BINARY_DIR}/src && make && make install
+		COMMENT Copying and building librdkafka)
 
-        add_custom_target(librdkafka-build ALL DEPENDS ${LIBRDKAFKA_LIB})
+	add_custom_target(librdkafka-build ALL DEPENDS ${LIBRDKAFKA_LIB})
 
-        # Add both libraries from librdkafka
+        install(CODE "set(ENV{LD_LIBRARY_PATH} \"\$ENV{LD_LIBRARY_PATH}:${PROJECT_BINARY_DIR}/lib\")")
+	
         add_library(librdkafka SHARED IMPORTED)
-        set_property(TARGET librdkafka PROPERTY IMPORTED_LOCATION ${LIBRDKAFKA_LIB})
-        add_dependencies(librdkafka librdkafka-build)
+	set_property(TARGET librdkafka PROPERTY IMPORTED_LOCATION ${LIBRDKAFKA_LIB})
+	add_dependencies(librdkafka librdkafka-build)
 
-        add_library(librdkafkacpp STATIC IMPORTED)
-        set_property(TARGET librdkafkacpp PROPERTY IMPORTED_LOCATION ${LIBRDKAFKACPP_LIB})
-        add_dependencies(librdkafkacpp librdkafka-build)
+	add_library(librdkafkacpp SHARED IMPORTED)
+	set_property(TARGET librdkafkacpp PROPERTY IMPORTED_LOCATION ${LIBRDKAFKACPP_LIB})
+	add_dependencies(librdkafkacpp librdkafka-build)
 
         set(
             SRCS
@@ -102,7 +102,6 @@ if(KAFKA)
             TARGETS kafka
             DESTINATION plugins)
 
-        # Install our built librdkafka libraries into the RPM
         install(
             FILES ${LIBRDKAFKA_LIB} ${LIBRDKAFKA_LIB_REAL} ${LIBRDKAFKACPP_LIB} ${LIBRDKAFKACPP_LIB_REAL}
             DESTINATION ${LIB_DIR}

+ 1 - 1
plugins/memcached/CMakeLists.txt

@@ -25,7 +25,7 @@
 project( memcached )
 
 if (MEMCACHED)
-    ADD_PLUGIN(memcached PACKAGES LIBMEMCACHED OPTION MAKE_MEMCACHED MINVERSION 1.0.10)
+    ADD_PLUGIN(memcached PACKAGES LIBMEMCACHED MINVERSION 1.0.10)
     if(MAKE_MEMCACHED)
         set(
             SRCS

+ 1 - 1
plugins/mysql/CMakeLists.txt

@@ -25,7 +25,7 @@
 project(mysqlembed)
 
 if(MYSQLEMBED)
-    ADD_PLUGIN(mysqlembed PACKAGES MYSQL OPTION MAKE_MYSQLEMBED)
+    ADD_PLUGIN(mysqlembed PACKAGES MYSQL)
     if(MAKE_MYSQLEMBED)
         set(
             SRCS

+ 1 - 1
plugins/pyembed/CMakeLists.txt

@@ -29,7 +29,7 @@ set(DEBUG_PYTHON_LIBRARY "/usr/lib/libpython2.7_d.so")
 project(pyembed)
 
 if(PYEMBED)
-    ADD_PLUGIN(pyembed PACKAGES PythonLibs OPTION MAKE_PYEMBED MINVERSION 2.6 MAXVERSION 2.7)
+    ADD_PLUGIN(pyembed PACKAGES PythonLibs MINVERSION 2.6 MAXVERSION 2.7)
     if(MAKE_PYEMBED)
         set(
             SRCS

+ 1 - 1
plugins/redis/CMakeLists.txt

@@ -25,7 +25,7 @@
 project(redis)
 
 if(REDIS)
-    ADD_PLUGIN(redis PACKAGES HIREDIS OPTION MAKE_REDIS)
+    ADD_PLUGIN(redis PACKAGES HIREDIS)
     if(MAKE_REDIS)
         set(
             SRCS

+ 2 - 2
plugins/sqlite3/CMakeLists.txt

@@ -25,8 +25,8 @@
 project(sqlite3embed)
 
 if(SQLITE3EMBED)
-    ADD_PLUGIN(sqlite3embed PACKAGES SQLITE3 OPTION MAKE_SQLITEEMBED)
-    if(MAKE_SQLITEEMBED)
+    ADD_PLUGIN(sqlite3embed PACKAGES SQLITE3)
+    if(MAKE_SQLITE3EMBED)
         set(
             SRCS
             sqlite3.cpp)

+ 1 - 1
plugins/v8embed/CMakeLists.txt

@@ -25,7 +25,7 @@
 project(v8embed)
 
 if(V8EMBED)
-    ADD_PLUGIN(v8embed PACKAGES V8 OPTION MAKE_V8EMBED)
+    ADD_PLUGIN(v8embed PACKAGES V8)
     if(MAKE_V8EMBED)
         set(
             SRCS