#%{!?runselftest:%global runselftest 0} Name: mysql Version: 8.0.18 Release: 2 Summary: The package provides MySQL programs and shared libraries License: GPLv2 with exceptions and LGPLv2 and BSD URL: http://www.mysql.com Source0: https://cdn.mysql.com/Downloads/MySQL-8.0/mysql-boost-%{version}.tar.gz Source1: mysql_config_multilib.sh Source2: my.cnf.in Source3: README.mysql-docs Source4: README.mysql-license Source5: mysql.tmpfiles.d.in Source6: mysql.service.in Source7: mysql-prepare-db-dir.sh Source8: mysql-check-socket.sh Source9: mysql-scripts-common.sh Source10: mysql-wait-stop.sh Source11: mysql@.service.in Source12: community-mysql.rpmlintrc Source13: server.cnf.in Patch0000: community-mysql-install-test.patch Patch0001: community-mysql-file-contents.patch Patch0002: community-mysql-scripts.patch Patch0003: community-mysql-paths.patch Patch0004: community-mysql-chain-certs.patch Patch0005: community-mysql-sharedir.patch Patch0006: community-mysql-rpath.patch Patch0007: boost-1.58.0-pool.patch Patch0008: boost-1.57.0-mpl-print.patch Patch9001: all_mysql-8.0.18-add-protobuf-3.8+-support.patch BuildRequires: cmake gcc-c++ libaio-devel libedit-devel libevent-devel libicu-devel BuildRequires: lz4-devel mecab-devel bison libzstd-devel openssl openssl-devel BuildRequires: perl-interpreter perl-generators rpcgen libtirpc-devel lz4 BuildRequires: protobuf-lite-devel rapidjson-devel re2-devel zlib zlib-devel BuildRequires: multilib-rpm-config procps time perl(Digest::file) perl(Digest::MD5) perl(Env) BuildRequires: perl(Exporter) perl(Fcntl) perl(File::Temp) perl(Data::Dumper) BuildRequires: perl(Getopt::Long) perl(IPC::Open3) perl(JSON) perl(LWP::Simple) perl(Memoize) BuildRequires: perl(Socket) perl(Sys::Hostname) perl(Test::More) perl(Time::HiRes) systemd %ifnarch aarch64 BuildRequires: numactl-devel %endif Requires: bash coreutils grep mysql-common = %{version}-%{release} Provides: bundled(boost) = 1.69 mysql = %{version}-%{release} Provides: mysql-compat-client = %{version}-%{release} Conflicts: mariadb Obsoletes: mysql-cluster < 5.1.44 %description MySQL is a multi-threaded, multi-user database server. It consists of a client, server implementation composed of a server daemon, and differentClient program. Contains standard MySQL client and common MySQL library and interface files. %package libs Summary: The shared libraries required for MySQL clients Requires: mysql-common = %{version}-%{release} Provides: mysql-libs = %{version}-%{release} %description libs The mysql-libs package provides the essential shared libraries for any MySQL client program or interface. You will need to install this package to use any other MySQL package or any clients that need to connect to a MySQL server. %package config Summary: The config files required by server and cl %description config This package contains the config file my.cnf and my.cnf.d dir for MariaDB or MySQL program. You will need to install this pack other MariaDB or MySQL package if the config files are not package itself. %package common Summary: The shared files required for MySQL server and client Requires: %{_sysconfdir}/my.cnf %description common This pacakge contains the essential shared files for any MySQL program. Need to install this package to use any other MySQL package. %package errmsg Summary: The error messages files required by MySQL server Requires: mysql-common = %{version}-%{release} %description errmsg The package contains the MySQL daemon`s error messages. %package server Summary: The MySQL server and related files Suggests: mysql = %{version}-%{release} Requires: mysql Requires: mysql-common = %{version}-%{release} %{_sysconfdir}/my.cnf Requires: %{_sysconfdir}/my.cnf.d mysql-errmsg = %{version}-%{release} Requires: coreutils systemd Requires(pre): /usr/sbin/useradd Recommends: libcap Requires(post): policycoreutils-python-utils Requires: (mysql-selinux if selinux-policy-targeted) Provides: mysql-server = %{version}-%{release} Provides: mysql-compat-server = %{version}-%{release} Obsoletes: mysql-bench < 5.7.8 Obsoletes: community-mysql-bench < 5.7.8 Conflicts: mariadb-server Conflicts: mariadb-galera-server %description server MySQL is a multi-thread,multi-user database. It consists with client/server implementation, a server daemon(mysqld) and many different client programs and libraries. The package contains MySQL server、directories and other accompanying files. %package devel Summary: Files for development of MySQL applications Requires: mysql-libs = %{version}-%{release} Requires: openssl-devel zlib-devel Conflicts: mariadb-devel %description devel MySQL is a multi-thread,multi-user database. This package provides the header files and libraries for the developing of MySQL client applications. %package test Summary: The test suite distributed with MySQL Requires: mysql = %{version}-%{release} mysql-common = %{version}-%{release} Requires: mysql-server = %{version}-%{release} gzip lz4 openssl perl(Digest::file) Requires: perl(Digest::MD5) perl(Env) perl(Exporter) perl(Fcntl) perl(File::Temp) Requires: perl(Data::Dumper) perl(Getopt::Long) perl(IPC::Open3) perl(JSON) Requires: perl(LWP::Simple) perl(Memoize) perl(Socket) perl(Sys::Hostname) Requires: perl(Test::More) perl(Time::HiRes) Conflicts: mariadb-test Provides: mysql-test = %{version}-%{release} %description test MySQL is a multi-thread,multi-user database. The package provides test suite. %package help Summary: Docs for development of MySQL applications. Requires: mysql = %{version}-%{release} %description help The package provides Docs for development of MySQL applications. %prep %autosetup -n mysql-%{version} -p1 cd mysql-test add_test () { echo "$1" : BUG#0 "${@:2}" >> platform-specific-tests.list } touch platform-specific-tests.list add_test innodb.redo_log_archive_04 failed since 8.0.17 add_test clone.remote_dml_no_binlog failed since 8.0.17 %ifarch %arm aarch64 add_test gis.st_latitude add_test gis.st_longitude add_test perfschema.func_file_io missing hw on arm32 add_test perfschema.func_mutex missing hw on arm32 add_test perfschema.global_read_lock missing hw on arm32 add_test perfschema.setup_objects missing hw on arm32 %endif cd - cp %{SOURCE1} %{SOURCE2} %{SOURCE5} %{SOURCE6} %{SOURCE7} \ %{SOURCE8} %{SOURCE9} %{SOURCE10} %{SOURCE11} %{SOURCE13} scripts %build %{set_build_flags} %if %runselftest if [ x"$(id -u)" = "x0" ]; then echo "mysql's regression tests fail if run as root." echo "If you really need to build the RPM as root, use" echo "--nocheck to skip the regression tests." exit 1 fi %endif mkdir -p build && cd build cmake .. \ -DBUILD_CONFIG=mysql_release -DFEATURE_SET="community" -DINSTALL_LAYOUT=RPM -DDAEMON_NAME="mysqld" \ -DDAEMON_NO_PREFIX="mysqld" -DLOG_LOCATION="%{_localstatedir}/log/mysql/mysqld.log" \ -DPID_FILE_DIR="%{_rundir}/mysqld" -DNICE_PROJECT_NAME="MySQL" -DCMAKE_INSTALL_PREFIX="%{_prefix}" \ -DSYSCONFDIR="%{_sysconfdir}" -DSYSCONF2DIR="%{_sysconfdir}/my.cnf.d" -DINSTALL_INFODIR=share/info \ -DINSTALL_DOCDIR="share/doc/mysql" -DINSTALL_DOCREADMEDIR="share/doc/mysql" \ -DINSTALL_INCLUDEDIR=include/mysql -DINSTALL_LIBEXECDIR=libexec -DINSTALL_LIBDIR="%{_lib}/mysql" \ -DRPATH_LIBDIR="%{_libdir}" -DINSTALL_MANDIR=share/man -DINSTALL_MYSQLSHAREDIR=share/mysql \ -DINSTALL_MYSQLTESTDIR=share/mysql-test -DINSTALL_PLUGINDIR="%{_lib}/mysql/plugin" -DINSTALL_SBINDIR=bin \ -DINSTALL_SUPPORTFILESDIR=share/mysql -DMYSQL_DATADIR="%{_localstatedir}/lib/mysql" \ -DMYSQL_UNIX_ADDR="/var/lib/mysql/mysql.sock" -DENABLED_LOCAL_INFILE=ON -DWITH_SYSTEMD=1 \ -DSYSTEMD_SERVICE_NAME="mysqld" -DSYSTEMD_PID_DIR="%{_rundir}/mysqld" -DWITH_INNODB_MEMCACHED=ON \ -DWITH_ROUTER=OFF -DWITH_SYSTEM_LIBS=ON -DWITH_BOOST=../boost -DREPRODUCIBLE_BUILD=OFF \ -DCMAKE_C_FLAGS="%{optflags}" -DCMAKE_CXX_FLAGS="%{optflags}" -DCMAKE_EXE_LINKER_FLAGS="-pie %{build_ldflags}" \ -DTMPDIR=/var/tmp -DWITH_MYSQLD_LDFLAGS="%{build_ldflags}" -DCMAKE_C_LINK_FLAGS="%{build_ldflags}" \ %ifnarch aarch64 -DWITH_NUMA=ON \ %endif -DCMAKE_CXX_LINK_FLAGS"%{build_ldflags}" cmake .. -LAH %make_build VERBOSE=1 cd - %install cd build make DESTDIR=%{buildroot} install if %multilib_capable; then mv %{buildroot}%{_bindir}/mysql_config %{buildroot}%{_bindir}/mysql_config-%{__isa_bits} install -p -m 0755 scripts/mysql_config_multilib %{buildroot}%{_bindir}/mysql_config fi install -p -m 0644 Docs/INFO_SRC %{buildroot}%{_libdir}/mysql/ install -p -m 0644 Docs/INFO_BIN %{buildroot}%{_libdir}/mysql/ install -d %{buildroot}%{_localstatedir}/log/mysql install -d %{buildroot}%{_rundir}/mysqld install -p -m 0755 -d %{buildroot}%{_localstatedir}/lib/mysql install -p -m 0750 -d %{buildroot}%{_localstatedir}/lib/mysql-files install -p -m 0700 -d %{buildroot}%{_localstatedir}/lib/mysql-keyring install -D -p -m 0644 scripts/my.cnf %{buildroot}%{_sysconfdir}/my.cnf install -D -p -m 644 scripts/mysql.service %{buildroot}%{_unitdir}/mysqld.service install -D -p -m 644 scripts/mysql@.service %{buildroot}%{_unitdir}/mysqld@.service install -D -p -m 0644 scripts/mysql.tmpfiles.d %{buildroot}%{_tmpfilesdir}/mysqld.conf install -D -p -m 755 scripts/mysql-prepare-db-dir %{buildroot}%{_libexecdir}/mysql-prepare-db-dir install -p -m 755 scripts/mysql-wait-stop %{buildroot}%{_libexecdir}/mysql-wait-stop install -p -m 755 scripts/mysql-check-socket %{buildroot}%{_libexecdir}/mysql-check-socket install -p -m 644 scripts/mysql-scripts-common %{buildroot}%{_libexecdir}/mysql-scripts-common install -D -p -m 0644 scripts/server.cnf %{buildroot}%{_sysconfdir}/my.cnf.d/mysql-server.cnf install -d %{buildroot}%{_sysconfdir}/logrotate.d mv %{buildroot}%{_datadir}/mysql/mysql-log-rotate %{buildroot}%{_sysconfdir}/logrotate.d/mysqld chmod 644 %{buildroot}%{_sysconfdir}/logrotate.d/mysqld install -d %{buildroot}%{_sysconfdir}/ld.so.conf.d echo "%{_libdir}/mysql" > %{buildroot}%{_sysconfdir}/ld.so.conf.d/mysql-%{_arch}.conf mv %{buildroot}%{_bindir}/mysqld %{buildroot}%{_libexecdir}/mysqld install -d %{buildroot}%{_sbindir} ln -s %{_libexecdir}/mysqld %{buildroot}%{_sbindir}/mysqld cd - install -p -m 0644 %{SOURCE3} %{basename:%{SOURCE3}} install -p -m 0644 %{SOURCE4} %{basename:%{SOURCE4}} install -p -m 0644 mysql-test/platform-specific-tests.list %{buildroot}%{_datadir}/mysql-test %check %if %runselftest pushd build make test VERBOSE=1 cd mysql-test cp ../../mysql-test/platform-specific-tests.list . export MTR_BUILD_THREAD=%{__isa_bits} ./mtr --mem --parallel=auto --force --retry=2 \ --mysqld=--binlog-format=mixed \ --suite-timeout=720 --testcase-timeout=30 \ --report-unstable-tests --clean-vardir \ --skip-test-list=platform-specific-tests.list rm -r var $(readlink var) cd - popd %endif %pre server /usr/sbin/groupadd -g 27 -o -r mysql >/dev/null 2>&1 || : /usr/sbin/useradd -M -N -g mysql -o -r -d /var/lib/mysql -s /sbin/nologin \ -c "MySQL Server" -u 27 mysql >/dev/null 2>&1 || : %post server %systemd_post mysqld.service if [ ! -e "%{_localstatedir}/log/mysql/mysqld.log" -a ! -h "%{_localstatedir}/log/mysql/mysqld.log" ] ; then install /dev/null -m0640 -omysql -gmysql "%{_localstatedir}/log/mysql/mysqld.log" fi %preun server %systemd_preun mysqld.service %postun server %systemd_postun_with_restart mysqld.service %files %doc README README.mysql-license README.mysql-docs %{_bindir}/{mysql,mysql_config_editor,mysqladmin,mysqlcheck,mysqldump} %{_bindir}/{mysqlimport,mysqlpump,mysqlshow,mysqlslap,mysqlbinlog} %exclude %{_tmpfilesdir}/mysql.conf %files libs %{_libdir}/mysql/libmysqlclient*.so.* %config(noreplace) %{_sysconfdir}/ld.so.conf.d/* %files config %dir %{_sysconfdir}/my.cnf.d %config(noreplace) %{_sysconfdir}/my.cnf %files common %dir %{_libdir}/mysql %dir %{_datadir}/mysql %{_datadir}/mysql/charsets %files errmsg %{_datadir}/mysql/{errmsg-utf8.txt,english} %lang(bg) %{_datadir}/mysql/bulgarian %lang(cs) %{_datadir}/mysql/czech %lang(da) %{_datadir}/mysql/danish %lang(nl) %{_datadir}/mysql/dutch %lang(et) %{_datadir}/mysql/estonian %lang(fr) %{_datadir}/mysql/french %lang(de) %{_datadir}/mysql/german %lang(el) %{_datadir}/mysql/greek %lang(hu) %{_datadir}/mysql/hungarian %lang(it) %{_datadir}/mysql/italian %lang(ja) %{_datadir}/mysql/japanese %lang(ko) %{_datadir}/mysql/korean %lang(no) %{_datadir}/mysql/norwegian %lang(no) %{_datadir}/mysql/norwegian-ny %lang(pl) %{_datadir}/mysql/polish %lang(pt) %{_datadir}/mysql/portuguese %lang(ro) %{_datadir}/mysql/romanian %lang(ru) %{_datadir}/mysql/russian %lang(sr) %{_datadir}/mysql/serbian %lang(sk) %{_datadir}/mysql/slovak %lang(es) %{_datadir}/mysql/spanish %lang(sv) %{_datadir}/mysql/swedish %lang(uk) %{_datadir}/mysql/ukrainian %files server %{_bindir}/{ibd2sdi,myisamchk,myisam_ftdump,myisamlog,myisampack,my_print_defaults} %{_bindir}/{mysql_secure_installation,mysql_ssl_rsa_setup,mysql_tzinfo_to_sql,perror} %{_bindir}/{mysql_upgrade,mysqld_pre_systemd,mysqldumpslow,innochecksum} %config(noreplace) %{_sysconfdir}/my.cnf.d/mysql-server.cnf %{_sbindir}/mysqld %caps(cap_sys_nice=ep) %{_libexecdir}/mysqld %{_libdir}/mysql/{INFO_SRC,INFO_BIN,plugin} %dir %{_datadir}/mysql %{_datadir}/mysql/dictionary.txt %{_datadir}/mysql/*.sql %{_unitdir}/mysqld* %{_libexecdir}/{mysql-prepare-db-dir,mysql-wait-stop,mysql-check-socket,mysql-scripts-common} %exclude %{_tmpfilesdir}/mysql.conf %exclude %{_libdir}/mysql/*.a %exclude %{_datadir}/mysql/{mysql.server,mysqld_multi.server} %{_tmpfilesdir}/mysqld.conf %attr(0755,mysql,mysql) %dir %{_localstatedir}/lib/mysql %attr(0750,mysql,mysql) %dir %{_localstatedir}/lib/mysql-files %attr(0700,mysql,mysql) %dir %{_localstatedir}/lib/mysql-keyring %attr(0750,mysql,mysql) %dir %{_localstatedir}/log/mysql %attr(0755,mysql,mysql) %dir %{_rundir}/mysqld %attr(0640,mysql,mysql) %config %ghost %verify(not md5 size mtime) %{_localstatedir}/log/mysql/mysqld.log %config(noreplace) %{_sysconfdir}/logrotate.d/mysqld %files devel %{_bindir}/mysql_config* %{_includedir}/mysql %{_datadir}/aclocal/mysql.m4 %{_libdir}/mysql/libmysqlclient.so %{_libdir}/pkgconfig/mysqlclient.pc %exclude %{_bindir}/mysql_config_editor %files test %{_bindir}/{mysql_client_test,mysqltest,mysqltest_safe_process,mysqlxtest} %attr(-,mysql,mysql) %{_datadir}/mysql-test %files help %doc README.mysql-license README.mysql-docs LICENSE %doc storage/innobase/COPYING.Percona storage/innobase/COPYING.Google %{_mandir}/man1/{mysql.1*,mysql_config_editor.1*,mysqladmin.1*,mysqlbinlog.1*,mysqldump.1*} %{_mandir}/man1/{mysqlcheck.1*,mysqlimport.1*,mysqlpump.1*,mysqlshow.1*,mysqlslap.1*} %{_mandir}/man1/{ibd2sdi.1*,myisamchk.1*,myisamlog.1*,myisampack.1*,myisam_ftdump.1*,mysqlman.1*} %{_mandir}/man1/{my_print_defaults.1*,mysql_secure_installation.1*,mysql_ssl_rsa_setup.1*} %{_mandir}/man1/{mysql_tzinfo_to_sql.1*,mysql_upgrade.1*,mysqldumpslow.1*,perror.1*} %{_mandir}/man1/{lz4_decompress.1*,zlib_decompress.1*,innochecksum.1*,mysql.server.1*} %{_mandir}/man8/mysqld.8* %{_mandir}/man1/mysql_config.1* %exclude %{_mandir}/man1/{mysqld_multi.1*,mysqld_safe.1*,comp_err.1*} %changelog * Mon Jun 1 2020 Jeffery.Gao - 8.0.18-2 - Package upgrade. * Wed Mar 1 2020 zhangtao 8.0.17-3 - add fstack-protector-strong * Fri Feb 28 2020 catastrowings 8.0.17-2 - openEuler package init.