diff --git a/.gitignore b/.gitignore index e69de29..1fa6378 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1,3 @@ +/*.tar.gz +/*.rpm +/*/* diff --git a/cmake_paths.patch b/cmake_paths.patch new file mode 100644 index 0000000..ec4f06a --- /dev/null +++ b/cmake_paths.patch @@ -0,0 +1,119 @@ +This patch has been offered upstream with slight typo fixes: + https://github.com/codership/galera/pull/614 +on 21/02/2022 + +#---------------------- + + +1) Documentation files + +--- galera-26.4.11/CMakeLists.txt 2022-02-20 03:35:32.039968825 +0100 ++++ galera-26.4.11/CMakeLists.txt_patched 2022-02-20 03:34:57.710641631 +0100 +@@ -109,14 +109,19 @@ add_subdirectory(galera) + add_subdirectory(scripts/packages) + add_subdirectory(wsrep/tests) + ++# Make the intall destination for documentation files configurable ++if(NOT DEFINED INSTALL_DOCDIR) ++ set(INSTALL_DOCDIR "doc" CACHE STRING "path to install documentaion to") ++endif() ++ + if (NOT ${CMAKE_SYSTEM_NAME} MATCHES ".*BSD") + install(FILES + ${PROJECT_SOURCE_DIR}/AUTHORS + ${PROJECT_SOURCE_DIR}/COPYING + ${PROJECT_SOURCE_DIR}/README +- DESTINATION doc) ++ DESTINATION ${INSTALL_DOCDIR} ) + install(FILES ${PROJECT_SOURCE_DIR}/asio/LICENSE_1_0.txt +- DESTINATION doc ++ DESTINATION ${INSTALL_DOCDIR} + RENAME LICENSE.asio) + endif() + + + +2) Configuration file +3) Executable files +4) Systemd service file + +--- galera-26.4.8/garb/CMakeLists.txt 2021-06-10 03:54:55.482520883 +0200 ++++ galera-26.4.8/garb/CMakeLists.txt_patched 2021-06-10 03:54:41.070274710 +0200 +@@ -31,14 +31,51 @@ target_compile_options(garbd + target_link_libraries(garbd gcs4garb gcomm gcache + ${Boost_PROGRAM_OPTIONS_LIBRARIES}) + +-install(TARGETS garbd DESTINATION bin) ++# Make the install destination for garbd binary configurable ++if(NOT DEFINED INSTALL_GARBD) ++ set(INSTALL_GARBD "bin" CACHE STRING "path to install garbd binary to") ++endif() ++ ++install(TARGETS garbd ++ DESTINATION ${INSTALL_GARBD}) ++ + if (NOT ${CMAKE_SYSTEM_NAME} MATCHES ".*BSD") ++ ++ # Make the install destination for garbd-systemd wrapper script configurable ++ if(NOT DEFINED INSTALL_GARBD-SYSTEMD) ++ set(INSTALL_GARBD-SYSTEMD "share" CACHE STRING "path to install garbd-systemd wrapper script to") ++ endif() ++ ++ install(FILES ++ ${CMAKE_CURRENT_SOURCE_DIR}/files/garb-systemd ++ DESTINATION ${INSTALL_GARBD-SYSTEMD}) ++ ++ # Make the install destination for garbd configuration file configurable ++ if(NOT DEFINED INSTALL_CONFIGURATION) ++ set(INSTALL_CONFIGURATION "share" CACHE STRING "path to install garbd configuration to") ++ endif() ++ + install(FILES + ${CMAKE_CURRENT_SOURCE_DIR}/files/garb.cnf ++ DESTINATION ${INSTALL_CONFIGURATION} ++ RENAME garb) ++ ++ # Make the install destination for garbd systemd service file configurable ++ if(NOT DEFINED INSTALL_SYSTEMD_SERVICE) ++ set(INSTALL_SYSTEMD_SERVICE "share" CACHE STRING "path to install garbd Systemd service to") ++ endif() ++ ++ install(FILES + ${CMAKE_CURRENT_SOURCE_DIR}/files/garb.service +- ${CMAKE_CURRENT_SOURCE_DIR}/files/garb-systemd +- DESTINATION share) ++ DESTINATION ${INSTALL_SYSTEMD_SERVICE}) ++ ++ # Make the install destination for manpage configurable ++ if(NOT DEFINED INSTALL_MANPAGE) ++ set(INSTALL_MANPAGE "man/man8" CACHE STRING "path to install manpage to") ++ endif() ++ + install(FILES + ${PROJECT_SOURCE_DIR}/man/garbd.8 +- DESTINATION man/man8) ++ DESTINATION ${INSTALL_MANPAGE}) ++ + endif() + + + +5) Shared library path + +--- galera-26.4.8/galera/src/CMakeLists.txt 2021-06-10 03:13:05.465005845 +0200 ++++ galera-26.4.8/galera/src/CMakeLists.txt_patched 2021-06-10 03:16:53.388699046 +0200 +@@ -112,7 +112,12 @@ endif() + + target_link_libraries(galera_smm galera ${GALERA_LINK_OPTIONS}) + +-install(TARGETS galera_smm DESTINATION lib) ++# Make the install destination for garbd binary configurable ++if(NOT DEFINED INSTALL_LIBDIR) ++ set(INSTALL_LIBDIR "lib" CACHE STRING "path to install shared libraries to") ++endif() ++ ++install(TARGETS galera_smm DESTINATION ${INSTALL_LIBDIR}) + + # The following checks are guaranteed to work only + # Linux platform, we skip them on others. + diff --git a/docs.patch b/docs.patch new file mode 100644 index 0000000..7a6bec5 --- /dev/null +++ b/docs.patch @@ -0,0 +1,25 @@ +The CMake prepares file AUTHORS for packing. +It only contains one line, and isn't packed in any upstream-produced packagess. +I don't find it useful and since upstream doesn't pack it either, stop packing it here. + +The README file contains infromation on how to build the project from sources, and thus isn't useful for the end users. + +On the other hand, the README-MySQL isn't prepared for packing by CMake, but contains useful information about the software usage and it is package in upstream-produced packages. + +Offered upstream: +https://github.com/codership/galera/pull/666 +https://groups.google.com/g/codership-team/c/Cn4UO3MkNQs + +--- galera-26.4.18/CMakeLists.txt 2024-06-09 04:54:56.281408893 +0200 ++++ galera-26.4.18/CMakeLists.txt_patched 2024-06-09 06:52:58.093217968 +0200 +@@ -118,9 +118,8 @@ endif() + + if (NOT ${CMAKE_SYSTEM_NAME} MATCHES ".*BSD") + install(FILES +- ${PROJECT_SOURCE_DIR}/AUTHORS + ${PROJECT_SOURCE_DIR}/COPYING +- ${PROJECT_SOURCE_DIR}/README ++ ${PROJECT_SOURCE_DIR}/scripts/packages/README-MySQL + DESTINATION ${INSTALL_DOCDIR} ) + install(FILES ${PROJECT_SOURCE_DIR}/asio/LICENSE_1_0.txt + DESTINATION ${INSTALL_DOCDIR} diff --git a/galera.spec b/galera.spec new file mode 100644 index 0000000..8df79e4 --- /dev/null +++ b/galera.spec @@ -0,0 +1,385 @@ +# To both save infrastrucutre resources and workaround for i686 FTBFS +ExcludeArch: %{ix86} + +Name: galera +Version: 26.4.20 +Release: 1%{?dist} +Summary: Synchronous multi-master wsrep provider (replication engine) + +License: GPLv2 +URL: http://galeracluster.com/ + +# Actually, the truth is, we do use galera source tarball provided by MariaDB on +# following URL (without macros): +# https://archive.mariadb.org/mariadb-10.4.16/galera-26.4.6/src/galera-26.4.6.tar.gz + +Source0: http://releases.galeracluster.com/source/%{name}-%{version}.tar.gz + +Patch0: cmake_paths.patch +Patch1: docs.patch + +BuildRequires: boost-devel check-devel openssl-devel cmake systemd gcc-c++ asio-devel +Requires(pre): /usr/sbin/useradd +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 +%patch -P0 -p1 +%patch -P1 -p1 + +%build +%{set_build_flags} + + +%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="share/doc/%{name}/" \ + -DINSTALL_GARBD="sbin" \ + -DINSTALL_GARBD-SYSTEMD="sbin" \ + -DINSTALL_CONFIGURATION="/etc/sysconfig/" \ + -DINSTALL_SYSTEMD_SERVICE="lib/systemd/system" \ + -DINSTALL_LIBDIR="%{_lib}/galera" \ + -DINSTALL_MANPAGE="share/man/man8" + +cmake -B %_vpath_builddir -LAH + +%cmake_build + + +%install +%cmake_install + +# PATCH 1: +# Change the Systemd service name from "garb" to "garbd" +# +# The Galera upstream uses name "garb" for the service while providing "garbd" alias +# Fedora downstream packaging historically used "garbd" name for the service. +# +# Let's stick with the Fedora legacy naming, AND provide an alias to the Galera upstream name +mv %{buildroot}%{_unitdir}/garb.service %{buildroot}%{_unitdir}/garbd.service +sed -i 's/Alias=garbd.service/Alias=garb.service/g' %{buildroot}%{_unitdir}/garbd.service + +# PATCH 2: +# Fix the hardcoded paths +# In the Systemd service file: +sed -i 's;/usr/bin/garb-systemd;/usr/sbin/garb-systemd;g' %{buildroot}%{_unitdir}/garbd.service +# In the wrapper script: +sed -i 's;/usr/bin/garbd;/usr/sbin/garbd;g' %{buildroot}/usr/sbin/garb-systemd + +# PATCH 4: +# Use a dedicated user for the Systemd service +# To fix an security issue reported by Systemd: +# +## systemd[1]: /usr/lib/systemd/system/garb.service:14: Special user nobody configured, this is not safe! +## Subject: Special user nobody configured, this is not safe! +## Defined-By: systemd +## Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel +## Documentation: https://systemd.io/UIDS-GIDS +## +## The unit garb.service is configured to use User=nobody. +## +## This is not safe. The nobody user's main purpose on Linux-based +## operating systems is to be the owner of files that otherwise cannot be mapped +## to any local user. It's used by the NFS client and Linux user namespacing, +## among others. By running a unit's processes under the identity of this user +## they might possibly get read and even write access to such files that cannot +## otherwise be mapped. +## +## It is strongly recommended to avoid running services under this user identity, +## in particular on systems using NFS or running containers. Allocate a user ID +## specific to this service, either statically via systemd-sysusers or dynamically +## via the DynamicUser= service setting. +sed -i 's/User=nobody/User=garb/g' %{buildroot}%{_unitdir}/garbd.service +# Maintainers from other distributions also tries to resolve it on the upstream: +# https://github.com/codership/galera/pull/633 + + +%check +%ctest + + +%pre +/usr/sbin/useradd -M -r -d /dev/null -s /sbin/nologin -c "Galera Arbitrator Daemon" garb >/dev/null 2>&1 || : + +%post +/sbin/ldconfig +%systemd_post garbd.service + +%preun +%systemd_preun garbd.service + +%postun +/sbin/ldconfig +%systemd_postun_with_restart garbd.service + + +%files +%config(noreplace,missingok) %{_sysconfdir}/sysconfig/garb + +%dir %{_docdir}/galera +%dir %{_libdir}/galera + +%{_sbindir}/garbd + +# PATCH 3: +# Make sure the wrapper script is executable +%attr(755, -, -) %{_sbindir}/garb-systemd + +%{_mandir}/man8/garbd.8* + +%{_unitdir}/garbd.service + +%{_libdir}/galera/libgalera_smm.so + +%doc %{_docdir}/galera/COPYING +%doc %{_docdir}/galera/LICENSE.asio +%doc %{_docdir}/galera/README-MySQL + + +%changelog +* Thu Nov 14 2024 Michal Schorm - 26.4.20-1 +- Rebase to 26.4.20 + +* Fri Oct 18 2024 Michal Schorm - 26.4.19-1 +- Rebase to 26.4.19 + +* Fri Jun 07 2024 Michal Schorm - 26.4.18-1 +- Rebase to 26.4.18 + +* Fri Nov 17 2023 Michal Schorm - 26.4.16-1 +- Rebase to 26.4.16 + +* Sat Apr 29 2023 Michal Schorm - 26.4.14-1 +- Rebase to 26.4.14 + +* Tue Nov 15 2022 Michal Schorm - 26.4.13-1 +- Rebase to 26.4.13 + +* Wed Aug 24 2022 Michal Schorm - 26.4.12-1 +- Rebase to 26.4.12 + +* Sun Feb 20 2022 Michal Schorm - 26.4.11-1 +- Rebase to 26.4.11 + +* Fri Nov 19 2021 Lukas Javorsky - 26.4.9-2 +- 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 + +* Tue Aug 17 2021 Michal Schorm - 26.4.9-1 +- Rebase to 26.4.9 + +* Mon Aug 09 2021 Mohan Boddu +- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags + Related: rhbz#1991688 + +* Thu Jul 15 2021 Michal Schorm - 26.4.8-2 +- Switch from SCONS build tooling to CMAKE build tooling +- Use upstream variants of Systemd service file and Systemd service file wrapper srcipt + +* Thu Jun 03 2021 Lukas Javorsky - 26.4.8-1 +- Rebase to 26.4.8 + +* Wed Jun 16 2021 Mohan Boddu - 26.4.7-3 +- Rebuilt for RHEL 9 BETA for openssl 3.0 + Related: rhbz#1971065 + +* Thu Apr 15 2021 Mohan Boddu - 26.4.7-2 +- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 + +* Tue Feb 23 2021 Michal Schorm - 26.4.7-1 +- Rebase to 26.4.7 + +* Tue Jan 26 2021 Fedora Release Engineering - 26.4.6-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Fri Jan 22 2021 Jonathan Wakely - 26.4.6-2 +- Rebuilt for Boost 1.75 + +* Wed Nov 04 2020 Michal Schorm - 26.4.6-1 +- Rebase to 26.4.6 + +* Thu Sep 17 2020 Michal Schorm - 26.4.5-2 +- Extend the workaround also to ELN + +* Wed Sep 16 2020 Michal Schorm - 26.4.5-1 +- Rebase to 26.4.5 + +* Wed Sep 16 2020 Michal Schorm - 26.4.4-5 +- Apply workaround for FTBFS on F33+ + +* Sat Aug 01 2020 Fedora Release Engineering - 26.4.4-4 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jul 27 2020 Fedora Release Engineering - 26.4.4-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jun 08 2020 Michal Schorm - 26.4.4-2 +- Second rebuild for Boost 1.73 + +* Fri Jun 05 2020 Michal Schorm - 26.4.4-1 +- Rebase to 26.4.4 + Resolves: rhbz#1546787 + +* Thu May 28 2020 Jonathan Wakely - 26.4.3-4 +- Rebuilt for Boost 1.73 + +* Tue Jan 28 2020 Fedora Release Engineering - 26.4.3-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Sat Jan 18 2020 Michal Schorm - 26.4.3-2 +- Rebase to 26.4.3 + +* Wed Nov 06 2019 Michal Schorm - 25.3.28-1 +- Rebase to 25.3.28 + +* Thu Aug 01 2019 Michal Schorm - 25.3.26-3 +- Fix for #1735233 and #1737108 + +* Thu Jul 25 2019 Fedora Release Engineering - 25.3.26-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Fri Jul 19 2019 Michal Schorm - 25.3.26-1 +- Rebase to 25.3.26 + +* Fri Jul 19 2019 Michal Schorm - 25.3.25-4 +- Use macro for setting up the compiler flags + +* Thu Jan 31 2019 Fedora Release Engineering - 25.3.25-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Tue Jan 29 2019 Jonathan Wakely - 25.3.25-2 +- Rebuilt for Boost 1.69 + +* Tue Jan 01 2019 Michal Schorm - 25.3.25-1 +- Rebase to 25.3.25 + +* Mon Jul 16 2018 Honza Horak - 25.3.23-5 +- Require asio also on rhel + +* Fri Jul 13 2018 Honza Horak - 25.3.23-4 +- Add explicit gcc-c++ BR +- Use python3-scons + +* Fri Jul 13 2018 Honza Horak - 25.3.23-3 +- Do not require asio on rhel + +* Fri Jul 13 2018 Fedora Release Engineering - 25.3.23-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Fri Feb 16 2018 Michal Schorm - 25.3.23-1 +- Update to 25.3.23 + +* Wed Feb 07 2018 Fedora Release Engineering - 25.3.22-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Fri Nov 24 2017 Honza Horak - 25.3.22-1 +- Update to 25.3.22 + +* Wed Aug 02 2017 Fedora Release Engineering - 25.3.16-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 25.3.16-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Mon Jul 03 2017 Jonathan Wakely - 25.3.16-4 +- Rebuilt for Boost 1.64 + +* Mon May 15 2017 Fedora Release Engineering - 25.3.16-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_27_Mass_Rebuild + +* Sat Feb 18 2017 Jonathan Wakely - 25.3.16-2 +- Use asio-devel instead of bundled asio library + +* Fri Feb 10 2017 Fedora Release Engineering - 25.3.16-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Wed Jun 22 2016 Mike Bayer - 25.3.16-1 +- Update to 25.3.16 + +* Wed Feb 03 2016 Fedora Release Engineering - 25.3.12-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Fri Jan 15 2016 Jonathan Wakely - 25.3.12-3 +- Rebuilt for Boost 1.60 + +* Wed Sep 30 2015 Marcin Juszkiewicz - 25.3.12-2 +- Remove use of -mtune=native which breaks build on secondary architectures + +* Fri Sep 25 2015 Richard W.M. Jones - 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 - 25.3.10-5 +- Rebuilt for Boost 1.59 + +* Wed Jul 29 2015 Fedora Release Engineering - 25.3.10-4 +- Rebuilt for https://fedoraproject.org/wiki/Changes/F23Boost159 + +* Wed Jul 22 2015 David Tardon - 25.3.10-3 +- rebuild for Boost 1.58 + +* Wed Jul 08 2015 Ryan O'Hara - 25.3.10-2 +- Disable ARM builds (#1241164, #1239516) + +* Mon Jul 06 2015 Ryan O'Hara - 25.3.10-1 +- Update to version 25.3.10 + +* Wed Jun 17 2015 Fedora Release Engineering - 25.3.5-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Mon Jan 26 2015 Petr Machata - 25.3.5-10 +- Rebuild for boost 1.57.0 + +* Thu Nov 27 2014 Richard W.M. Jones - 25.3.5-9 +- Add aarch64 support. + +* Sat Aug 16 2014 Fedora Release Engineering - 25.3.5-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sat Jun 07 2014 Fedora Release Engineering - 25.3.5-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Fri May 23 2014 Petr Machata - 25.3.5-6 +- Rebuild for boost 1.55.0 + +* Wed Apr 30 2014 Dan HorĂ¡k - 25.3.5-5 +- set ExclusiveArch + +* Thu Apr 24 2014 Ryan O'Hara - 25.3.5-4 +- Use strict_build_flags=0 to avoid -Werror +- Remove unnecessary clean section + +* Thu Apr 24 2014 Ryan O'Hara - 25.3.5-3 +- Include galera directories in file list +- Set CPPFLAGS to optflags + +* Wed Apr 23 2014 Ryan O'Hara - 25.3.5-2 +- Fix client certificate verification (#1090604) + +* Thu Mar 27 2014 Ryan O'Hara - 25.3.5-1 +- Update to version 25.3.5 + +* Mon Mar 24 2014 Ryan O'Hara - 25.3.3-2 +- Add systemd service + +* Sun Mar 09 2014 Ryan O'Hara - 25.3.3-1 +- Initial build diff --git a/gating.yaml b/gating.yaml new file mode 100644 index 0000000..c190bde --- /dev/null +++ b/gating.yaml @@ -0,0 +1,6 @@ +--- !Policy +product_versions: + - rhel-9 +decision_context: osci_compose_gate +rules: + - !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1.functional} diff --git a/sources b/sources new file mode 100644 index 0000000..a3cd9c7 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (galera-26.4.20.tar.gz) = d23332f8111b1d39327d50ad2374813fd8c9688a26899c6c30a9426490f1d012f25cc21f4e10c71ae2bfda963f4e656c1b9dd0d7931b00bb14ee9a754772cfa6