diff --git a/CMakeLists.txt b/CMakeLists.txt index 204728dc8..990b9e40a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -93,11 +93,6 @@ endif() set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/${MAXSCALE_LIBDIR}) -# Only do packaging if configured -if(PACKAGE) - include(cmake/package.cmake) -endif() - # Make sure the release notes for this release are present if it is a stable one if(${MAXSCALE_VERSION} MATCHES "-stable") file(GLOB ${CMAKE_SOURCE_DIR}/Documentation/Release-Notes RELEASE_NOTES *${MAXSCALE_VERSION_NUMERIC}*.md) @@ -238,6 +233,8 @@ if(WITH_SCRIPTS) endif() if(PACKAGE) + # Configure packaging + include(cmake/package.cmake) # Install the files copied by the postinst script into the share folder install_program(${CMAKE_BINARY_DIR}/maxscale core) @@ -245,7 +242,8 @@ if(PACKAGE) install_program(${CMAKE_BINARY_DIR}/postinst core) install_program(${CMAKE_BINARY_DIR}/postrm core) - # CPack needs to be included after everything is configured + # The inclusion of CPack needs to be the last effective packaging related command. All + # configurations to packaging done after the call will be ignored. include(CPack) endif() @@ -302,11 +300,6 @@ add_custom_target(generate_html -P generate-html.cmake COMMENT "Generating HTML files" VERBATIM) -if(PACKAGE) - message(STATUS "You can install startup scripts and system configuration files for MaxScale by running the 'postinst' shell script located at ${CMAKE_INSTALL_PREFIX}.") - message(STATUS "To remove these installed files, run the 'postrm' shell script located in the same folder.") -endif() - # NOTE: If you make changes here, ensure they are compatible with the # situation in paths.h.in. if (NOT PACKAGE) diff --git a/cmake/package.cmake b/cmake/package.cmake index da710ff18..b465dcc76 100644 --- a/cmake/package.cmake +++ b/cmake/package.cmake @@ -19,22 +19,49 @@ endif() set(CPACK_SET_DESTDIR ON) set(CPACK_PACKAGE_RELOCATABLE FALSE) set(CPACK_STRIP_FILES FALSE) -set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "MaxScale - The Dynamic Data Routing Platform") set(CPACK_PACKAGE_VERSION_MAJOR "${MAXSCALE_VERSION_MAJOR}") set(CPACK_PACKAGE_VERSION_MINOR "${MAXSCALE_VERSION_MINOR}") set(CPACK_PACKAGE_VERSION_PATCH "${MAXSCALE_VERSION_PATCH}") set(CPACK_PACKAGE_CONTACT "MariaDB Corporation Ab") set(CPACK_PACKAGE_VENDOR "MariaDB Corporation Ab") -set(CPACK_PACKAGE_DESCRIPTION_FILE ${CMAKE_SOURCE_DIR}/etc/DESCRIPTION) set(CPACK_PACKAGING_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") -# If building devel package, change the description. Deb- and rpm-specific parameters are set in their -# dedicated files "package_(deb/rpm).cmake" -if (TARGET_COMPONENT STREQUAL "devel") - set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "MaxScale plugin development headers") - set(DESCRIPTION_TEXT "\ - This package contains header files required for plugin module development for MariaDB MaxScale. \ -The source of MariaDB MaxScale is not required.") +# Descriptions for the main packages +set(core_PACKAGE_SUMMARY "MaxScale - An intelligent database proxy") +set(core_PACKAGE_DESCRIPTION " +The MariaDB Corporation MaxScale is an intelligent proxy that allows forwarding of +database statements to one or more database servers using complex rules, +a semantic understanding of the database statements and the roles of +the various servers within the backend cluster of databases. + +MaxScale is designed to provide load balancing and high availability +functionality transparently to the applications. In addition it provides +a highly scalable and flexible architecture, with plugin components to +support different protocols and routing decisions.") + +set(devel_PACKAGE_SUMMARY "MaxScale plugin development headers") +set(devel_PACKAGE_DESCRIPTION " +This package contains header files required for plugin module development for +MariaDB MaxScale. The source of MariaDB MaxScale is not required.") + +set(experimental_PACKAGE_SUMMARY "MaxScale experimental modules") +set(experimental_PACKAGE_DESCRIPTION " +This package contains experimental and community contributed modules for MariaDB +MaxScale. The packages are not fully supported parts of MaxScale and should be +considered as alpha quality software.") + +set(all_PACKAGE_SUMMARY ${core_PACKAGE_SUMMARY}) +set(all_PACKAGE_DESCRIPTION ${core_PACKAGE_DESCRIPTION}) + +# Set the package description for this component +if (${TARGET_COMPONENT}_PACKAGE_DESCRIPTION AND ${TARGET_COMPONENT}_PACKAGE_SUMMARY) + set(CPACK_PACKAGE_DESCRIPTION_SUMMARY ${${TARGET_COMPONENT}_PACKAGE_SUMMARY}) + set(CPACK_PACKAGE_DESCRIPTION ${${TARGET_COMPONENT}_PACKAGE_DESCRIPTION}) + set(DESCRIPTION_TEXT ${${TARGET_COMPONENT}_PACKAGE_DESCRIPTION}) + +elseif((${TARGET_COMPONENT}_PACKAGE_DESCRIPTION OR ${TARGET_COMPONENT}_PACKAGE_SUMMARY)) + message(FATAL_ERROR "Component '${TARGET_COMPONENT}' does not define both " + "${TARGET_COMPONENT}_PACKAGE_DESCRIPTION and ${TARGET_COMPONENT}_PACKAGE_SUMMARY variables.") endif() # If we're building something other than the main package, append the target name diff --git a/cmake/package_rpm.cmake b/cmake/package_rpm.cmake index d4787c5d2..2b583fb8e 100644 --- a/cmake/package_rpm.cmake +++ b/cmake/package_rpm.cmake @@ -3,11 +3,18 @@ set(CPACK_GENERATOR "${CPACK_GENERATOR};RPM") set(CPACK_RPM_PACKAGE_RELEASE ${MAXSCALE_BUILD_NUMBER}) set(CPACK_RPM_PACKAGE_VENDOR "MariaDB Corporation Ab") -set(CPACK_RPM_PACKAGE_LICENSE "MariaDB BSL") set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION "/etc /etc/ld.so.conf.d /etc/init.d /etc/rc.d/init.d /usr/share/man /usr/share/man1") set(CPACK_RPM_SPEC_MORE_DEFINE "%define ignore \#") set(CPACK_RPM_PACKAGE_NAME "${CPACK_PACKAGE_NAME}") set(CPACK_RPM_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}") +set(CPACK_RPM_PACKAGE_DESCRIPTION "${CPACK_PACKAGE_DESCRIPTION}") + +# If the package defines an explicit license, use that. Otherwise, use BSL 1.1 +if (${TARGET_COMPONENT}_LICENSE) + set(CPACK_RPM_PACKAGE_LICENSE ${TARGET_COMPONENT}_LICENSE) +else() + set(CPACK_RPM_PACKAGE_LICENSE "MariaDB BSL 1.1") +endif() set(IGNORED_DIRS "%ignore /etc" @@ -30,8 +37,6 @@ if(TARGET_COMPONENT STREQUAL "core") # Installing this prevents RPM from deleting the /var/lib/maxscale folder install(DIRECTORY DESTINATION ${MAXSCALE_VARDIR}/lib/maxscale) -elseif(TARGET_COMPONENT STREQUAL "devel") - set(CPACK_RPM_PACKAGE_DESCRIPTION "${CPACK_PACKAGE_DESCRIPTION_SUMMARY}\n${DESCRIPTION_TEXT}") endif() if(EXTRA_PACKAGE_DEPENDENCIES) diff --git a/connectors/cdc-connector/CMakeLists.txt b/connectors/cdc-connector/CMakeLists.txt index f53b2cd40..acb561009 100644 --- a/connectors/cdc-connector/CMakeLists.txt +++ b/connectors/cdc-connector/CMakeLists.txt @@ -10,3 +10,8 @@ set_target_properties(cdc_connector_static PROPERTIES OUTPUT_NAME cdc_connector) install_dev_library(cdc_connector cdc-connector) install_dev_library(cdc_connector_static cdc-connector) install_header(cdc_connector.h cdc-connector) +install_file(LICENSE cdc-connector) + +set(cdc-connector_PACKAGE_SUMMARY "MaxScale CDC Connector" CACHE INTERNAL "") +set(cdc-connector_PACKAGE_DESCRIPTION "The C++ connector for the MariaDB MaxScale CDC system." CACHE INTERNAL "") +set(cdc-connector_LICENSE "LGPLv2.1" CACHE INTERNAL "") diff --git a/etc/DESCRIPTION b/etc/DESCRIPTION deleted file mode 100644 index c86958395..000000000 --- a/etc/DESCRIPTION +++ /dev/null @@ -1,9 +0,0 @@ -The MariaDB Corporation MaxScale is an intelligent proxy that allows forwarding of -database statements to one or more database servers using complex rules, -a semantic understanding of the database statements and the roles of -the various servers within the backend cluster of databases. - -MaxScale is designed to provide load balancing and high availability -functionality transparently to the applications. In addition it provides -a highly scalable and flexible architecture, with plugin components to -support different protocols and routing decisions.