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) -# 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") +SETA(CPACK_RPM_client_PACKAGE_OBSOLETES + "mysql-client" + "MySQL-client" + "MySQL-OurDelta-client") +SETA(CPACK_RPM_client_PACKAGE_PROVIDES + "MySQL-client" + "mysql-client") -SET(CPACK_RPM_devel_PACKAGE_OBSOLETES "mysql-devel MySQL-devel MySQL-OurDelta-devel") -SET(CPACK_RPM_devel_PACKAGE_PROVIDES "MySQL-devel mysql-devel") +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") -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") diff --git a/debian/dist/Debian/control b/debian/dist/Debian/control index 0604d56ceb0..0f7155c6ee7 100644 --- a/debian/dist/Debian/control +++ b/debian/dist/Debian/control @@ -17,14 +17,14 @@ Recommends: libhtml-template-perl Pre-Depends: mariadb-common, adduser (>= 3.40), debconf Depends: mariadb-client-10.0 (>= ${source:Version}), libdbi-perl, perl (>= 5.6), ${shlibs:Depends}, ${misc:Depends}, psmisc, passwd, lsb-base (>= 3.0-10), libmariadbclient18 (>= ${binary:Version}), galera (>=25.2) Provides: mysql-server-core, mysql-server-core-5.1, mysql-server-core-5.5, mysql-server-core-10.0, mariadb-server, mysql-server, virtual-mysql-server, mariadb-galera-server -Conflicts: mariadb-server (<< ${source:Version}), mysql-server (<< ${source:Version}), mariadb-galera-server (<< ${source:Version}), +Conflicts: mariadb-server, mysql-server, mariadb-galera-server (<< ${source:Version}), mysql-server-4.1, mysql-server-5.0, mysql-server-5.1, mysql-server-5.5, mariadb-server-5.1, mariadb-server-5.2, mariadb-server-5.3, mysql-server-core-5.0, mysql-server-core-5.1, mysql-server-core-5.5, mariadb-server-core-5.1, mariadb-server-core-5.2, mariadb-server-core-5.5, mariadb-server-core-10.0, mariadb-tokudb-engine-5.5, mariadb-tokudb-engine-10.0 -Replaces: mariadb-server (<< ${source:Version}), mysql-server (<< ${source:Version}), mariadb-galera-server (<< ${source:Version}), +Replaces: mariadb-server, mysql-server, mariadb-galera-server (<< ${source:Version}), mysql-server-4.1, mysql-server-5.0, mysql-server-5.1, mysql-server-5.5, mariadb-server-5.1, mariadb-server-5.2, mariadb-server-5.3, mariadb-server-5.5, libmariadbclient16 (<< 5.3.4), libmariadbclient-dev (<< 5.5.0), diff --git a/debian/dist/Ubuntu/control b/debian/dist/Ubuntu/control index 8db3ef29a58..42eeadd7e8a 100644 --- a/debian/dist/Ubuntu/control +++ b/debian/dist/Ubuntu/control @@ -17,14 +17,14 @@ Recommends: libhtml-template-perl Pre-Depends: mariadb-common, adduser (>= 3.40), debconf Depends: mariadb-client-10.0 (>= ${source:Version}), libdbi-perl, perl (>= 5.6), ${shlibs:Depends}, ${misc:Depends}, psmisc, passwd, lsb-base (>= 3.0-10), libmariadbclient18 (>= ${binary:Version}), galera (>=25.2) Provides: mysql-server-core, mysql-server-core-5.1, mysql-server-core-5.5, mysql-server-core-10.0, mariadb-server, mysql-server, virtual-mysql-server, mariadb-galera-server -Conflicts: mariadb-server (<< ${source:Version}), mysql-server (<< ${source:Version}), mariadb-galera-server (<< ${source:Version}), +Conflicts: mariadb-server, mysql-server, mariadb-galera-server (<< ${source:Version}), mysql-server-4.1, mysql-server-5.0, mysql-server-5.1, mysql-server-5.5, mariadb-server-5.1, mariadb-server-5.2, mariadb-server-5.3, mysql-server-core-5.0, mysql-server-core-5.1, mysql-server-core-5.5, mariadb-server-core-5.1, mariadb-server-core-5.2, mariadb-server-core-5.5, mariadb-server-core-10.0, mariadb-tokudb-engine-5.5, mariadb-tokudb-engine-10.0 -Replaces: mariadb-server (<< ${source:Version}), mysql-server (<< ${source:Version}), mariadb-galera-server (<< ${source:Version}), +Replaces: mariadb-server, mysql-server, mariadb-galera-server (<< ${source:Version}), mysql-server-4.1, mysql-server-5.0, mysql-server-5.1, mysql-server-5.5, mariadb-server-5.1, mariadb-server-5.2, mariadb-server-5.3, mariadb-server-5.5, libmariadbclient16 (<< 5.3.4), libmariadbclient-dev (<< 5.5.0),