git: 321dfcad241c - 2023Q2 - databases/xtrabackup: fix build on the i386 platform

From: Oleksii Samorukov <samm_at_FreeBSD.org>
Date: Tue, 06 Jun 2023 14:45:37 UTC
The branch 2023Q2 has been updated by samm:

URL: https://cgit.FreeBSD.org/ports/commit/?id=321dfcad241cfe526f76a5f3888bd940a6aae4be

commit 321dfcad241cfe526f76a5f3888bd940a6aae4be
Author:     Oleksii Samorukov <samm@FreeBSD.org>
AuthorDate: 2023-06-06 04:56:40 +0000
Commit:     Oleksii Samorukov <samm@FreeBSD.org>
CommitDate: 2023-06-06 14:43:40 +0000

    databases/xtrabackup: fix build on the i386 platform
    
    - Copy fix from the databases/mysql57-server to fix boost compliation
    - Remove all clang workaround as not needed anymore
    - Remove outdated patches and sync some patches from databases/mysql
    - Update version
    
    ChangeLog: https://docs.percona.com/percona-xtrabackup/2.4/release-notes.html
    
    (cherry picked from commit fcc69d210225054e6cc9ea207caab294ce18fe8e)
    (cherry picked from commit da87c36f4e198043d4fc8ea8fc19f1ae73fc1661)
---
 databases/xtrabackup/Makefile                      | 17 +++-------
 databases/xtrabackup/distinfo                      |  6 ++--
 .../files/patch-cmake-install_layout.cmake         |  4 +--
 .../xtrabackup/files/patch-cmake_os_FreeBSD.cmake  | 10 +++---
 .../xtrabackup/files/patch-include_my__compare.h   | 11 +++++++
 databases/xtrabackup/files/patch-include_myisam.h  | 11 +++++++
 .../patch-sql_conn__handler_socket__connection.cc  | 32 ++++++++++++++++++
 .../files/patch-sql_locks_shared__spin__lock.cc    | 11 +++++++
 databases/xtrabackup/files/patch-sql_sys__vars.cc  | 38 ++++++++++++++++++++++
 .../files/patch-storage-myisam-mi_dynrec.c         |  4 +--
 .../files/patch-storage_innobase_fsp_fsp0fsp.cc    |  4 +--
 ...h-storage_innobase_xtrabackup_src_ds__tmpfile.c | 11 -------
 ...atch-storage_innobase_xtrabackup_src_xbstream.c | 10 ------
 13 files changed, 122 insertions(+), 47 deletions(-)

diff --git a/databases/xtrabackup/Makefile b/databases/xtrabackup/Makefile
index b984c86c2282..d5a5f4c0e81f 100644
--- a/databases/xtrabackup/Makefile
+++ b/databases/xtrabackup/Makefile
@@ -1,5 +1,5 @@
 PORTNAME=	xtrabackup
-DISTVERSION=	2.4.21
+DISTVERSION=	2.4.28
 CATEGORIES=	databases
 MASTER_SITES=	https://www.percona.com/downloads/Percona-XtraBackup-${PORTVERSION:R}/Percona-XtraBackup-${PORTVERSION}/source/tarball/:xtrabackup \
 		https://ftp.osuosl.org/pub/blfs/conglomeration/boost/:boost SF/boost/boost/1.59.0/:boost
@@ -42,20 +42,13 @@ PLIST_FILES=	bin/xtrabackup bin/xbstream bin/innobackupex bin/xbcrypt \
 		bin/xbcloud bin/xbcloud_osenv
 
 .include <bsd.port.pre.mk>
-# xtrabackup/mysql57 fails to compile with llvm11, which was imported to current in r364284
-# without a version increase (1300109 = r364274).
-# Until a proper fix is provided, simply use llvm from ports, which probably could be
-# a backport of amongst other tings:
-# https://github.com/mysql/mysql-server/commit/08f46b3c00ee70e7ed7825daeb91df2289f80f50
-.if ${CHOSEN_COMPILER_TYPE} == clang && ${OPSYS} == FreeBSD && ${OSVERSION} >= 1300109
-_LLVM_VERSION=	10
-BUILD_DEPENDS+=	clang${_LLVM_VERSION}:devel/llvm${_LLVM_VERSION}
-CC=		${LOCALBASE}/bin/clang${_LLVM_VERSION}
-CXX=		${LOCALBASE}/bin/clang++${_LLVM_VERSION}
-.endif
 
 # Not sure why it's trying to install mysql client libraries now
 post-install:
 	${RM} -rf ${STAGEDIR}${LOCALBASE}/lib
 
+post-patch:
+	@${REINPLACE_CMD} -e 's|__clang__|__undefined__|g' \
+	    ${WRKDIR}/boost_1_59_0/boost/atomic/detail/ops_gcc_x86_dcas.hpp
+
 .include <bsd.port.post.mk>
diff --git a/databases/xtrabackup/distinfo b/databases/xtrabackup/distinfo
index 2a26d91ed656..ed854fdc0fa2 100644
--- a/databases/xtrabackup/distinfo
+++ b/databases/xtrabackup/distinfo
@@ -1,5 +1,5 @@
-TIMESTAMP = 1610454639
-SHA256 (percona-xtrabackup-2.4.21.tar.gz) = 6427b16348c181df8b570bc9e7c16374fef81277dd8677628ae3b9fb608548cc
-SIZE (percona-xtrabackup-2.4.21.tar.gz) = 61901220
+TIMESTAMP = 1685991049
+SHA256 (percona-xtrabackup-2.4.28.tar.gz) = 1d77f920a0cf536e12ddcd3a154583b1b52cd3db35bd2d06db629cc255367cea
+SIZE (percona-xtrabackup-2.4.28.tar.gz) = 62525343
 SHA256 (boost_1_59_0.tar.bz2) = 727a932322d94287b62abb1bd2d41723eec4356a7728909e38adb65ca25241ca
 SIZE (boost_1_59_0.tar.bz2) = 70389425
diff --git a/databases/xtrabackup/files/patch-cmake-install_layout.cmake b/databases/xtrabackup/files/patch-cmake-install_layout.cmake
index e823abeffe31..48409561fcf5 100644
--- a/databases/xtrabackup/files/patch-cmake-install_layout.cmake
+++ b/databases/xtrabackup/files/patch-cmake-install_layout.cmake
@@ -1,6 +1,6 @@
---- cmake/install_layout.cmake.orig	2020-04-10 19:45:19 UTC
+--- cmake/install_layout.cmake.orig	2023-03-14 11:58:56 UTC
 +++ cmake/install_layout.cmake
-@@ -160,7 +160,7 @@ SET(INSTALL_INFODIR_STANDALONE          "docs")
+@@ -167,7 +167,7 @@ SET(INSTALL_INFODIR_STANDALONE          "docs")
  #
  SET(INSTALL_SHAREDIR_STANDALONE         "share")
  SET(INSTALL_MYSQLSHAREDIR_STANDALONE    "share")
diff --git a/databases/xtrabackup/files/patch-cmake_os_FreeBSD.cmake b/databases/xtrabackup/files/patch-cmake_os_FreeBSD.cmake
index 2b65a3faef22..3610fac4b5d2 100644
--- a/databases/xtrabackup/files/patch-cmake_os_FreeBSD.cmake
+++ b/databases/xtrabackup/files/patch-cmake_os_FreeBSD.cmake
@@ -1,8 +1,8 @@
---- cmake/os/FreeBSD.cmake.orig	2020-05-26 05:35:19 UTC
+--- cmake/os/FreeBSD.cmake.orig	2023-03-14 11:58:56 UTC
 +++ cmake/os/FreeBSD.cmake
-@@ -36,6 +36,20 @@ IF(NOT FORCE_UNSUPPORTED_COMPILER)
-     IF(GCC_VERSION VERSION_LESS 4.4)
-       MESSAGE(FATAL_ERROR "GCC 4.4 or newer is required!")
+@@ -45,6 +45,20 @@ IF(NOT FORCE_UNSUPPORTED_COMPILER)
+     IF(NOT HAVE_SUPPORTED_CLANG_VERSION)
+       MESSAGE(FATAL_ERROR "Clang 3.3 or newer is required!")
      ENDIF()
 +    CHECK_C_SOURCE_RUNS("
 +      int main()
@@ -21,7 +21,7 @@
    ELSE()
      MESSAGE(FATAL_ERROR "Unsupported compiler!")
    ENDIF()
-@@ -44,4 +58,6 @@ ENDIF()
+@@ -53,4 +67,6 @@ ENDIF()
  # Should not be needed any more, but kept for easy resurrection if needed
  #   #Legacy option, maybe not needed anymore , taken as is from autotools build
  #   ADD_DEFINITIONS(-DNET_RETRY_COUNT=1000000)
diff --git a/databases/xtrabackup/files/patch-include_my__compare.h b/databases/xtrabackup/files/patch-include_my__compare.h
new file mode 100644
index 000000000000..24205abdee3e
--- /dev/null
+++ b/databases/xtrabackup/files/patch-include_my__compare.h
@@ -0,0 +1,11 @@
+--- include/my_compare.h.orig	2019-10-21 05:21:41 UTC
++++ include/my_compare.h
+@@ -47,7 +47,7 @@ extern "C" {
+   But beware the dependency of MI_MAX_POSSIBLE_KEY_BUFF and HA_MAX_KEY_LENGTH.
+ */
+ 
+-#define HA_MAX_KEY_LENGTH           1000        /* Max length in bytes */
++#define HA_MAX_KEY_LENGTH           4000        /* Max length in bytes */
+ #define HA_MAX_KEY_SEG              16          /* Max segments for key */
+ 
+ #define HA_MAX_POSSIBLE_KEY_BUFF    (HA_MAX_KEY_LENGTH + 24+ 6+6)
diff --git a/databases/xtrabackup/files/patch-include_myisam.h b/databases/xtrabackup/files/patch-include_myisam.h
new file mode 100644
index 000000000000..228303eaf909
--- /dev/null
+++ b/databases/xtrabackup/files/patch-include_myisam.h
@@ -0,0 +1,11 @@
+--- include/myisam.h.orig	2019-10-21 05:21:41 UTC
++++ include/myisam.h
+@@ -52,7 +52,7 @@ extern "C" {
+   The following defines can be increased if necessary.
+   But beware the dependency of MI_MAX_POSSIBLE_KEY_BUFF and MI_MAX_KEY_LENGTH.
+ */
+-#define MI_MAX_KEY_LENGTH           1000            /* Max length in bytes */
++#define MI_MAX_KEY_LENGTH           4000            /* Max length in bytes */
+ #define MI_MAX_KEY_SEG              16              /* Max segments for key */
+ 
+ #define MI_MAX_KEY_BUFF  (MI_MAX_KEY_LENGTH+MI_MAX_KEY_SEG*6+8+8)
diff --git a/databases/xtrabackup/files/patch-sql_conn__handler_socket__connection.cc b/databases/xtrabackup/files/patch-sql_conn__handler_socket__connection.cc
new file mode 100644
index 000000000000..5afdb1cfd53e
--- /dev/null
+++ b/databases/xtrabackup/files/patch-sql_conn__handler_socket__connection.cc
@@ -0,0 +1,32 @@
+--- sql/conn_handler/socket_connection.cc.orig	2019-10-21 05:21:41 UTC
++++ sql/conn_handler/socket_connection.cc
+@@ -953,22 +953,25 @@ Channel_info* Mysqld_socket_listener::listen_for_conne
+     signal(SIGCHLD, SIG_DFL);
+     request_init(&req, RQ_DAEMON, m_libwrap_name, RQ_FILE,
+                  mysql_socket_getfd(connect_sock), NULL);
+-    fromhost(&req);
++    void (*my_fromhost) (void *) = (void (*)(void *)) fromhost;
++    my_fromhost(&req);
+ 
+-    if (!hosts_access(&req))
++    int (*my_hosts_access) (void *) = (int (*) (void *)) hosts_access;
++    if (!my_hosts_access(&req))
+     {
+       /*
+         This may be stupid but refuse() includes an exit(0)
+         which we surely don't want...
+         clean_exit() - same stupid thing ...
+       */
++      char *(*my_eval_client) (void *) = (char *(*) (void *)) eval_client;
+       syslog(LOG_AUTH | m_deny_severity,
+-             "refused connect from %s", eval_client(&req));
++             "refused connect from %s", my_eval_client(&req));
+ 
+ #ifdef HAVE_LIBWRAP_PROTOTYPES
+       // Some distros have patched tcpd.h to have proper prototypes
+       if (req.sink)
+-        (req.sink)(req.fd);
++        ((void (*)(int)) (req.sink))(req.fd);
+ #else
+       // Some distros have not patched tcpd.h
+       if (req.sink)
diff --git a/databases/xtrabackup/files/patch-sql_locks_shared__spin__lock.cc b/databases/xtrabackup/files/patch-sql_locks_shared__spin__lock.cc
new file mode 100644
index 000000000000..b581258780b9
--- /dev/null
+++ b/databases/xtrabackup/files/patch-sql_locks_shared__spin__lock.cc
@@ -0,0 +1,11 @@
+--- sql/locks/shared_spin_lock.cc.orig	2023-06-05 20:41:14 UTC
++++ sql/locks/shared_spin_lock.cc
+@@ -239,7 +239,7 @@ lock::Shared_spin_lock &lock::Shared_spin_lock::try_or
+   {
+     this->spin_exclusive_lock();
+   }
+-#if defined(__APPLE__)
++#if defined(__APPLE__) || defined(__FreeBSD__)
+   my_atomic_store64(&this->m_exclusive_owner, reinterpret_cast<int64>(self));
+ #else
+   my_atomic_store64(&this->m_exclusive_owner, self);
diff --git a/databases/xtrabackup/files/patch-sql_sys__vars.cc b/databases/xtrabackup/files/patch-sql_sys__vars.cc
new file mode 100644
index 000000000000..52c636089b2d
--- /dev/null
+++ b/databases/xtrabackup/files/patch-sql_sys__vars.cc
@@ -0,0 +1,38 @@
+--- sql/sys_vars.cc.orig	2021-06-16 10:56:53 UTC
++++ sql/sys_vars.cc
+@@ -1749,7 +1749,7 @@ static Sys_var_ulong Sys_interactive_timeout(
+        "connection before closing it",
+        SESSION_VAR(net_interactive_timeout),
+        CMD_LINE(REQUIRED_ARG),
+-       VALID_RANGE(1, LONG_TIMEOUT), DEFAULT(NET_WAIT_TIMEOUT), BLOCK_SIZE(1));
++       VALID_RANGE(1, INT_MAX32/1000), DEFAULT(NET_WAIT_TIMEOUT), BLOCK_SIZE(1));
+ 
+ static Sys_var_ulong Sys_join_buffer_size(
+        "join_buffer_size",
+@@ -2629,7 +2629,7 @@ static Sys_var_ulong Sys_net_read_timeout(
+        "Number of seconds to wait for more data from a connection before "
+        "aborting the read",
+        SESSION_VAR(net_read_timeout), CMD_LINE(REQUIRED_ARG),
+-       VALID_RANGE(1, LONG_TIMEOUT), DEFAULT(NET_READ_TIMEOUT), BLOCK_SIZE(1),
++       VALID_RANGE(1, INT_MAX32/1000), DEFAULT(NET_READ_TIMEOUT), BLOCK_SIZE(1),
+        NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0),
+        ON_UPDATE(fix_net_read_timeout));
+ 
+@@ -2653,7 +2653,7 @@ static Sys_var_ulong Sys_net_write_timeout(
+        "Number of seconds to wait for a block to be written to a connection "
+        "before aborting the write",
+        SESSION_VAR(net_write_timeout), CMD_LINE(REQUIRED_ARG),
+-       VALID_RANGE(1, LONG_TIMEOUT), DEFAULT(NET_WRITE_TIMEOUT), BLOCK_SIZE(1),
++       VALID_RANGE(1, INT_MAX32/1000), DEFAULT(NET_WRITE_TIMEOUT), BLOCK_SIZE(1),
+        NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0),
+        ON_UPDATE(fix_net_write_timeout));
+ 
+@@ -4389,7 +4389,7 @@ static Sys_var_ulong Sys_net_wait_timeout(
+        "The number of seconds the server waits for activity on a "
+        "connection before closing it",
+        SESSION_VAR(net_wait_timeout), CMD_LINE(REQUIRED_ARG),
+-       VALID_RANGE(1, IF_WIN(INT_MAX32/1000, LONG_TIMEOUT)),
++       VALID_RANGE(1, INT_MAX32/1000),
+        DEFAULT(NET_WAIT_TIMEOUT), BLOCK_SIZE(1));
+ 
+ static Sys_var_plugin Sys_default_storage_engine(
diff --git a/databases/xtrabackup/files/patch-storage-myisam-mi_dynrec.c b/databases/xtrabackup/files/patch-storage-myisam-mi_dynrec.c
index 4436e2e4b195..def5cf714845 100644
--- a/databases/xtrabackup/files/patch-storage-myisam-mi_dynrec.c
+++ b/databases/xtrabackup/files/patch-storage-myisam-mi_dynrec.c
@@ -1,6 +1,6 @@
---- storage/myisam/mi_dynrec.c.orig	2020-04-10 19:45:19 UTC
+--- storage/myisam/mi_dynrec.c.orig	2023-03-14 11:58:56 UTC
 +++ storage/myisam/mi_dynrec.c
-@@ -65,18 +65,13 @@ my_bool mi_dynmap_file(MI_INFO *info, my_off_t size)
+@@ -72,18 +72,13 @@ my_bool mi_dynmap_file(MI_INFO *info, my_off_t size)
      DBUG_RETURN(1);
    }
    /*
diff --git a/databases/xtrabackup/files/patch-storage_innobase_fsp_fsp0fsp.cc b/databases/xtrabackup/files/patch-storage_innobase_fsp_fsp0fsp.cc
index 86d7e46582fb..8207474b1ced 100644
--- a/databases/xtrabackup/files/patch-storage_innobase_fsp_fsp0fsp.cc
+++ b/databases/xtrabackup/files/patch-storage_innobase_fsp_fsp0fsp.cc
@@ -1,6 +1,6 @@
---- storage/innobase/fsp/fsp0fsp.cc.orig	2020-04-10 19:45:19 UTC
+--- storage/innobase/fsp/fsp0fsp.cc.orig	2023-03-14 11:58:56 UTC
 +++ storage/innobase/fsp/fsp0fsp.cc
-@@ -1289,7 +1289,7 @@ fsp_header_decode_encryption_info(
+@@ -1293,7 +1293,7 @@ fsp_header_decode_encryption_info(
  
  	if (elen == MY_AES_BAD_DATA) {
  		my_free(master_key);
diff --git a/databases/xtrabackup/files/patch-storage_innobase_xtrabackup_src_ds__tmpfile.c b/databases/xtrabackup/files/patch-storage_innobase_xtrabackup_src_ds__tmpfile.c
deleted file mode 100644
index 1354c60ff98c..000000000000
--- a/databases/xtrabackup/files/patch-storage_innobase_xtrabackup_src_ds__tmpfile.c
+++ /dev/null
@@ -1,11 +0,0 @@
---- storage/innobase/xtrabackup/src/ds_tmpfile.c.orig	2020-04-10 19:45:19 UTC
-+++ storage/innobase/xtrabackup/src/ds_tmpfile.c
-@@ -55,7 +55,7 @@ datasink_t datasink_tmpfile = {
- 	&tmpfile_deinit
- };
- 
--MY_TMPDIR mysql_tmpdir_list;
-+extern MY_TMPDIR mysql_tmpdir_list;
- 
- static ds_ctxt_t *
- tmpfile_init(const char *root)
diff --git a/databases/xtrabackup/files/patch-storage_innobase_xtrabackup_src_xbstream.c b/databases/xtrabackup/files/patch-storage_innobase_xtrabackup_src_xbstream.c
deleted file mode 100644
index 2542052b2790..000000000000
--- a/databases/xtrabackup/files/patch-storage_innobase_xtrabackup_src_xbstream.c
+++ /dev/null
@@ -1,10 +0,0 @@
---- storage/innobase/xtrabackup/src/xbstream.c.orig	2020-04-10 19:45:19 UTC
-+++ storage/innobase/xtrabackup/src/xbstream.c
-@@ -55,7 +55,6 @@ datasink_t datasink_xbstream;
- datasink_t datasink_compress;
- datasink_t datasink_tmpfile;
- datasink_t datasink_encrypt;
--datasink_t datasink_buffer;
- 
- static run_mode_t	opt_mode;
- static char *		opt_directory = NULL;