Blob Blame History Raw
# Use main python interpretter version
%if 0%{?fedora} || 0%{?rhel} > 7
%define __python /usr/bin/python3
%else
%define __python /usr/bin/python2
%endif

%global scl rh-mariadb105
%{?scl:%scl_package galera}
%{!?scl:%global pkg_name %{name}}

%if 0%{?scl:1}
%global scl_upper %{lua:print(string.upper(string.gsub(rpm.expand("%{scl}"), "-", "_")))}
%endif


%global daemon_name %{?scl_prefix}garbd

Name:           %{?scl_prefix}galera
Version:        26.4.14
Release:        1%{?dist}
Summary:        Synchronous multi-master wsrep provider (replication engine)

License:        GPLv2
URL:            http://galeracluster.com/
Source0:        http://releases.galeracluster.com/source/%{pkg_name}-%{version}.tar.gz
# Actually, the truth is, we do use patched galera source tarball provided by MariaDB on
# following URL (without macros):
#   https://mirror.vpsfree.cz/mariadb/mariadb-10.4.11/galera-26.4.3/src/galera-26.4.3.tar.gz

Patch1:         galera-paths.patch
Patch2:         galera-init-start.patch
Patch3:         cmake_paths.patch

BuildRequires:  boost-devel
BuildRequires:  check-devel openssl-devel cmake systemd

Requires:       nmap-ncat
Requires:       procps-ng

%{?systemd_requires}

%description
Galera is a fast synchronous multimaster wsrep provider (replication engine)
for transactional databases and similar applications. For more information
about wsrep API see https://github.com/codership/wsrep-API repository. For a
description of Galera replication engine see https://www.galeracluster.com web.

%prep
%setup -q -n %{pkg_name}-%{version}
%patch1 -p1 -b .p2
%patch2 -p1
%patch3 -p1

%build
for f in garb/files/garb.sh garb/files/garb.service garb/files/garb-systemd ; do
  sed -i -e "s|@bindir@|%{_bindir}|g" \
         -e "s|@sbindir@|%{_sbindir}|g" \
         -e "s|@sysconfdir@|%{_sysconfdir}|g" \
         $f
%if 0%{?scl:1}
  sed -i -e "s|@scl@|%{scl}|g" \
         -e "s|@scl_prefix@|%{scl_prefix}|g" \
         -e "s|@scl_scripts@|%{?_scl_scripts}|g" \
         -e "s|@scl_upper@|%{scl_upper}|g" \
         $f
%endif
done

%{?scl:scl enable %{scl} - << "EOF"}
set -xe
export CPPFLAGS="%{optflags}"
%cmake . \
       -DCMAKE_BUILD_TYPE="%{?with_debug:Debug}%{!?with_debug:RelWithDebInfo}" \
       -DINSTALL_LAYOUT=RPM \
       -DCMAKE_RULE_MESSAGES:BOOL=OFF \
       \
       -DBUILD_SHARED_LIBS:BOOL=OFF \
       \
       -DINSTALL_DOCDIR="%{_docdir}/galera/" \
       -DINSTALL_GARBD="%{_bindir}" \
       -DINSTALL_GARBD-SYSTEMD="%{_bindir}" \
       -DINSTALL_CONFIGURATION="%{_sysconfdir}/sysconfig/" \
       -DINSTALL_SYSTEMD_SERVICE="lib/systemd/system" \
       -DINSTALL_LIBDIR="%{_lib}/galera" \
       -DINSTALL_MANPAGE="share/man/man8"

cmake . -LAH

make VERBOSE=1 %{?_smp_mflags}

%if 0%{?rhel} < 7
    bpostatic=%{_libdir}/libboost_program_options.so
%endif

%{?scl:EOF}

%install
%{?scl:scl enable %{scl} - << "EOF"}
set -xe
make install DESTDIR=%{buildroot}
%{?scl:EOF}

mkdir -p %{buildroot}/usr/lib/systemd/system/

# Rename the systemd unit file
%{?scl:mv %{buildroot}%{_prefix}/lib/systemd/system/garb.service %{buildroot}/usr/lib/systemd/system/%{?scl_prefix}garbd.service}

%if 0%{?scl:1}
# generate a configuration file for daemon
cat << EOF | tee -a %{buildroot}%{?_scl_scripts}/garbd-service-environment
# Services are started in a fresh environment without any influence of user's
# environment (like environment variable values). As a consequence,
# information of all enabled collections will be lost during service start up.
# If user needs to run a service under any software collection enabled, this
# collection has to be written into %{scl_upper}_SCLS_ENABLED variable
# in %{?_scl_scripts}/garbd-service-environment.
%{scl_upper}_SCLS_ENABLED="%{scl}"
EOF
%endif #scl

%pre
/usr/sbin/useradd -M -r -d /dev/null -s /sbin/nologin -c "Galera Arbitrator Daemon" garb >/dev/null 2>&1 || :

%post
/sbin/ldconfig
%if 0%{?fedora} >= 15 || 0%{?rhel} >= 7
%systemd_post %{daemon_name}.service
%else
/sbin/chkconfig --add %{daemon_name}
%endif


%preun
%if 0%{?fedora} >= 15 || 0%{?rhel} >= 7
%systemd_preun %{daemon_name}.service
%else
if [ "$1" -eq 0 ]; then
    /sbin/service %{daemon_name} stop >/dev/null 2>&1
    /sbin/chkconfig --del %{daemon_name}
fi
%endif


%postun
/sbin/ldconfig
%if 0%{?fedora} >= 15 || 0%{?rhel} >= 7
%systemd_postun_with_restart %{daemon_name}.service
%else
if [ "$1" -ge 1 ]; then
    /sbin/service %{daemon_name} condrestart >/dev/null 2>&1 || :
fi
%endif

%files
%config(noreplace,missingok) %{_sysconfdir}/sysconfig/garb

%dir %{_docdir}/galera
%dir %{_libdir}/galera

%{_bindir}/garbd
%if 0%{?fedora} >= 15 || 0%{?rhel} >= 7

# PATCH 3:
#   Make sure the wrapper script is executable
%attr(755, -, -) %{_bindir}/garb-systemd

%{_mandir}/man8/garbd.8*

%{_unitdir}/%{daemon_name}.service

%else
%{?scl:%_root_sysconfdir}%{!?scl:%_sysconfdir}/rc.d/init.d/%{daemon_name}
%endif

%if 0%{?scl:1}
%{?_scl_scripts}/garbd-service-environment
%endif

%{_libdir}/galera/libgalera_smm.so

%doc %{_docdir}/galera/AUTHORS
%doc %{_docdir}/galera/COPYING
%doc %{_docdir}/galera/LICENSE.asio
%doc %{_docdir}/galera/README
#%doc %{_docdir}/galera/README-MySQL

%changelog
* Sat Apr 29 2023 Michal Schorm <mschorm@redhat.com> - 26.4.14-1
- Rebase to 26.4.14

* Sun Feb 20 2022 Michal Schorm <mschorm@redhat.com> - 26.4.11-1
- Rebase to 26.4.11

* Wed Jan 19 2022 Lukas Javorsky <ljavorsk@redhat.com> - 26.4.9-3
- Explicitly require the 'procps-ng' package
- Otherwise it will not require it in the lightweight systems (e.g. containers)
- and Galera won't work properly

* Wed Jan 19 2022 Michal Schorm <mschorm@redhat.com> -     26.4.9-2
- Switch from SCONS build tooling to CMAKE build tooling

* Wed Jan 19 2022 Lukas Javorsky <ljavorsk@redhat.com> - 26.4.9-1
- Rebase to 26.4.9

* Fri Mar 26 2021 Michal Schorm <mschorm@redhat.com> - 26.4.7-1
- Rebase to 26.4.7

* Mon Jan 04 2021 Honza Horak <hhorak@redhat.com> - 26.4.6-1
- Update to 26.4.6
  Related: #1903659

* Wed Nov 04 2020 Michal Schorm <mschorm@redhat.com> - 25.3.31-1
- Rebase to 25.3.31

* Tue Nov 03 2020 Michal Schorm <mschorm@redhat.com> - 25.3.30-1
- Rebase to 25.3.30

* Fri May 15 2020 Michal Schorm <mschorm@redhat.com> - 25.3.29-1
- Rebase to 25.3.29

* Thu Apr 25 2019 Michal Schorm <mschorm@redhat.com> - 25.3.25-1
- Rebase to 25.3.25

* Tue Jan 08 2019 Honza Horak <hhorak@redhat.com> - 25.3.23-2
- Rebuild for buildroot change

* Mon Dec 17 2018 Honza Horak <hhorak@redhat.com> - 25.3.23-1
- Update to 25.3.23

* Wed Aug 09 2017 Honza Horak <hhorak@redhat.com> - 25.3.20-3
- Fix wrong failure reporting during init script start
  Related: #1415720

* Mon Jun 26 2017 Honza Horak <hhorak@redhat.com> - 25.3.20-2
- Fix paths in garpd init script and turn on SCL there
  Related: #1415720
- Include garbd-service-environment because the one from mariadb-server
  does not need to be installed

* Mon Jun 19 2017 Honza Horak <hhorak@redhat.com> - 25.3.20-1
- Rebase to 25.3.20

* Thu Apr 21 2016 Honza Horak <hhorak@redhat.com>
- Build with system boost in RHEL-7
  Resolves: #1329175

* Thu Feb 11 2016 Honza Horak <hhorak@redhat.com> - 25.3.12-8
- Rebuild with newer scl-utils

* Tue Feb 09 2016 Honza Horak <hhorak@redhat.com> - 25.3.12-7
- Change sysconfdir for scls

* Tue Feb 09 2016 Honza Horak <hhorak@redhat.com> - 25.3.12-6
- Fix typo in _syconfig macro

* Tue Feb 09 2016 Honza Horak <hhorak@redhat.com> - 25.3.12-5
- Prefix service name with SCL

* Wed Feb 03 2016 Fedora Release Engineering <releng@fedoraproject.org> - 25.3.12-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild

* Fri Jan 15 2016 Jonathan Wakely <jwakely@redhat.com> - 25.3.12-3
- Rebuilt for Boost 1.60

* Wed Sep 30 2015 Marcin Juszkiewicz <mjuszkiewicz@redhat.com> - 25.3.12-2
- Remove use of -mtune=native which breaks build on secondary architectures

* Fri Sep 25 2015 Richard W.M. Jones <rjones@redhat.com> - 25.3.12-1
- Update to 25.3.12.
- Should fix the build on 32 bit ARM (RHBZ#1241164).
- Remove ExcludeArch (should have read the BZ more closely).

* Thu Aug 27 2015 Jonathan Wakely <jwakely@redhat.com> - 25.3.10-5
- Rebuilt for Boost 1.59

* Wed Jul 29 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 25.3.10-4
- Rebuilt for https://fedoraproject.org/wiki/Changes/F23Boost159

* Wed Jul 22 2015 David Tardon <dtardon@redhat.com> - 25.3.10-3
- rebuild for Boost 1.58

* Wed Jul 08 2015 Ryan O'Hara <rohara@redhat.com> - 25.3.10-2
- Disable ARM builds (#1241164, #1239516)

* Mon Jul 06 2015 Ryan O'Hara <rohara@redhat.com> - 25.3.10-1
- Update to version 25.3.10

* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 25.3.5-11
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild

* Mon Jan 26 2015 Petr Machata <pmachata@redhat.com> - 25.3.5-10
- Rebuild for boost 1.57.0

* Thu Nov 27 2014 Richard W.M. Jones <rjones@redhat.com> - 25.3.5-9
- Add aarch64 support.

* Sat Aug 16 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 25.3.5-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild

* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 25.3.5-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild

* Fri May 23 2014 Petr Machata <pmachata@redhat.com> - 25.3.5-6
- Rebuild for boost 1.55.0

* Wed Apr 30 2014 Dan HorĂ¡k <dan[at]danny.cz> - 25.3.5-5
- set ExclusiveArch

* Thu Apr 24 2014 Ryan O'Hara <rohara@redhat.com> - 25.3.5-4
- Use strict_build_flags=0 to avoid -Werror
- Remove unnecessary clean section

* Thu Apr 24 2014 Ryan O'Hara <rohara@redhat.com> - 25.3.5-3
- Include galera directories in file list
- Set CPPFLAGS to optflags

* Wed Apr 23 2014 Ryan O'Hara <rohara@redhat.com> - 25.3.5-2
- Fix client certificate verification (#1090604)

* Thu Mar 27 2014 Ryan O'Hara <rohara@redhat.com> - 25.3.5-1
- Update to version 25.3.5

* Mon Mar 24 2014 Ryan O'Hara <rohara@redhat.com> - 25.3.3-2
- Add systemd service

* Sun Mar 09 2014 Ryan O'Hara <rohara@redhat.com> - 25.3.3-1
- Initial build