diff --git a/.galera.metadata b/.galera.metadata index 97fda42..a0ec6ba 100644 --- a/.galera.metadata +++ b/.galera.metadata @@ -1 +1 @@ -5146c0d2a899cefaf537925d52382069d007b973 SOURCES/galera-25.3.37.tar.gz +2c3019ae05300adcdd6afae72e9c16ef14a37e5c SOURCES/galera-26.4.16.tar.gz diff --git a/.gitignore b/.gitignore index 24a908e..0d9207b 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/galera-25.3.37.tar.gz +SOURCES/galera-26.4.16.tar.gz diff --git a/SOURCES/4e214d612359a294312943271abaf40685115fda.patch b/SOURCES/4e214d612359a294312943271abaf40685115fda.patch new file mode 100644 index 0000000..b83930d --- /dev/null +++ b/SOURCES/4e214d612359a294312943271abaf40685115fda.patch @@ -0,0 +1,374 @@ +Taken from: + https://github.com/codership/galera/commit/4e214d612359a294312943271abaf40685115fda.patch + +Reson: + The SSL certifactes expired, which resulted in the test failing: + | 85%: Checks: 77, Failures: 0, Errors: 11 + | /builddir/build/BUILD/galera-26.4.16/galerautils/tests/gu_asio_test.cpp:1019:E:test_ssl_connect:test_ssl_connect:0: (after this point) Test timeout expired + | /builddir/build/BUILD/galera-26.4.16/galerautils/tests/gu_asio_test.cpp:1031:E:test_ssl_connect_twice:test_ssl_connect_twice:0: (after this point) Test timeout expired + | /builddir/build/BUILD/galera-26.4.16/galerautils/tests/gu_asio_test.cpp:1046:E:test_ssl_async_read_write:test_ssl_async_read_write:0: (after this point) Test timeout expired + | /builddir/build/BUILD/galera-26.4.16/galerautils/tests/gu_asio_test.cpp:1058:E:test_ssl_async_read_write_large:test_ssl_async_read_write_large:0: (after this point) Test timeout expired + | /builddir/build/BUILD/galera-26.4.16/galerautils/tests/gu_asio_test.cpp:636:E:test_ssl_async_read_write_small_large:test_ssl_async_read_write_small_large:0: (after this point) Test timeout expired + | /builddir/build/BUILD/galera-26.4.16/galerautils/tests/gu_asio_test.cpp:1083:E:test_ssl_async_read_from_client_write_from_server:test_ssl_async_read_from_client_write_from_server:0: (after this point) Test timeout expired + | /builddir/build/BUILD/galera-26.4.16/galerautils/tests/gu_asio_test.cpp:1096:E:test_ssl_write_twice_wo_handling:test_ssl_write_twice_wo_handling:0: (after this point) Test timeout expired + | /builddir/build/BUILD/galera-26.4.16/galerautils/tests/gu_asio_test.cpp:1109:E:test_ssl_close_client:test_ssl_close_client:0: (after this point) Test timeout expired + | /builddir/build/BUILD/galera-26.4.16/galerautils/tests/gu_asio_test.cpp:1121:E:test_ssl_close_server:test_ssl_close_server:0: (after this point) Test timeout expired + | /builddir/build/BUILD/galera-26.4.16/galerautils/tests/gu_asio_test.cpp:1133:E:test_ssl_get_tcp_info:test_ssl_get_tcp_info:0: (after this point) Test timeout expired + | /builddir/build/BUILD/galera-26.4.16/galerautils/tests/gu_asio_test.cpp:1145:E:test_ssl_compression_option:test_ssl_compression_option:0: (after this point) Test timeout expired + +--- + +From 4e214d612359a294312943271abaf40685115fda Mon Sep 17 00:00:00 2001 +From: Teemu Ollakka +Date: Mon, 2 Oct 2023 20:31:37 +0300 +Subject: [PATCH] codership/galera#647 Generate keys and certificates for SSL + tests + +Relying on static certificates causes several problems: +- Certificates eventually expire, which causes surprises + when tests suddenly stop passing without prior warning. +- Standards change, a certificate created on different + platform long time ago may not be usable on some more + modern platform. +- Lack of fine grained control on test scenarios without + generating and storing several certificates in source + repository. + +In order to work around the problems above, generate +certificates programmatically before the tests are run. +The generated certificates use the same versioning and +extensions as the original ones under tests/conf. +--- + galerautils/tests/CMakeLists.txt | 4 +- + galerautils/tests/gu_asio_test.cpp | 269 ++++++++++++++++++++++++++++- + 3 files changed, 266 insertions(+), 8 deletions(-) + +diff --git a/galerautils/tests/CMakeLists.txt b/galerautils/tests/CMakeLists.txt +index f863ce66b..a44b2d6b3 100644 +--- a/galerautils/tests/CMakeLists.txt ++++ b/galerautils/tests/CMakeLists.txt +@@ -47,7 +47,6 @@ add_test( + # + # C++ galerautils tests. + # +- + add_executable(gu_tests++ + gu_atomic_test.cpp + gu_gtid_test.cpp +@@ -75,7 +74,7 @@ add_executable(gu_tests++ + + target_compile_definitions(gu_tests++ + PRIVATE +- -DGU_ASIO_TEST_CERT_DIR="${PROJECT_SOURCE_DIR}/tests/conf") ++ -DGU_ASIO_TEST_CERT_DIR="${CMAKE_CURRENT_BINARY_DIR}/certs") + + # TODO: These should be eventually fixed. + target_compile_options(gu_tests++ +@@ -93,7 +92,6 @@ add_test( + NAME gu_tests++ + COMMAND gu_tests++ + ) +- + # + # Deqmap micro benchmark. + # +diff --git a/galerautils/tests/gu_asio_test.cpp b/galerautils/tests/gu_asio_test.cpp +index c4c948bda..616902eb1 100644 +--- a/galerautils/tests/gu_asio_test.cpp ++++ b/galerautils/tests/gu_asio_test.cpp +@@ -1,5 +1,5 @@ + /* +- * Copyright (C) 2019-2020 Codership Oy ++ * Copyright (C) 2019-2023 Codership Oy + */ + + +@@ -920,18 +920,276 @@ END_TEST + + #ifdef GALERA_HAVE_SSL + ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include + #include + +-// +-// SSL +-// ++#include + + static std::string get_cert_dir() + { +- // This will be set by CMake/preprocessor. ++ static_assert(::strlen(GU_ASIO_TEST_CERT_DIR) > 0); ++ const std::string ret{ GU_ASIO_TEST_CERT_DIR }; ++ auto* dir = opendir(ret.c_str()); ++ if (!dir) ++ { ++ if (mkdir(ret.c_str(), S_IRWXU)) ++ { ++ const auto* errstr = ::strerror(errno); ++ gu_throw_fatal << "Could not create dir " << ret << ": " << errstr; ++ } ++ } ++ else ++ { ++ closedir(dir); ++ } + return GU_ASIO_TEST_CERT_DIR; + } + ++static int password_cb(char*, int, int, void*) { return 0; } ++ ++static void throw_error(const char* msg) ++{ ++ gu_throw_fatal << msg << ": " << ERR_error_string(ERR_get_error(), nullptr); ++} ++ ++static EVP_PKEY* create_key() ++{ ++#if OPENSSL_VERSION_MAJOR < 3 ++ auto* bn = BN_new(); ++ if (!bn) ++ { ++ throw_error("could not create BN"); ++ } ++ BN_set_word(bn, 0x10001); ++ auto* rsa = RSA_new(); ++ if (!rsa) ++ { ++ BN_free(bn); ++ throw_error("could not create RSA"); ++ } ++ RSA_generate_key_ex(rsa, 2048, bn, nullptr); ++ auto* pkey = EVP_PKEY_new(); ++ if (!pkey) ++ { ++ BN_free(bn); ++ RSA_free(rsa); ++ throw_error("could not create PKEY"); ++ } ++ EVP_PKEY_set1_RSA(pkey, rsa); ++ RSA_free(rsa); ++ BN_free(bn); ++ return pkey; ++#else ++ auto* ret = EVP_RSA_gen(2048); ++ if (!ret) ++ { ++ throw_error("could not create RSA"); ++ } ++ return ret; ++#endif /* OPENSSL_VERSION_MAJOR < 3 */ ++} ++ ++static FILE* open_file(const std::string& path, const char* mode) ++{ ++ auto* ret = fopen(path.c_str(), mode); ++ if (!ret) ++ { ++ const auto* errstr = ::strerror(errno); ++ gu_throw_fatal << "Could not open file " << path << ": " ++ << errstr; ++ } ++ return ret; ++} ++ ++static void write_key(EVP_PKEY* pkey, const std::string& filename) ++{ ++ const std::string cert_dir = get_cert_dir(); ++ const std::string key_file_path = cert_dir + "/" + filename; ++ auto* key_file = open_file(key_file_path, "wb"); ++ if (!PEM_write_PrivateKey(key_file, pkey, nullptr, nullptr, 0, password_cb, ++ nullptr)) ++ { ++ throw_error("Could not write key"); ++ } ++ fclose(key_file); ++} ++ ++static void set_x509v3_extensions(X509* x509, X509* issuer) ++{ ++ auto* conf_bio = BIO_new(BIO_s_mem()); ++ std::string ext{ "[extensions]\n" ++ "authorityKeyIdentifier=keyid,issuer\n" ++ "subjectKeyIdentifier=hash\n" }; ++ if (!issuer) ++ { ++ ext += "basicConstraints=critical,CA:TRUE\n"; ++ } ++ else ++ { ++ ext += "keyUsage=digitalSignature,keyEncipherment\n"; ++ ext += "basicConstraints=CA:FALSE\n"; ++ } ++ BIO_printf(conf_bio, "%s", ext.c_str()); ++ auto* conf = NCONF_new(nullptr); ++ long errorline = -1; ++ int err; ++ if ((err = NCONF_load_bio(conf, conf_bio, &errorline)) <= 0) ++ { ++ gu_throw_fatal << "Could not load conf: " << err; ++ } ++ if (errorline != -1) ++ { ++ gu_throw_fatal << "Could not load conf, errorline: " << errorline; ++ } ++ // TODO: V3 extensions ++ X509V3_CTX ctx; ++ X509V3_set_ctx(&ctx, issuer ? issuer : x509, x509, nullptr, nullptr, 0); ++ X509V3_set_nconf(&ctx, conf); ++ if (!X509V3_EXT_add_nconf(conf, &ctx, "extensions", x509)) ++ { ++ throw_error("Could not add extension"); ++ } ++ NCONF_free(conf); ++ BIO_free(conf_bio); ++} ++ ++static X509* create_x509(EVP_PKEY* pkey, X509* issuer, const char* cn) ++{ ++ auto* x509 = X509_new(); ++ /* According to standard, value 2 means version 3. */ ++ X509_set_version(x509, 2); ++ ASN1_INTEGER_set(X509_get_serialNumber(x509), 1); ++ X509_gmtime_adj(X509_get_notBefore(x509), 0); ++ X509_gmtime_adj(X509_get_notAfter(x509), 31536000L); ++ X509_set_pubkey(x509, pkey); ++ ++ auto* name = X509_get_subject_name(x509); ++ X509_NAME_add_entry_by_txt(name, "C", MBSTRING_ASC, (unsigned char*)"FI", ++ -1, -1, 0); ++ X509_NAME_add_entry_by_txt(name, "ST", MBSTRING_ASC, ++ (unsigned char*)"Uusimaa", -1, -1, 0); ++ X509_NAME_add_entry_by_txt(name, "L", MBSTRING_ASC, ++ (unsigned char*)"Helsinki", -1, -1, 0); ++ X509_NAME_add_entry_by_txt(name, "O", MBSTRING_ASC, ++ (unsigned char*)"Codership", -1, -1, 0); ++ X509_NAME_add_entry_by_txt(name, "OU", MBSTRING_ASC, ++ (unsigned char*)"Galera Devel", -1, -1, 0); ++ X509_NAME_add_entry_by_txt(name, "CN", MBSTRING_ASC, (unsigned char*)cn, -1, ++ -1, 0); ++ if (!issuer) ++ { ++ /* Self signed */ ++ X509_set_issuer_name(x509, name); ++ } ++ else ++ { ++ X509_set_issuer_name(x509, X509_get_subject_name(issuer)); ++ } ++ ++ set_x509v3_extensions(x509, issuer); ++ ++ X509_sign(x509, pkey, EVP_sha256()); ++ ++ return x509; ++} ++ ++static void write_x509(X509* x509, const std::string& filename) ++{ ++ const std::string cert_dir = get_cert_dir(); ++ const std::string file_path = cert_dir + "/" + filename; ++ auto* file = open_file(file_path, "wb"); ++ if (!PEM_write_X509(file, x509)) ++ { ++ throw_error("Could not write x509"); ++ } ++ fclose(file); ++} ++ ++static void write_x509_list(const std::vector& certs, ++ const std::string& filename) ++{ ++ const std::string cert_dir = get_cert_dir(); ++ const std::string file_path = cert_dir + "/" + filename; ++ auto* file = open_file(file_path, "wb"); ++ for (auto* x509 : certs) ++ { ++ if (!PEM_write_X509(file, x509)) ++ { ++ throw_error("Could not write x509"); ++ } ++ } ++ fclose(file); ++} ++ ++/* Self signed CA + certificate */ ++static void generate_self_signed() ++{ ++ auto* pkey = create_key(); ++ write_key(pkey, "galera_key.pem"); ++ auto* ca = create_x509(pkey, nullptr, "Galera Root"); ++ write_x509(ca, "galera_ca.pem"); ++ ++ auto* cert = create_x509(pkey, ca, "Galera Cert"); ++ write_x509(cert, "galera_cert.pem"); ++ X509_free(cert); ++ X509_free(ca); ++ EVP_PKEY_free(pkey); ++} ++ ++/* ++ ---- Server cert 1 ++ / ++ Root CA - Intermediate CA ++ \---- Server cert 2 ++ ++ Two bundles consisting of intermediate CA and server certificate ++ are created for servers 1 and 2. ++ */ ++static void generate_chains() ++{ ++ auto* root_ca_key = create_key(); ++ auto* root_ca = create_x509(root_ca_key, nullptr, "Galera Root CA"); ++ auto* int_ca_key = create_key(); ++ auto* int_ca = create_x509(int_ca_key, root_ca, "Galera Intermediate CA"); ++ ++ auto* server_1_key = create_key(); ++ auto* server_1_cert = create_x509(server_1_key, int_ca, "Galera Server 1"); ++ auto* server_2_key = create_key(); ++ auto* server_2_cert = create_x509(server_2_key, int_ca, "Galera Server 2"); ++ ++ write_x509(root_ca, "galera-ca.pem"); ++ write_key(server_1_key, "galera-server-1.key"); ++ write_x509_list({ server_1_cert, int_ca }, "bundle-galera-server-1.pem"); ++ write_key(server_2_key, "galera-server-2.key"); ++ write_x509_list({ server_2_cert, int_ca }, "bundle-galera-server-2.pem"); ++ ++ X509_free(server_2_cert); ++ EVP_PKEY_free(server_2_key); ++ X509_free(server_1_cert); ++ EVP_PKEY_free(server_1_key); ++ X509_free(int_ca); ++ EVP_PKEY_free(int_ca_key); ++ X509_free(root_ca); ++ EVP_PKEY_free(root_ca_key); ++} ++ ++static void generate_certificates() ++{ ++ generate_self_signed(); ++ generate_chains(); ++} ++ ++// ++// SSL ++// ++ + static gu::Config get_ssl_config() + { + gu::Config ret; +@@ -2173,6 +2431,7 @@ Suite* gu_asio_suite() + // + // SSL + // ++ generate_certificates(); + + tc = tcase_create("test_ssl_io_service"); + tcase_add_test(tc, test_ssl_io_service); diff --git a/SOURCES/cmake_paths.patch b/SOURCES/cmake_paths.patch index ba12300..ec4f06a 100644 --- a/SOURCES/cmake_paths.patch +++ b/SOURCES/cmake_paths.patch @@ -1,12 +1,18 @@ +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.8/CMakeLists.txt 2021-04-08 08:05:44.000000000 +0200 -+++ galera-26.4.8/CMakeLists.txt_patched 2021-06-10 01:40:26.886770832 +0200 -@@ -106,17 +106,23 @@ +--- 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") @@ -14,21 +20,17 @@ + if (NOT ${CMAKE_SYSTEM_NAME} MATCHES ".*BSD") install(FILES - ${CMAKE_SOURCE_DIR}/AUTHORS - ${CMAKE_SOURCE_DIR}/COPYING - ${CMAKE_SOURCE_DIR}/README + ${PROJECT_SOURCE_DIR}/AUTHORS + ${PROJECT_SOURCE_DIR}/COPYING + ${PROJECT_SOURCE_DIR}/README - DESTINATION doc) -+ DESTINATION ${INSTALL_DOCDIR}) - install(FILES ${CMAKE_SOURCE_DIR}/asio/LICENSE_1_0.txt ++ DESTINATION ${INSTALL_DOCDIR} ) + install(FILES ${PROJECT_SOURCE_DIR}/asio/LICENSE_1_0.txt - DESTINATION doc + DESTINATION ${INSTALL_DOCDIR} RENAME LICENSE.asio) - install(FILES ${CMAKE_SOURCE_DIR}/chromium/LICENSE -- DESTINATION doc -+ DESTINATION ${INSTALL_DOCDIR} - RENAME LICENSE.chromium) endif() - + 2) Configuration file @@ -88,7 +90,7 @@ + endif() + install(FILES - ${CMAKE_SOURCE_DIR}/man/garbd.8 + ${PROJECT_SOURCE_DIR}/man/garbd.8 - DESTINATION man/man8) + DESTINATION ${INSTALL_MANPAGE}) + diff --git a/SOURCES/galera-va_end.patch b/SOURCES/galera-va_end.patch deleted file mode 100644 index 167b3b1..0000000 --- a/SOURCES/galera-va_end.patch +++ /dev/null @@ -1,16 +0,0 @@ -This is an upstream patch for https://github.com/codership/galera/pull/617 -"remove duplicate va_end call" that originates from BZ #2051849 covscan -results. The upstream has not addressed the issue for over a year so this -is the reason to cover it as separate patch here. - ---- galera-25.3.37/galerautils/src/gu_dbug.c 2022-05-31 17:05:23.000000000 +0200 -+++ ../../galera-25.3.37/galerautils/src/gu_dbug.c 2023-07-10 17:09:58.969599380 +0200 -@@ -1040,7 +1040,6 @@ _gu_db_doprnt_(const char *format, ...) - } - (void) fprintf(_gu_db_fp_, "%s: ", state->u_keyword); - (void) vfprintf(_gu_db_fp_, format, args); -- va_end(args); - (void) fputc('\n', _gu_db_fp_); - dbug_flush(state); - errno = save_errno; - diff --git a/SPECS/galera.spec b/SPECS/galera.spec index 2fc9600..dba5a27 100644 --- a/SPECS/galera.spec +++ b/SPECS/galera.spec @@ -1,5 +1,5 @@ Name: galera -Version: 25.3.37 +Version: 26.4.16 Release: 1%{?dist} Summary: Synchronous multi-master wsrep provider (replication engine) @@ -8,7 +8,7 @@ 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.3.32/galera-25.3.34/src/galera-25.3.34.tar.gz +# 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 @@ -16,24 +16,21 @@ Source1: garbd.service Source2: garbd-wrapper Patch0: cmake_paths.patch -Patch1: galera-va_end.patch +Patch1: 4e214d612359a294312943271abaf40685115fda.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 - -Requires(post): systemd -Requires(preun): systemd -Requires(postun): systemd +%{?systemd_requires} %description -Galera is a fast synchronous multi-master wsrep provider (replication engine) +Galera is a fast synchronous multimaster wsrep provider (replication engine) for transactional databases and similar applications. For more information -about wsrep API see http://launchpad.net/wsrep. For a description of Galera -replication engine see http://www.codership.com. +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 @@ -44,7 +41,8 @@ replication engine see http://www.codership.com. %build %{set_build_flags} -%cmake . \ + +%cmake \ -DCMAKE_BUILD_TYPE="%{?with_debug:Debug}%{!?with_debug:RelWithDebInfo}" \ -DINSTALL_LAYOUT=RPM \ -DCMAKE_RULE_MESSAGES:BOOL=OFF \ @@ -53,9 +51,9 @@ replication engine see http://www.codership.com. \ -DINSTALL_DOCDIR="share/doc/%{name}/" \ -DINSTALL_GARBD="sbin" \ - -DINSTALL_GARBD-SYSTEMD="share/doc/galera" \ + -DINSTALL_GARBD-SYSTEMD="sbin" \ -DINSTALL_CONFIGURATION="/etc/sysconfig/" \ - -DINSTALL_SYSTEMD_SERVICE="share/doc/galera" \ + -DINSTALL_SYSTEMD_SERVICE="lib/systemd/system" \ -DINSTALL_LIBDIR="%{_lib}/galera" \ -DINSTALL_MANPAGE="share/man/man8" @@ -74,15 +72,15 @@ cmake -B %_vpath_builddir -LAH # 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}/usr/share/doc/galera/garb.service %{buildroot}/usr/share/doc/galera/garbd.service -sed -i 's/Alias=garbd.service/Alias=garb.service/g' %{buildroot}/usr/share/doc/galera/garbd.service +mv %{buildroot}/usr/lib/systemd/system/garb.service %{buildroot}/usr/lib/systemd/system/garbd.service +sed -i 's/Alias=garbd.service/Alias=garb.service/g' %{buildroot}/usr/lib/systemd/system/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}/usr/share/doc/galera/garbd.service +sed -i 's;/usr/bin/garb-systemd;/usr/sbin/garb-systemd;g' %{buildroot}/usr/lib/systemd/system/garbd.service # In the wrapper script: -sed -i 's;/usr/bin/garbd;/usr/sbin/garbd;g' %{buildroot}/usr/share/doc/galera/garb-systemd +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 @@ -107,11 +105,12 @@ sed -i 's;/usr/bin/garbd;/usr/sbin/garbd;g' %{buildroot}/usr/share/doc/galera/ga ## 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}/usr/share/doc/galera/garbd.service +sed -i 's/User=nobody/User=garb/g' %{buildroot}/usr/lib/systemd/system/garbd.service + + +%check +%ctest -# Install old service and wrapper to maintain compatibility -install -D -m 644 %{SOURCE1} %{buildroot}%{_unitdir}/garbd.service -install -D -m 755 %{SOURCE2} %{buildroot}%{_sbindir}/garbd-wrapper %pre /usr/sbin/useradd -M -r -d /dev/null -s /sbin/nologin -c "Galera Arbitrator Daemon" garb >/dev/null 2>&1 || : @@ -135,62 +134,134 @@ install -D -m 755 %{SOURCE2} %{buildroot}%{_sbindir}/garbd-wrapper %dir %{_libdir}/galera %{_sbindir}/garbd -%{_sbindir}/garbd-wrapper +#%{_sbindir}/garbd-wrapper # PATCH 3: # Make sure the wrapper script is executable -%attr(755, -, -) %{_docdir}/galera/garb-systemd +%attr(755, -, -) %{_sbindir}/garb-systemd %{_mandir}/man8/garbd.8* %{_unitdir}/garbd.service -%{_docdir}/galera/garbd.service %{_libdir}/galera/libgalera_smm.so %doc %{_docdir}/galera/AUTHORS %doc %{_docdir}/galera/COPYING %doc %{_docdir}/galera/LICENSE.asio -%doc %{_docdir}/galera/LICENSE.chromium %doc %{_docdir}/galera/README #%doc %{_docdir}/galera/README-MySQL %changelog -* Tue Jul 04 2023 Anton Bobrov - 25.3.37-1 -- Rebase to 25.3.37 +* Fri Nov 17 2023 Michal Schorm - 26.4.16-1 +- Rebase to 26.4.16 -* Fri Jul 01 2022 Zuzana Miklankova - 25.3.35-1 -- Rebase to 25.3.35 +* Sat Apr 29 2023 Michal Schorm - 26.4.14-1 +- Rebase to 26.4.14 -* Thu Feb 03 2022 Lukas Javorsky - 25.3.34-4 +* 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 -* Fri Jan 28 2022 Lukas Javorsky - 25.3.34-3 -- Use downstream garbd-wrapper and garbd.service to ensure compatibility -- Add upstream versions of garbd-wrapper (called garbd-systemd) and garbd.service - in case user want's to use them +* Tue Aug 17 2021 Michal Schorm - 26.4.9-1 +- Rebase to 26.4.9 -* Wed Jan 19 2022 Michal Schorm - 25.3.34-2 +* 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 -* Wed Jan 19 2022 Zuzana Miklankova - 25.3.34-1 -- Rebase to 25.3.34 - Resolves: #2042298 - -* Tue Mar 23 2021 Michal Schorm - 25.3.32-1 -- Rebase to 25.3.32 +* Thu Jun 03 2021 Lukas Javorsky - 26.4.8-1 +- Rebase to 26.4.8 -* Tue Nov 10 2020 Michal Schorm - 25.3.31-1 -- Rebase to 25.3.31 - Resolves: #1731289, #1856812 +* Wed Jun 16 2021 Mohan Boddu - 26.4.7-3 +- Rebuilt for RHEL 9 BETA for openssl 3.0 + Related: rhbz#1971065 -* Thu Jul 18 2019 Michal Schorm - 25.3.26-1 +* 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 - Resolves: #1687879 - Resolves: #1657220 + +* 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