%bcond_with systemtap # systemtap/dtrace probes
%bcond_without tcpd # libwrap (tcp_wrappers) support
%bcond_with sphinx # Sphinx storage engine support
-%bcond_without tokudb # TokuDB
+%bcond_with tokudb # TokuDB
%bcond_without rocksdb # RocksDB
# mysql needs boost 1.59.0 and doesn't support newer/older boost versions
%bcond_with system_boost # Use system boost package
%bcond_with tests # FIXME: don't run correctly
%bcond_with ndb # NDB is now a separate product, this here is broken, so disable it
+%bcond_with coredumper # coredumper support
# tokudb is only supported on x86_64
%ifnarch %{x8664}
%undefine with_tokudb
%endif
-%define rel 1
-%define percona_rel 20
-%include /usr/lib/rpm/macros.perl
+%define rel 2
+%define percona_rel 40
Summary: MySQL: a very fast and reliable SQL database engine
Summary(de.UTF-8): MySQL: ist eine SQL-Datenbank
Summary(fr.UTF-8): MySQL: un serveur SQL rapide et fiable
Summary(uk.UTF-8): MySQL - швидкий SQL-сервер
Summary(zh_CN.UTF-8): MySQL数据库服务器
Name: mysql
-Version: 5.7.21
+Version: 5.7.37
Release: %{percona_rel}.%{rel}
License: GPL + MySQL FLOSS Exception
Group: Applications/Databases
Source0: https://www.percona.com/downloads/Percona-Server-5.7/LATEST/source/tarball/percona-server-%{version}-%{percona_rel}.tar.gz
-# Source0-md5: e5cf31dd63d268e78c247ffd3bde0164
+# Source0-md5: ab5a63fbe6872b719c49f1bbf091c09b
Source100: http://www.sphinxsearch.com/files/sphinx-2.2.11-release.tar.gz
# Source100-md5: 5cac34f3d78a9d612ca4301abfcbd666
%if %{without system_boost}
Source14: my.cnf
Patch0: mysql-opt.patch
Patch1: mysql-versioning.patch
-
-Patch7: lz4.patch
-
-Patch11: mysql-upgrade.patch
-Patch12: mysql-config.patch
-Patch18: mysql-sphinx.patch
-Patch19: mysql-chain-certs.patch
-# from fedora
-Patch20: mysql-dubious-exports.patch
-
-Patch24: mysql-cmake.patch
+Patch2: mysql-protobuf.patch
+Patch3: build.patch
+Patch4: mysql-sphinx.patch
+Patch5: mysql-5.7-sphinx.patch
+Patch6: mysql-chain-certs.patch
+Patch7: mysql-dubious-exports.patch
+Patch8: mysql-cmake.patch
+Patch9: openssl-3.patch
URL: https://www.percona.com/software/mysql-database/percona-server
BuildRequires: bison >= 1.875
BuildRequires: cmake >= 2.8.2
%{?with_system_boost:BuildRequires: boost-devel = 1.59.0}
BuildRequires: libhsclient-devel
%{?with_tcpd:BuildRequires: libwrap-devel}
+BuildRequires: lz4-devel >= 1:1.9.3
BuildRequires: mecab-devel
BuildRequires: ncurses-devel >= 4.2
%{?with_ssl:BuildRequires: openssl-devel >= 0.9.7d}
%{?with_autodeps:BuildRequires: perl-DBI}
BuildRequires: perl-devel >= 1:5.6.1
BuildRequires: protobuf-devel
-BuildRequires: python-modules
+BuildRequires: python3-modules
+BuildRequires: rpcsvc-proto
BuildRequires: rpm-perlprov >= 4.1-13
BuildRequires: rpmbuild(macros) >= 1.597
BuildRequires: sed >= 4.0
Requires(pre): /usr/bin/getgid
Requires(pre): /usr/sbin/groupadd
Requires(pre): /usr/sbin/useradd
-Requires(triggerpostun): sed >= 4.0
+Requires(post): sed >= 4.0
Requires: %{name}-charsets = %{version}-%{release}
Requires: %{name}-libs = %{version}-%{release}
Requires: /usr/bin/setsid
sed -i -e 's#perconaserverclient#mysqlclient#g' libmysql/libmysql.{ver.in,map} scripts/mysql_config.*
%patch0 -p1
-
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
%if %{with sphinx}
# http://www.sphinxsearch.com/docs/manual-0.9.9.html#sphinxse-mysql51
-mv sphinx-*/mysqlse storage/sphinx
-%patch18 -p1
+%{__mv} sphinx-*/mysqlse storage/sphinx
+%patch4 -p1
+%patch5 -p1
%endif
-%patch1 -p1
-
+%patch6 -p1
%patch7 -p1
-
-%patch19 -p1
-%patch20 -p1
-
-%patch24 -p1
+%patch8 -p1
+%patch9 -p1
# to get these files rebuild
[ -f sql/sql_yacc.cc ] && %{__rm} sql/sql_yacc.cc
# (it defaults to first cluster but user may change it to whatever
# cluster it wants)
+%if "%{cc_version}" >= "7.0"
+FALLTHROUGH_OPT="-Wimplicit-fallthrough=0"
+%else
+FALLTHROUGH_OPT=
+%endif
+
CPPFLAGS="%{rpmcppflags}" \
%cmake .. \
-DCMAKE_BUILD_TYPE=%{!?debug:RelWithDebInfo}%{?debug:Debug} \
- -DCMAKE_C_FLAGS_DEBUG="-fno-omit-frame-pointer -fno-strict-aliasing -Wimplicit-fallthrough=0" \
- -DCMAKE_CXX_FLAGS_DEBUG="-fno-omit-frame-pointer -fno-strict-aliasing -Wimplicit-fallthrough=0" \
- -DCMAKE_C_FLAGS_RELWITHDEBINFO="%{rpmcflags} -DNDEBUG -fno-omit-frame-pointer -fno-strict-aliasing -Wimplicit-fallthrough=0" \
- -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="%{rpmcxxflags} -DNDEBUG -fno-omit-frame-pointer -fno-strict-aliasing -Wimplicit-fallthrough=0" \
+ -DCMAKE_C_FLAGS_DEBUG="-fno-omit-frame-pointer -fno-strict-aliasing $FALLTHROUGH_OPT" \
+ -DCMAKE_CXX_FLAGS_DEBUG="-fno-omit-frame-pointer -fno-strict-aliasing $FALLTHROUGH_OPT" \
+ -DCMAKE_C_FLAGS_RELWITHDEBINFO="%{rpmcflags} -DNDEBUG -fno-omit-frame-pointer -fno-strict-aliasing $FALLTHROUGH_OPT -Wno-shadow" \
+ -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="%{rpmcxxflags} -DNDEBUG -fno-omit-frame-pointer -fno-strict-aliasing $FALLTHROUGH_OPT -Wno-shadow" \
-DCOMPILATION_COMMENT="TLD Linux MySQL RPM" \
-DCURSES_INCLUDE_PATH=/usr/include/ncurses \
%{?with_systemtap:-DENABLE_DTRACE=ON} \
-DWITH_SCALABILITY_METRICS=ON \
-DWITH_SSL=%{?with_ssl:system}%{!?with_ssl:no} \
-DWITH_UNIT_TESTS=%{?with_tests:ON}%{!?with_tests:OFF} \
+ -DWITH_COREDUMPER=%{?with_coredumper:ON}%{!?with_coredumper:OFF} \
%{!?with_tokudb:-DWITHOUT_TOKUDB=ON} \
%{!?with_rocksdb:-DWITHOUT_ROCKSDB=ON} \
%if %{without system_boost}
%{!?with_system_boost:-DWITH_BOOST="$(pwd)/$(ls -1d ../boost_*)"} \
%endif
- -DWITH_ZLIB=system \
- -DWITH_READLINE=system \
- -DWITH_LZ4=system \
-DWITH_LIBEVENT=system \
- -DWITH_PROTOBUF=system \
+ -DWITH_LZ4=system \
-DWITH_MECAB=system \
+ -DWITH_PROTOBUF=system \
+ -DWITH_READLINE=system \
+ -DWITH_ZLIB=system \
-DTMPDIR=/var/tmp
%{__make}
-%{?with_tests:%{__make} test}
+%if %{with tests}
+%{__make} test
+
+cd mysql-test
+
+MTR_BINDIR=$(pwd)/../build/ \
+%{__perl} ./mysql-test-run.pl \
+ --force \
+ --retry=0 \
+ --ssl \
+ --suite-timeout=720 \
+ --testcase-timeout=30 \
+ --mysqld=--binlog-format=mixed \
+ --force-restart \
+ --shutdown-timeout=60 \
+ --max-test-fail=0 \
+ --big-test \
+ --skip-test-list=unstable-tests
+%endif
%install
rm -rf $RPM_BUILD_ROOT
%{__rm} $RPM_BUILD_ROOT%{_bindir}/mysqld_safe
%{__rm} $RPM_BUILD_ROOT%{_bindir}/mysqld_multi
%{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/mysqld_{multi,safe}*
-#rm $RPM_BUILD_ROOT%{_datadir}/%{name}/mysql-log-rotate
-#rm $RPM_BUILD_ROOT%{_datadir}/%{name}/mysql.server
-#rm $RPM_BUILD_ROOT%{_datadir}/%{name}/binary-configure
%{__rm} $RPM_BUILD_ROOT%{_datadir}/%{name}/errmsg-utf8.txt
-#%{__rm} $RPM_BUILD_ROOT%{_bindir}/mysql_waitpid
-#%{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/mysql_waitpid.1*
%{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/mysql.server*
%{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/mysqlman.1*
%{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/comp_err.1*
# we don't package those (we have no -test or -testsuite pkg) and some of them just segfault
%{__rm} $RPM_BUILD_ROOT%{_bindir}/mysql_client_test
-%{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/mysql_client_test.1*
-%{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/mysql_client_test_embedded.1*
-%{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/mysql-stress-test.pl.1*
-%{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/mysql-test-run.pl.1*
%{__rm} -r $RPM_BUILD_ROOT%{_datadir}/mysql-test
# libmysqld examples
%{__rm} $RPM_BUILD_ROOT%{_bindir}/mysql{_client_test_embedded,_embedded,test_embedded}
# not needed
%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{name}/plugin/libdaemon_example.*
%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{name}/plugin/daemon_example.ini
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{name}/plugin/udf_example.so
# not an .info file
%{__rm} $RPM_BUILD_ROOT%{_infodir}/mysql.info
%attr(755,root,root) %{_sbindir}/myisamchk
%attr(755,root,root) %{_sbindir}/myisamlog
%attr(755,root,root) %{_sbindir}/myisampack
-#%attr(755,root,root) %{_sbindir}/mysql_fix_privilege_tables
%attr(755,root,root) %{_sbindir}/mysql_plugin
%attr(755,root,root) %{_sbindir}/mysql_upgrade
%attr(755,root,root) %{_sbindir}/mysqlcheck
%attr(755,root,root) %{_libdir}/%{name}/plugin/auth_test_plugin.so
%attr(755,root,root) %{_libdir}/%{name}/plugin/authentication_ldap_sasl_client.so
%attr(755,root,root) %{_libdir}/%{name}/plugin/connection_control.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/data_masking.ini
+%attr(755,root,root) %{_libdir}/%{name}/plugin/data_masking.so
%attr(755,root,root) %{_libdir}/%{name}/plugin/dialog.so
%attr(755,root,root) %{_libdir}/%{name}/plugin/group_replication.so
-#%attr(755,root,root) %{_libdir}/%{name}/plugin/ha_archive.so
-#%attr(755,root,root) %{_libdir}/%{name}/plugin/ha_blackhole.so
-#%attr(755,root,root) %{_libdir}/%{name}/plugin/ha_federated.so
-#%attr(755,root,root) %{_libdir}/%{name}/plugin/handlersocket.so
%attr(755,root,root) %{_libdir}/%{name}/plugin/keyring_file.so
%attr(755,root,root) %{_libdir}/%{name}/plugin/keyring_udf.so
%attr(755,root,root) %{_libdir}/%{name}/plugin/keyring_vault.so
%attr(755,root,root) %{_libdir}/%{name}/plugin/ha_rocksdb.so
%endif
# for plugins
-#%attr(755,root,root) %{_libdir}/libmysqlservices.so
%{_mandir}/man1/innochecksum.1*
%{_mandir}/man1/my_print_defaults.1*
%{_mandir}/man1/myisamchk.1*
%{_mandir}/man1/myisamlog.1*
%{_mandir}/man1/myisampack.1*
-#%{_mandir}/man1/mysql_fix_privilege_tables.1*
%{_mandir}/man1/mysql_plugin.1*
%{_mandir}/man1/mysql_upgrade.1*
%{_mandir}/man1/mysqlcheck.1*
%{_datadir}/%{name}/dictionary.txt
%{_datadir}/%{name}/fill_help_tables.sql
%{_datadir}/%{name}/innodb_memcached_config.sql
-#%{_datadir}/%{name}/mysql_fix_privilege_tables.sql
# Don't mark these with %%lang. These are used depending
# on database client settings.
%{_datadir}/%{name}/bulgarian
%files extras
%defattr(644,root,root,755)
-#%attr(755,root,root) %{_bindir}/msql2mysql
%attr(755,root,root) %{_bindir}/myisam_ftdump
%attr(755,root,root) %{_bindir}/mysql_install_db
%attr(755,root,root) %{_bindir}/mysql_secure_installation
%attr(755,root,root) %{_bindir}/perror
%attr(755,root,root) %{_bindir}/replace
%attr(755,root,root) %{_bindir}/resolveip
-#%{_mandir}/man1/msql2mysql.1*
%{_mandir}/man1/myisam_ftdump.1*
%{_mandir}/man1/mysql_install_db.1*
%{_mandir}/man1/mysql_secure_installation.1*
%files extras-perl
%defattr(644,root,root,755)
-#%attr(755,root,root) %{_bindir}/mysql_convert_table_format
-#%attr(755,root,root) %{_bindir}/mysql_find_rows
-#%attr(755,root,root) %{_bindir}/mysql_fix_extensions
-#%attr(755,root,root) %{_bindir}/mysql_setpermission
-#%attr(755,root,root) %{_bindir}/mysql_zap
-#%attr(755,root,root) %{_bindir}/mysqlaccess
%attr(755,root,root) %{_bindir}/mysqldumpslow
-#%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/mysqlaccess.conf
-#%{_mandir}/man1/mysql_convert_table_format.1*
-#%{_mandir}/man1/mysql_find_rows.1*
-#%{_mandir}/man1/mysql_fix_extensions.1*
-#%{_mandir}/man1/mysql_setpermission.1*
-#%{_mandir}/man1/mysql_zap.1*
-#%{_mandir}/man1/mysqlaccess.1*
%{_mandir}/man1/mysqldumpslow.1*
%files client
%attr(755,root,root) %{_bindir}/mysql_ssl_rsa_setup
%attr(755,root,root) %{_bindir}/mysqladmin
%attr(755,root,root) %{_bindir}/mysqlbinlog
-#%attr(755,root,root) %{_bindir}/mysqlbug
%attr(755,root,root) %{_bindir}/mysqldump
%attr(755,root,root) %{_bindir}/mysqlimport
%attr(755,root,root) %{_bindir}/mysqlpump
%{_mandir}/man1/mysql_ssl_rsa_setup.1*
%{_mandir}/man1/mysqladmin.1*
%{_mandir}/man1/mysqlbinlog.1*
-#%{_mandir}/man1/mysqlbug.1*
%{_mandir}/man1/mysqldump.1*
%{_mandir}/man1/mysqlimport.1*
%{_mandir}/man1/mysqlpump.1*
%{_sysconfdir}/%{name}/my.cnf
%attr(755,root,root) %{_libdir}/libmysqlclient.so.*.*.*
%attr(755,root,root) %ghost %{_libdir}/libmysqlclient.so.20
-#%attr(755,root,root) %{_libdir}/libmysqlclient_r.so.*.*.*
-#%attr(755,root,root) %ghost %{_libdir}/libmysqlclient_r.so.18
%if %{with ndb}
%attr(755,root,root) %{_libdir}/libndbclient.so.*.*.*
%attr(755,root,root) %ghost %{_libdir}/libndbclient.so.3
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/mysql_config
%attr(755,root,root) %{_libdir}/libmysqlclient.so
-#%attr(755,root,root) %{_libdir}/libmysqlclient_r.so
%{_pkgconfigdir}/mysqlclient.pc
%if %{with ndb}
%attr(755,root,root) %{_libdir}/libndbclient.so
%endif
-#%{_includedir}/backup.h
# static-only so far
%{_libdir}/libmysqld.a
%{_libdir}/libmysqlservices.a
%files static
%defattr(644,root,root,755)
%{_libdir}/libmysqlclient.a
-#%{_libdir}/libmysqlclient_r.a
%if %{with ndb}
%{_libdir}/libndbclient.a
%endif
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/mysqlslap
%attr(755,root,root) %{_bindir}/mysqltest
-#%dir %{_datadir}/sql-bench
-#%{_datadir}/sql-bench/[CDRl]*
-#%attr(755,root,root) %{_datadir}/sql-bench/[bcgirst]*
%{_mandir}/man1/mysqlslap.1*
-%{_mandir}/man1/mysqltest.1*
-%{_mandir}/man1/mysqltest_embedded.1*
-
-#%files doc
-#%defattr(644,root,root,755)
-#%doc Docs/manual.html Docs/manual_toc.html
%if %{with ndb}
%files ndb