diff options
Diffstat (limited to 'greatsql.spec')
-rw-r--r-- | greatsql.spec | 100 |
1 files changed, 97 insertions, 3 deletions
diff --git a/greatsql.spec b/greatsql.spec index ce0e67d..efd292d 100644 --- a/greatsql.spec +++ b/greatsql.spec @@ -67,6 +67,84 @@ as well as related utilities to run and administer GreatSQL. If you want to access and work with the database, you have to install package "greatsql-client" as well. +%pretrans server +if [ -d %{_datadir}/mysql ] && [ ! -L %{_datadir}/mysql ]; then + MYCNF_PACKAGE=$(rpm -qf /usr/share/mysql --queryformat "%{NAME}") +fi + +if [ "$MYCNF_PACKAGE" == "mariadb-libs" -o "$MYCNF_PACKAGE" == "mysql-libs" ]; then + MODIFIED=$(rpm -Va "$MYCNF_PACKAGE" | grep '/usr/share/mysql' | awk '{print $1}' | grep -c 5) + if [ "$MODIFIED" == 1 ]; then + cp -r %{_datadir}/mysql %{_datadir}/mysql.old + fi +fi + +%pre server +/usr/sbin/groupadd -g 27 -o -r mysql >/dev/null 2>&1 || : +/usr/sbin/useradd -M -g mysql -o -r -d /var/lib/mysql -s /bin/false \ + -c "GreatSQL" -u 27 mysql >/dev/null 2>&1 || : +if [ "$1" = 1 ]; then + if [ -f %{_sysconfdir}/my.cnf ]; then + timestamp=$(date '+%Y%m%d-%H%M') + cp %{_sysconfdir}/my.cnf \ + %{_sysconfdir}/my.cnf.rpmsave-${timestamp} + fi +fi + +%post server +datadir=$(/usr/bin/my_print_defaults server mysqld | grep '^--datadir=' | sed -n 's/--datadir=//p' | tail -n 1) +/bin/chmod 0751 "$datadir" >/dev/null 2>&1 || : +if [ ! -e /var/log/mysqld.log ]; then + /usr/bin/install -m0640 -omysql -gmysql /dev/null /var/log/mysqld.log +fi +%systemd_post mysqld.service +if [ $1 == 1 ]; then + /usr/bin/systemctl enable mysqld >/dev/null 2>&1 || : +fi +if [ -d /etc/greatsql.conf.d ]; then + CONF_EXISTS=$(grep "greatsql.conf.d" /etc/my.cnf | wc -l) + if [ ${CONF_EXISTS} = 0 ]; then + echo "!includedir /etc/greatsql.conf.d/" >> /etc/my.cnf + fi +fi +echo "datadir=/var/lib/mysql" >> /etc/my.cnf +echo "socket=/var/lib/mysql/mysql.sock" >> /etc/my.cnf +echo "log-error=/var/log/mysqld.log" >> /etc/my.cnf +echo "pid-file=/var/run/mysqld/mysqld.pid" >> /etc/my.cnf +echo "slow_query_log = ON" >> /etc/my.cnf +echo "long_query_time = 1" >> /etc/my.cnf +echo "log_slow_verbosity = FULL" >> /etc/my.cnf +echo "log_error_verbosity = 3" >> /etc/my.cnf +echo "innodb_buffer_pool_size = 1G" >> /etc/my.cnf +echo "innodb_log_file_size = 128M" >> /etc/my.cnf + +%preun server +%systemd_preun mysqld.service +if [ "$1" = 0 ]; then + if [ -L %{_datadir}/mysql ]; then + rm %{_datadir}/mysql + fi + if [ -f %{_sysconfdir}/my.cnf ]; then + cp %{_sysconfdir}/my.cnf \ + %{_sysconfdir}/my.cnf.rpmsave + fi +fi + +%postun server +%systemd_postun_with_restart mysqld.service + +%posttrans server +if [ -d %{_datadir}/mysql ] && [ ! -L %{_datadir}/mysql ]; then + MYCNF_PACKAGE=$(rpm -qf /usr/share/mysql --queryformat "%{NAME}") + if [ "$MYCNF_PACKAGE" == "file %{_datadir}/mysql is not owned by any package" ]; then + mv %{_datadir}/mysql %{_datadir}/mysql.old + fi +fi + +if [ ! -d %{_datadir}/mysql ] && [ ! -L %{_datadir}/mysql ]; then + ln -s %{_datadir}/greatsql %{_datadir}/mysql +fi + %package shared Summary: GreatSQL - Shared libraries Provides: mysql-libs = %{version}-%{release} @@ -75,6 +153,10 @@ Provides: mysql-libs = %{version}-%{release} This package contains the shared libraries (*.so*) which certain languages and applications need to dynamically load and use GreatSQL. +%post -n greatsql-shared -p /sbin/ldconfig + +%postun -n greatsql-shared -p /sbin/ldconfig + %package devel Summary: GreatSQL - Development header files and libraries Requires: %{name}-shared = %{version} @@ -95,7 +177,7 @@ connections from MySQL Clients to MySQL Servers. %pre mysql-router getent group mysqlrouter > /dev/null || /usr/sbin/groupadd -r mysqlrouter >/dev/null 2>&1 || : getent passwd mysqlrouter > /dev/null || /usr/sbin/useradd -M -N -g mysqlrouter -r -d /var/lib/mysqlrouter -s /bin/false \ - -c "Percona MySQL Router" mysqlrouter >/dev/null 2>&1 || : + -c "GreatSQL MySQL Router" mysqlrouter >/dev/null 2>&1 || : %post mysql-router %systemd_post mysqlrouter.service @@ -172,7 +254,11 @@ rm -rf %{buildroot}/usr/include/kmippp.h rm -rf %{buildroot}/usr/lib/libkmip.a rm -rf %{buildroot}/usr/lib/libkmippp.a +# Ensure that needed directories exists +install -d -m 0751 %{buildroot}/var/lib/mysql install -d -m 0755 %{buildroot}%{_rundir}/mysqld +install -d -m 0750 %{buildroot}/var/lib/mysql-files +install -d -m 0750 %{buildroot}/var/lib/mysql-keyring install -d -m 0755 %{buildroot}%{_rundir}/mysqlrouter install -d -m 0755 %{buildroot}/var/log/mysqlrouter @@ -232,8 +318,6 @@ install -d -m 0755 %{buildroot}/var/log/mysqlrouter %{_bindir}/ps_mysqld_helper %if 0%{?anolis_ver} < 23 %{_bindir}/lz4_decompress -%dir %{_libdir}/mysql/private -%{_libdir}/mysql/private/libfido2.so.* %endif %{_bindir}/zlib_decompress %{_unitdir}/mysqld.service @@ -314,11 +398,19 @@ install -d -m 0755 %{buildroot}/var/log/mysqlrouter %{_mandir}/man1/perror.1* %{_mandir}/man8/mysqld.8* %{_mandir}/man1/zlib_decompress.1* + +%dir %attr(751, mysql, mysql) /var/lib/mysql +%dir %attr(750, mysql, mysql) /var/lib/mysql-files +%dir %attr(750, mysql, mysql) /var/lib/mysql-keyring %dir %attr(755, mysql, mysql) %{_rundir}/mysqld %files shared %{_sysconfdir}/ld.so.conf.d/greatsql-shared-%{version}-%{_arch}.conf %dir %{_libdir}/mysql +%if 0%{?anolis_ver} < 23 +%dir %{_libdir}/mysql/private +%{_libdir}/mysql/private/libfido2.so.* +%endif %{_libdir}/mysql/libperconaserver*.so.* %dir %{_includedir}/coredumper %{_includedir}/coredumper/coredumper.h @@ -468,3 +560,5 @@ install -d -m 0755 %{buildroot}/var/log/mysqlrouter %{_mandir}/man1/comp_err.1* %changelog +* Thu Aug 17 2023 Funda Wang <fundawang@yeah.net> - 8.0.32.24-1 +- Import package |