Add TARBALL variable to CMake
The TARBALL variable controls if a special tar.gz package is built when packages are generated. This package has a different directory structure compared to the RPM/DEB packages. If RPM/DEB packages are built, tar.gz packages are not built. This makes RPM/DEB generation faster and allows tarballs to be built separately with a proper directory structures.
This commit is contained in:
102
CMakeLists.txt
102
CMakeLists.txt
@ -98,6 +98,61 @@ endif()
|
|||||||
|
|
||||||
set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/${MAXSCALE_LIBDIR})
|
set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/${MAXSCALE_LIBDIR})
|
||||||
|
|
||||||
|
# Only do packaging if configured
|
||||||
|
if(PACKAGE)
|
||||||
|
|
||||||
|
execute_process(COMMAND uname -m COMMAND tr -d '\n' OUTPUT_VARIABLE CPACK_PACKAGE_ARCHITECTURE)
|
||||||
|
# Install the files copied by the postinst script into the share folder
|
||||||
|
install(PROGRAMS ${CMAKE_BINARY_DIR}/maxscale DESTINATION ${MAXSCALE_SHAREDIR})
|
||||||
|
install(FILES ${CMAKE_BINARY_DIR}/maxscale.conf DESTINATION ${MAXSCALE_SHAREDIR})
|
||||||
|
install(PROGRAMS ${CMAKE_BINARY_DIR}/postinst DESTINATION ${MAXSCALE_SHAREDIR})
|
||||||
|
install(PROGRAMS ${CMAKE_BINARY_DIR}/postrm DESTINATION ${MAXSCALE_SHAREDIR})
|
||||||
|
if(${CMAKE_VERSION} VERSION_LESS 2.8.12)
|
||||||
|
message(WARNING "CMake version is ${CMAKE_VERSION}. Building of packages requires version 2.8.12 or greater.")
|
||||||
|
else()
|
||||||
|
|
||||||
|
# Generic CPack configuration variables
|
||||||
|
SET(CPACK_SET_DESTDIR ON)
|
||||||
|
set(CPACK_STRIP_FILES FALSE)
|
||||||
|
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "MaxScale")
|
||||||
|
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")
|
||||||
|
if(DISTRIB_SUFFIX)
|
||||||
|
set(CPACK_PACKAGE_FILE_NAME "maxscale-${MAXSCALE_VERSION}-${MAXSCALE_BUILD_NUMBER}.${DISTRIB_SUFFIX}.${CPACK_PACKAGE_ARCHITECTURE}" CACHE STRING "MaxScale package filename")
|
||||||
|
else()
|
||||||
|
set(CPACK_PACKAGE_FILE_NAME "maxscale-${MAXSCALE_VERSION}-${MAXSCALE_BUILD_NUMBER}.${CPACK_PACKAGE_ARCHITECTURE}" CACHE STRING "MaxScale package filename")
|
||||||
|
endif()
|
||||||
|
set(CPACK_PACKAGE_NAME "maxscale")
|
||||||
|
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}")
|
||||||
|
|
||||||
|
# See if we are on a RPM-capable or DEB-capable system
|
||||||
|
find_program(RPMBUILD rpmbuild)
|
||||||
|
find_program(DEBBUILD dpkg-buildpackage)
|
||||||
|
|
||||||
|
if(TARBALL)
|
||||||
|
include(cmake/package_tgz.cmake)
|
||||||
|
|
||||||
|
elseif (NOT ( ${RPMBUILD} STREQUAL "RPMBUILD-NOTFOUND" ) OR NOT ( ${DEBBUILD} STREQUAL "DEBBUILD-NOTFOUND" ))
|
||||||
|
if(NOT ( ${RPMBUILD} STREQUAL "RPMBUILD-NOTFOUND" ) )
|
||||||
|
include(cmake/package_rpm.cmake)
|
||||||
|
message(STATUS "Generating RPM packages")
|
||||||
|
endif()
|
||||||
|
if(NOT ( ${DEBBUILD} STREQUAL "DEBBUILD-NOTFOUND" ) )
|
||||||
|
include(cmake/package_deb.cmake)
|
||||||
|
message(STATUS "Generating DEB packages for ${DEB_ARCHITECTURE}")
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
message(FATAL_ERROR "Could not automatically resolve the package generator and no generators "
|
||||||
|
"defined on the command line. Please install distribution specific packaging software or "
|
||||||
|
"define -DTARBALL=Y to build tar.gz packages.")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
# Make sure the release notes for this release are present if it is a stable one
|
# Make sure the release notes for this release are present if it is a stable one
|
||||||
if(${MAXSCALE_VERSION} MATCHES "-stable")
|
if(${MAXSCALE_VERSION} MATCHES "-stable")
|
||||||
file(GLOB ${CMAKE_SOURCE_DIR}/Documentation/Release-Notes RELEASE_NOTES *${MAXSCALE_VERSION_NUMERIC}*.md)
|
file(GLOB ${CMAKE_SOURCE_DIR}/Documentation/Release-Notes RELEASE_NOTES *${MAXSCALE_VERSION_NUMERIC}*.md)
|
||||||
@ -243,53 +298,8 @@ if(WITH_SCRIPTS)
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Only do packaging if configured
|
|
||||||
if(PACKAGE)
|
if(PACKAGE)
|
||||||
|
include(CPack)
|
||||||
execute_process(COMMAND uname -m COMMAND tr -d '\n' OUTPUT_VARIABLE CPACK_PACKAGE_ARCHITECTURE)
|
|
||||||
# Install the files copied by the postinst script into the share folder
|
|
||||||
install(PROGRAMS ${CMAKE_BINARY_DIR}/maxscale DESTINATION ${MAXSCALE_SHAREDIR})
|
|
||||||
install(FILES ${CMAKE_BINARY_DIR}/maxscale.conf DESTINATION ${MAXSCALE_SHAREDIR})
|
|
||||||
install(PROGRAMS ${CMAKE_BINARY_DIR}/postinst DESTINATION ${MAXSCALE_SHAREDIR})
|
|
||||||
install(PROGRAMS ${CMAKE_BINARY_DIR}/postrm DESTINATION ${MAXSCALE_SHAREDIR})
|
|
||||||
if(${CMAKE_VERSION} VERSION_LESS 2.8.12)
|
|
||||||
message(WARNING "CMake version is ${CMAKE_VERSION}. Building of packages requires version 2.8.12 or greater.")
|
|
||||||
else()
|
|
||||||
|
|
||||||
# Generic CPack configuration variables
|
|
||||||
SET(CPACK_SET_DESTDIR ON)
|
|
||||||
set(CPACK_STRIP_FILES FALSE)
|
|
||||||
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "MaxScale")
|
|
||||||
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")
|
|
||||||
if(DISTRIB_SUFFIX)
|
|
||||||
set(CPACK_PACKAGE_FILE_NAME "maxscale-${MAXSCALE_VERSION}-${MAXSCALE_BUILD_NUMBER}.${DISTRIB_SUFFIX}.${CPACK_PACKAGE_ARCHITECTURE}" CACHE STRING "MaxScale package filename")
|
|
||||||
else()
|
|
||||||
set(CPACK_PACKAGE_FILE_NAME "maxscale-${MAXSCALE_VERSION}-${MAXSCALE_BUILD_NUMBER}.${CPACK_PACKAGE_ARCHITECTURE}" CACHE STRING "MaxScale package filename")
|
|
||||||
endif()
|
|
||||||
set(CPACK_PACKAGE_NAME "maxscale")
|
|
||||||
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}")
|
|
||||||
|
|
||||||
# See if we are on a RPM-capable or DEB-capable system
|
|
||||||
find_program(RPMBUILD rpmbuild)
|
|
||||||
find_program(DEBBUILD dpkg-buildpackage)
|
|
||||||
set(CPACK_GENERATOR "TGZ")
|
|
||||||
|
|
||||||
if(NOT ( ${RPMBUILD} STREQUAL "RPMBUILD-NOTFOUND" ) )
|
|
||||||
include(cmake/package_rpm.cmake)
|
|
||||||
message(STATUS "Generating RPM packages")
|
|
||||||
endif()
|
|
||||||
if(NOT ( ${DEBBUILD} STREQUAL "DEBBUILD-NOTFOUND" ) )
|
|
||||||
include(cmake/package_deb.cmake)
|
|
||||||
message(STATUS "Generating DEB packages for ${DEB_ARCHITECTURE}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
include(CPack)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# uninstall target
|
# uninstall target
|
||||||
|
@ -87,6 +87,7 @@ _NAME_=_VALUE_ format (e.g. `-DBUILD_TESTS=Y`).
|
|||||||
|BUILD_TESTS|Build tests|
|
|BUILD_TESTS|Build tests|
|
||||||
|WITH_SCRIPTS|Install systemd and init.d scripts|
|
|WITH_SCRIPTS|Install systemd and init.d scripts|
|
||||||
|PACKAGE|Enable building of packages|
|
|PACKAGE|Enable building of packages|
|
||||||
|
|TARBALL|Build tar.gz packages, requires PACKAGE=Y|
|
||||||
|
|
||||||
**Note**: You can look into [defaults.cmake](../../cmake/defaults.cmake) for a
|
**Note**: You can look into [defaults.cmake](../../cmake/defaults.cmake) for a
|
||||||
list of the CMake variables.
|
list of the CMake variables.
|
||||||
@ -152,7 +153,10 @@ make test
|
|||||||
make package
|
make package
|
||||||
```
|
```
|
||||||
|
|
||||||
This will create a tarball and a RPM/DEB package.
|
This will create a RPM/DEB package.
|
||||||
|
|
||||||
|
To build a tarball, add `-DTARBALL=Y` to the cmake invokation. This will create
|
||||||
|
a _maxscale-x.y.z.tar.gz_ file where _x.y.z_ is the version number.
|
||||||
|
|
||||||
Some Debian and Ubuntu systems suffer from a bug where `make package` fails
|
Some Debian and Ubuntu systems suffer from a bug where `make package` fails
|
||||||
with errors from dpkg-shlibdeps. This can be fixed by running `make` before
|
with errors from dpkg-shlibdeps. This can be fixed by running `make` before
|
||||||
|
19
cmake/package_tgz.cmake
Normal file
19
cmake/package_tgz.cmake
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# Tarball package configuration
|
||||||
|
message(STATUS "Generating tar.gz packages")
|
||||||
|
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH FALSE)
|
||||||
|
set(MAXSCALE_BINDIR /bin CACHE PATH "" FORCE)
|
||||||
|
set(MAXSCALE_LIBDIR /lib CACHE PATH "" FORCE)
|
||||||
|
set(MAXSCALE_SHAREDIR /share CACHE PATH "" FORCE)
|
||||||
|
set(MAXSCALE_DOCDIR /share CACHE PATH "" FORCE)
|
||||||
|
set(MAXSCALE_VARDIR /var CACHE PATH "" FORCE)
|
||||||
|
set(MAXSCALE_CONFDIR /etc CACHE PATH "" FORCE)
|
||||||
|
set(CMAKE_INSTALL_PREFIX "/" CACHE PATH "" FORCE)
|
||||||
|
set(CMAKE_INSTALL_RPATH "$ORIGIN/../lib" CACHE PATH "" FORCE)
|
||||||
|
set(CMAKE_INSTALL_DATADIR /share CACHE PATH "" FORCE)
|
||||||
|
set(CPACK_GENERATOR "TGZ")
|
||||||
|
|
||||||
|
if(DISTRIB_SUFFIX)
|
||||||
|
set(CPACK_PACKAGE_FILE_NAME "maxscale-${MAXSCALE_VERSION}.${DISTRIB_SUFFIX}")
|
||||||
|
else()
|
||||||
|
set(CPACK_PACKAGE_FILE_NAME "maxscale-${MAXSCALE_VERSION}")
|
||||||
|
endif()
|
Reference in New Issue
Block a user