# ------------------------------------------------------------------------------ # Packaging # ------------------------------------------------------------------------------ # -- Define which package generators to use, depending on the current # platform ------------------------------------------------------------------ if(APPLE) list(APPEND CPACK_GENERATOR PackageMaker ) elseif(UNIX) debian_version(DEB_VERSION) if(DEB_VERSION AND NOT (DEB_VERSION STREQUAL "DEB_VERSION-NOTFOUND")) set(IS_DEBIAN "True") endif() rh_version(RH_VERSION) if(RH_VERSION AND NOT (RH_VERSION STREQUAL "RH_VERSION-NOTFOUND")) set(IS_REDHAT "True") endif() if(IS_REDHAT) message(STATUS "Detected RH version ${RH_VERSION}") list(APPEND CPACK_GENERATOR RPM ) elseif(IS_DEBIAN) message(STATUS "Detected Debian version ${DEB_VERSION}") # By default, the cmake flag -DCREATE_RPM_FOR_UBUNTU is not # set to any value. The default behavior is to create a .deb # artifact when MADlib is compiled on Ubuntu. # If we instead want to create an RPM artifact for MADlib # on Ubuntu, then the cmake flag -DCREATE_RPM_FOR_UBUNTU can # be set to some value (say True), and we will only create # an RPM artifact on Ubuntu (i.e., we create an rpm instead # of the default .deb). # Note that package alien must already be installed for # building an RPM on Ubuntu. if(CREATE_RPM_FOR_UBUNTU) list(APPEND CPACK_GENERATOR RPM ) else(CREATE_RPM_FOR_UBUNTU) list(APPEND CPACK_GENERATOR DEB ) endif(CREATE_RPM_FOR_UBUNTU) endif() endif() # -- General settings for all/multiple packages generators --------------------- if(PACKAGE_SUFFIX) set(_PACKAGE_SUFFIX "-${PACKAGE_SUFFIX}") else(PACKAGE_SUFFIX) set(_PACKAGE_SUFFIX "") endif(PACKAGE_SUFFIX) set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/description.txt") set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Apache MADlib is an Open-Source Library for Scalable in-Database Analytics") set(CPACK_PACKAGE_FILE_NAME "madlib${_PACKAGE_SUFFIX}-${MADLIB_VERSION_STRING_NO_HYPHEN}-${CMAKE_SYSTEM_NAME}") set(CPACK_PACKAGE_INSTALL_DIRECTORY "madlib") set(CPACK_PACKAGE_NAME "MADlib${_PACKAGE_SUFFIX}") set(CPACK_PACKAGE_VENDOR "Apache MADlib") set(CPACK_PACKAGE_VERSION ${MADLIB_VERSION_STRING_NO_HYPHEN}) set(CPACK_PACKAGE_VERSION_MAJOR ${MADLIB_VERSION_MAJOR}) set(CPACK_PACKAGE_VERSION_MINOR ${MADLIB_VERSION_MINOR}) set(CPACK_PACKAGE_VERSION_PATCH ${MADLIB_VERSION_PATCH}) # CPACK_PACKAGING_INSTALL_PREFIX has to be set in the generator-specific # section! set(CPACK_RPM_USER_BINARY_SPECFILE ${CMAKE_CURRENT_SOURCE_DIR}/madlib.spec.in) # -- Set settings for specific package generators ------------------------------ add_subdirectory(PackageMaker) add_subdirectory(PGXN) add_subdirectory(RPM) add_subdirectory(DEB) # gppkg depends on macros from RPM! add_subdirectory(gppkg) # -- Finally do the packaging! ------------------------------------------------- if(APPLE) set(CPACK_PREFLIGHT_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/preflight.sh) set(CPACK_POSTFLIGHT_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/postflight.sh) set(CPACK_MONOLITHIC_INSTALL 1) elseif(IS_REDHAT) set(CPACK_RPM_POST_INSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/rpm_post.sh") set(CPACK_RPM_POST_UNINSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/rpm_post_uninstall.sh") set(CPACK_MONOLITHIC_INSTALL 1) elseif(IS_DEBIAN) if(NOT CREATE_RPM_FOR_UBUNTU) set(CPACK_PACKAGE_FILE_NAME "madlib${_PACKAGE_SUFFIX}-${MADLIB_VERSION_STRING}-${CMAKE_SYSTEM_NAME}") endif(NOT CREATE_RPM_FOR_UBUNTU) set(CPACK_PACKAGE_VERSION ${MADLIB_VERSION_STRING}) set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_SOURCE_DIR}/DEB/config;${CMAKE_CURRENT_SOURCE_DIR}/DEB/templates;${CMAKE_CURRENT_SOURCE_DIR}/DEB/preinst;${CMAKE_CURRENT_SOURCE_DIR}/DEB/postinst;${CMAKE_CURRENT_SOURCE_DIR}/DEB/postrm") endif() include(CPack) # -- We can now use CPack commands to do customization ------------------------- cpack_add_component(doc DISPLAY_NAME Documentation DESCRIPTION "API reference and documentation (generated with Doxygen)." ) cpack_add_component(core DISPLAY_NAME "Madlib Core" DESCRIPTION "DBMS-independent files installed with every MADlib installation." REQUIRED ) cpack_add_component_group(ports DISPLAY_NAME "DBMS-Specific Components" DESCRIPTION "DBMS-specific files and libraries." EXPANDED ) file(GLOB PORT_COMPONENTS "${CMAKE_CURRENT_BINARY_DIR}/Component_*.cmake") foreach(PORT_COMPONENT ${PORT_COMPONENTS}) include("${PORT_COMPONENT}") endforeach(PORT_COMPONENT)