summaryrefslogtreecommitdiff
path: root/cmake/cpack_rpm.cmake
diff options
context:
space:
mode:
authorNirbhay Choubey <nirbhay@skysql.com>2014-03-24 16:40:24 -0400
committerNirbhay Choubey <nirbhay@skysql.com>2014-03-24 16:40:24 -0400
commit586fab72f01e1c7f0f8bf363fa6b06a2f10965b4 (patch)
treee8f013d5871160068925b374738bb82f5c82fb2d /cmake/cpack_rpm.cmake
parent7b57c5ea6f1fda5100ce4a5fb61ee63e8a153d0f (diff)
downloadmariadb-git-586fab72f01e1c7f0f8bf363fa6b06a2f10965b4.tar.gz
Merging deb/rpm script changes from maria-5.5-galera.
Diffstat (limited to 'cmake/cpack_rpm.cmake')
-rw-r--r--cmake/cpack_rpm.cmake155
1 files changed, 128 insertions, 27 deletions
diff --git a/cmake/cpack_rpm.cmake b/cmake/cpack_rpm.cmake
index 53161575be6..6adc27bf83d 100644
--- a/cmake/cpack_rpm.cmake
+++ b/cmake/cpack_rpm.cmake
@@ -28,7 +28,7 @@ SET(CPACK_COMPONENTS_ALL Server ManPagesServer IniFiles Server_Scripts
SET(CPACK_RPM_PACKAGE_NAME "MariaDB-Galera")
SET(CPACK_PACKAGE_FILE_NAME "${CPACK_RPM_PACKAGE_NAME}-${VERSION}-${RPM}-${CMAKE_SYSTEM_PROCESSOR}")
-SET(CPACK_RPM_PACKAGE_RELEASE 1) # FIX: add distribution name here
+SET(CPACK_RPM_PACKAGE_RELEASE "1%{?dist}")
SET(CPACK_RPM_PACKAGE_LICENSE "GPL")
SET(CPACK_RPM_PACKAGE_RELOCATABLE FALSE)
SET(CPACK_RPM_PACKAGE_GROUP "Applications/Databases")
@@ -92,57 +92,158 @@ SET(CPACK_RPM_compat_USER_FILELIST ${ignored})
SET(CPACK_RPM_devel_USER_FILELIST ${ignored})
SET(CPACK_RPM_test_USER_FILELIST ${ignored})
-SET(CPACK_RPM_client_PACKAGE_OBSOLETES "mysql-client MySQL-client MySQL-OurDelta-client")
-SET(CPACK_RPM_client_PACKAGE_PROVIDES "MySQL-client mysql-client")
+# "set/append array" - append a set of strings, separated by a space
+MACRO(SETA var)
+ FOREACH(v ${ARGN})
+ SET(${var} "${${var}} ${v}")
+ ENDFOREACH()
+ENDMACRO(SETA)
+
+SETA(CPACK_RPM_client_PACKAGE_OBSOLETES
+ "mysql-client"
+ "MySQL-client"
+ "MySQL-OurDelta-client")
+SETA(CPACK_RPM_client_PACKAGE_PROVIDES
+ "MySQL-client"
+ "mysql-client")
+
+SETA(CPACK_RPM_devel_PACKAGE_OBSOLETES
+ "MySQL-devel"
+ "MySQL-OurDelta-devel")
+SETA(CPACK_RPM_devel_PACKAGE_PROVIDES
+ "MySQL-devel")
+
+SETA(CPACK_RPM_server_PACKAGE_OBSOLETES
+ "MariaDB"
+ "MySQL"
+ "mysql-server"
+ "MySQL-server"
+ "MySQL-OurDelta-server")
+SETA(CPACK_RPM_server_PACKAGE_PROVIDES
+ "MariaDB"
+ "MySQL"
+ "MySQL-server"
+ "msqlormysql"
+ "mysql-server")
+SETA(CPACK_RPM_server_PACKAGE_REQUIRES
+ "${CPACK_RPM_PACKAGE_REQUIRES}"
+ "galera")
+
+SETA(CPACK_RPM_shared_PACKAGE_OBSOLETES
+ "mysql-shared"
+ "MySQL-shared-standard"
+ "MySQL-shared-pro"
+ "MySQL-shared-pro-cert"
+ "MySQL-shared-pro-gpl"
+ "MySQL-shared-pro-gpl-cert"
+ "MySQL-shared"
+ "MySQL-OurDelta-shared")
+SETA(CPACK_RPM_shared_PACKAGE_PROVIDES
+ "MySQL-shared"
+ "mysql-shared")
+
+SETA(CPACK_RPM_test_PACKAGE_OBSOLETES
+ "MySQL-test"
+ "MySQL-OurDelta-test")
+SETA(CPACK_RPM_test_PACKAGE_PROVIDES
+ "MySQL-test")
-# this is a workaround for CPackRPM.cmake (as of 2.8.8) bug.
-# If a package group does not specify OBSOLETES/REQUIRES the values of the
-# previous (alphabetically) group will apply.
-SET(CPACK_RPM_common_PACKAGE_OBSOLETES "MySQL-common")
-SET(CPACK_RPM_common_PACKAGE_PROVIDES "MariaDB-common")
-
-SET(CPACK_RPM_devel_PACKAGE_OBSOLETES "mysql-devel MySQL-devel MySQL-OurDelta-devel")
-SET(CPACK_RPM_devel_PACKAGE_PROVIDES "MySQL-devel mysql-devel")
-
-SET(CPACK_RPM_server_PACKAGE_OBSOLETES "MariaDB MySQL mysql-server MySQL-server MySQL-OurDelta-server")
-SET(CPACK_RPM_server_PACKAGE_PROVIDES "MariaDB MySQL MySQL-server msqlormysql mysql-server")
SET(CPACK_RPM_server_PRE_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-prein.sh)
SET(CPACK_RPM_server_PRE_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-preun.sh)
SET(CPACK_RPM_server_POST_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-postin.sh)
SET(CPACK_RPM_server_POST_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-postun.sh)
-
-SET(CPACK_RPM_shared_PACKAGE_OBSOLETES "mysql-shared MySQL-shared-standard MySQL-shared-pro MySQL-shared-pro-cert MySQL-shared-pro-gpl MySQL-shared-pro-gpl-cert MySQL-shared MySQL-OurDelta-shared mysql-libs")
-SET(CPACK_RPM_shared_PACKAGE_PROVIDES "MySQL-shared mysql-shared")
-
SET(CPACK_RPM_shared_POST_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/shared-post.sh)
SET(CPACK_RPM_shared_POST_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/shared-post.sh)
-SET(CPACK_RPM_test_PACKAGE_OBSOLETES "mysql-test MySQL-test MySQL-OurDelta-test")
-SET(CPACK_RPM_test_PACKAGE_PROVIDES "MySQL-test mysql-test")
-
-# Argh! Different distributions call packages differently, to be a drop-in replacement
-# we have to fake distribution-speficic dependencies
MACRO(ALTERNATIVE_NAME real alt)
+ SET(ver "%{version}-%{release}")
+ IF (${epoch})
+ SET(ver "${epoch}:${ver}")
+ ENDIF()
+
SET(p "CPACK_RPM_${real}_PACKAGE_PROVIDES")
- SET(${p} "${${p}} ${alt} ${alt}(x86-32) ${alt}(x86-64) config(${alt})")
+ SET(${p} "${${p}} ${alt} = ${ver} ${alt}%{?_isa} = ${ver} config(${alt}) = ${ver}")
SET(o "CPACK_RPM_${real}_PACKAGE_OBSOLETES")
- SET(${o} "${${o}} ${alt}")
+ SET(${o} "${${o}} ${alt} ${alt}%{_isa}")
ENDMACRO(ALTERNATIVE_NAME)
+# Argh! Different distributions call packages differently, to be a drop-in
+# replacement we have to fake distribution-speficic dependencies
+
+ALTERNATIVE_NAME("devel" "mysql-devel")
+ALTERNATIVE_NAME("server" "mysql-server")
+ALTERNATIVE_NAME("test" "mysql-test")
+
IF(RPM MATCHES "(rhel|centos)5")
ALTERNATIVE_NAME("shared" "mysql")
ELSEIF(RPM MATCHES "(rhel|centos)6")
ALTERNATIVE_NAME("client" "mysql")
ALTERNATIVE_NAME("shared" "mysql-libs")
ELSEIF(RPM MATCHES "fedora")
+ SET(epoch 1) # this is fedora
+ ALTERNATIVE_NAME("client" "mariadb")
ALTERNATIVE_NAME("client" "mysql")
+ ALTERNATIVE_NAME("devel" "mariadb-devel")
+ ALTERNATIVE_NAME("server" "mariadb-server")
+ ALTERNATIVE_NAME("shared" "mariadb-libs")
ALTERNATIVE_NAME("shared" "mysql-libs")
+ ALTERNATIVE_NAME("test" "mariadb-test")
+ SET(CPACK_RPM_common_PACKAGE_CONFLICTS "mariadb-libs < 1:%{version}-%{release}")
ENDIF()
# workaround for lots of perl dependencies added by rpmbuild
-SET(CPACK_RPM_test_PACKAGE_PROVIDES "${CPACK_RPM_test_PACKAGE_PROVIDES} perl(lib::mtr_gcov.pl) perl(lib::mtr_gprof.pl) perl(lib::mtr_io.pl) perl(lib::mtr_misc.pl) perl(lib::mtr_process.pl) perl(lib::v1/mtr_cases.pl) perl(lib::v1/mtr_gcov.pl) perl(lib::v1/mtr_gprof.pl) perl(lib::v1/mtr_im.pl) perl(lib::v1/mtr_io.pl) perl(lib::v1/mtr_match.pl) perl(lib::v1/mtr_misc.pl) perl(lib::v1/mtr_process.pl) perl(lib::v1/mtr_report.pl) perl(lib::v1/mtr_stress.pl) perl(lib::v1/mtr_timer.pl) perl(lib::v1/mtr_unique.pl) perl(mtr_cases) perl(mtr_io.pl) perl(mtr_match) perl(mtr_misc.pl) perl(mtr_report) perl(mtr_results) perl(mtr_unique)")
+SETA(CPACK_RPM_test_PACKAGE_PROVIDES
+ "perl(lib::mtr_gcov.pl)"
+ "perl(lib::mtr_gprof.pl)"
+ "perl(lib::mtr_io.pl)"
+ "perl(lib::mtr_misc.pl)"
+ "perl(lib::mtr_process.pl)"
+ "perl(lib::v1/mtr_cases.pl)"
+ "perl(lib::v1/mtr_gcov.pl)"
+ "perl(lib::v1/mtr_gprof.pl)"
+ "perl(lib::v1/mtr_im.pl)"
+ "perl(lib::v1/mtr_io.pl)"
+ "perl(lib::v1/mtr_match.pl)"
+ "perl(lib::v1/mtr_misc.pl)"
+ "perl(lib::v1/mtr_process.pl)"
+ "perl(lib::v1/mtr_report.pl)"
+ "perl(lib::v1/mtr_stress.pl)"
+ "perl(lib::v1/mtr_timer.pl)"
+ "perl(lib::v1/mtr_unique.pl)"
+ "perl(mtr_cases)"
+ "perl(mtr_io.pl)"
+ "perl(mtr_match)"
+ "perl(mtr_misc.pl)"
+ "perl(mtr_report)"
+ "perl(mtr_results)"
+ "perl(mtr_unique)")
+
+# If we want to build build MariaDB-shared-compat,
+# extract compat libraries from MariaDB-shared-5.3 rpm
+FILE(GLOB compat_rpm RELATIVE ${CMAKE_SOURCE_DIR}
+ "${CMAKE_SOURCE_DIR}/../MariaDB-shared-5.3.*.rpm")
+IF (compat_rpm)
+ MESSAGE("Using ${compat_rpm} to build MariaDB-compat")
+ INSTALL(CODE "EXECUTE_PROCESS(
+ COMMAND rpm2cpio ${CMAKE_SOURCE_DIR}/${compat_rpm}
+ COMMAND cpio --extract --make-directories */libmysqlclient*.so.* -
+ WORKING_DIRECTORY \$ENV{DESTDIR})
+ EXECUTE_PROCESS(
+ COMMAND chmod -R a+rX .
+ WORKING_DIRECTORY \$ENV{DESTDIR})"
+ COMPONENT Compat)
+ SET(CPACK_COMPONENTS_ALL ${CPACK_COMPONENTS_ALL} Compat)
+
+ # RHEL6/CentOS6 install Postfix by default, and it requires
+ # libmysqlclient.so.16 that pulls in mysql-libs-5.1.x
+ # And the latter conflicts with our rpms.
+ # Make sure that for these distribuions all our rpms require
+ # MariaDB-compat, that will replace mysql-libs-5.1
+ IF(RPM MATCHES "(rhel|centos)6")
+ SET(CPACK_RPM_common_PACKAGE_REQUIRES "MariaDB-compat")
+ ENDIF()
+ENDIF(compat_rpm)
-SET(CPACK_RPM_compat_PACKAGE_REQUIRES "/bin/sh") # to mask CPACK_RPM_PACKAGE_REQUIRES
SET(CPACK_RPM_compat_PACKAGE_PROVIDES "mysql-libs = 5.3.5") # exact version doesn't matter as long as it greater than 5.1
SET(CPACK_RPM_compat_PACKAGE_OBSOLETES "mysql-libs < 5.3.5")