mysql/mysql.spec

371 lines
16 KiB
RPMSpec
Raw Normal View History

2020-06-24 11:45:50 +08:00
#%{!?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
2020-02-29 14:45:42 +08:00
%description
2020-06-24 11:45:50 +08:00
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-threadmulti-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-threadmulti-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-threadmulti-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.
2020-02-29 14:45:42 +08:00
%prep
2020-06-24 11:45:50 +08:00
%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
2020-02-29 14:45:42 +08:00
%build
2020-06-24 11:45:50 +08:00
%{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 -
2020-02-29 14:45:42 +08:00
%install
2020-06-24 11:45:50 +08:00
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 -
2020-02-29 14:45:42 +08:00
2020-06-24 11:45:50 +08:00
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
2020-02-29 14:45:42 +08:00
2020-06-24 11:45:50 +08:00
%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
2020-02-29 14:45:42 +08:00
2020-06-24 11:45:50 +08:00
%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 || :
2020-02-29 14:45:42 +08:00
2020-06-24 11:45:50 +08:00
%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"
2020-02-29 14:45:42 +08:00
fi
2020-06-24 11:45:50 +08:00
%preun server
%systemd_preun mysqld.service
2020-02-29 14:45:42 +08:00
2020-06-24 11:45:50 +08:00
%postun server
%systemd_postun_with_restart mysqld.service
2020-02-29 14:45:42 +08:00
%files
2020-06-24 11:45:50 +08:00
%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*}
2020-02-29 14:45:42 +08:00
%changelog
2020-06-24 11:45:50 +08:00
* Mon Jun 1 2020 Jeffery.Gao <gaojianxing@huawei.com> - 8.0.18-2
- Package upgrade.
2020-06-16 11:13:46 +08:00
2020-03-18 13:41:46 +08:00
* Wed Mar 1 2020 zhangtao<zhangtao221@huawei.com> 8.0.17-3
- add fstack-protector-strong
2020-06-24 11:45:50 +08:00
2020-02-29 14:45:42 +08:00
* Fri Feb 28 2020 catastrowings <jianghuhao1994@163.com> 8.0.17-2
- openEuler package init.