git: d06e12de9aec - main - databases/xtrabackup8: update to version 8.0.31-24
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 26 Feb 2023 08:58:34 UTC
The branch main has been updated by eugen:
URL: https://cgit.FreeBSD.org/ports/commit/?id=d06e12de9aeccfddb388561466ef833a2906d39e
commit d06e12de9aeccfddb388561466ef833a2906d39e
Author: Eugene Grosbein <eugen@FreeBSD.org>
AuthorDate: 2023-02-26 08:50:17 +0000
Commit: Eugene Grosbein <eugen@FreeBSD.org>
CommitDate: 2023-02-26 08:58:22 +0000
databases/xtrabackup8: update to version 8.0.31-24
This change includes files/patch-llvm-15, a copy of the patch
fixing UB in MySQL Server 8.0.31 code included in xtrabackup8
and discovered with Clang 15:
https://cgit.freebsd.org/ports/tree/databases/mysql80-server/files/patch-llvm15-fix?id=9f33a321916b
The version 8.0.31-24 includes auto-tuning of its "use-memory" option
that needs implementation of host_free_memory() but lacks one
suitable for FreeBSD. This change adds simple implementation by me
in files/patch-storage_innobase_xtrabackup_src_utils.cc
that sums sysctls vm.stats.vm.v_free_count and vm.stats.vm.v_inactive_count
assuming that FreeBSD VM subsystem frees Inactive pages as needed.
This feature was tested by port maintainer Eugene Zheganin
successfully performing backup of 730GB MySQL InnoDB
that failed with previous xtrabackup8 version if used with defaults.
Drop unused dependency on vim and explicitly disable
online version update check. Force NDEBUG build as it fails otherwise.
Pet portlint.
Work-around a problem with ncurses-6.3 dependency that installs
wrong libncurses.so file (ASCII text), so use libncurses.so.6
in LIB_DEPENDS instead.
Tested by: Eugene Zheganin
Approved by: Eugene Zheganin (maintainer)
---
databases/xtrabackup8/Makefile | 54 ++++++++++++--------
databases/xtrabackup8/distinfo | 10 ++--
databases/xtrabackup8/files/patch-CMakeLists.txt | 22 +++++---
databases/xtrabackup8/files/patch-llvm-15 | 41 +++++++++++++++
databases/xtrabackup8/files/patch-procps | 15 ++++++
databases/xtrabackup8/files/patch-sql_binlog.cc | 24 ---------
.../patch-storage_innobase_xtrabackup_src_utils.cc | 59 ++++++++++++++++++++++
7 files changed, 168 insertions(+), 57 deletions(-)
diff --git a/databases/xtrabackup8/Makefile b/databases/xtrabackup8/Makefile
index a44d56c4e1b2..c38b83ce5ee1 100644
--- a/databases/xtrabackup8/Makefile
+++ b/databases/xtrabackup8/Makefile
@@ -1,13 +1,11 @@
PORTNAME= xtrabackup
-PORTVERSION= 8.0.14
-PORTREVISION= 6
+PORTVERSION= 8.0.31
+DISTVERSIONSUFFIX= -24
CATEGORIES= databases
-MASTER_SITES= https://www.percona.com/downloads/Percona-XtraBackup-${PORTVERSION:R}/Percona-XtraBackup-${PORTVERSION}/source/tarball/:precona \
- https://github.com/percona/percona-xtrabackup/archive/:percona \
+MASTER_SITES= https://github.com/percona/percona-xtrabackup/archive/:percona \
SF/boost/boost/${BOOST_VERSION}:boost
PKGNAMESUFFIX= 8
-DISTNAME= percona-${PORTNAME}-${PORTVERSION}
-DISTFILES= percona-${PORTNAME}-${DISTVERSION}${EXTRACT_SUFX}:percona \
+DISTFILES= ${PPORTNAME}-${DVERSION}${EXTRACT_SUFX}:percona \
boost_${BOOST_VERSION_UNDER}${EXTRACT_SUFX}:boost
MAINTAINER= eugene@zhegan.in
@@ -17,34 +15,47 @@ WWW= https://www.percona.com/doc/percona-xtrabackup/
LICENSE= GPLv2
LICENSE_FILE= ${WRKSRC}/LICENSE
-BUILD_DEPENDS= xxd:editors/vim \
- protobuf>=3.0:devel/protobuf \
+BUILD_DEPENDS= protobuf>=3.0:devel/protobuf \
rapidjson>=1.1.0:devel/rapidjson \
- libevent>=2.1:devel/libevent
+ libevent>=2.1:devel/libevent \
+ ncurses>=6.3:devel/ncurses
LIB_DEPENDS= libcurl.so:ftp/curl \
libev.so:devel/libev \
libgcrypt.so:security/libgcrypt \
libgpg-error.so:security/libgpg-error \
libicudata.so:devel/icu \
+ libncurses.so.6:devel/ncurses \
+ libprotobuf-lite.so:devel/protobuf \
libunwind.so:devel/libunwind \
libzstd.so:archivers/zstd
RUN_DEPENDS= qpress:archivers/qpress
-CONFLICTS_INSTALL= ${PORTNAME}
-
USES= bison cmake compiler:c++14-lang cpe pkgconfig ssl
CPE_VENDOR= percona
-CMAKE_ARGS= -DBUILD_CONFIG:STRING=xtrabackup_release
+CMAKE_ARGS= -DBUILD_CONFIG:STRING=xtrabackup_release \
+ -DWITHOUT_COMPONENT_KEYRING_KMIP:STRING=yes \
+ -DWITH_VERSION_CHECK=false
+
.for component in EDITLINE ICU LIBEVENT PROTOBUF RAPIDJSON ZSTD
CMAKE_ARGS+= -DWITH_${component}:STRING=system
.endfor
+CONFLICTS_INSTALL= ${PORTNAME}
+
# Bundle last supported Boost release
-BOOST_VERSION= 1.72.0
+BOOST_VERSION= 1.77.0
BOOST_VERSION_UNDER= ${BOOST_VERSION:C/\./_/g}
CMAKE_ARGS+= -DWITH_BOOST=${WRKDIR}/boost_${BOOST_VERSION_UNDER}
+# Build fails without NDEBUG, so force it
+CFLAGS+= -DNDEBUG
+CXXFLAGS+= -DNDEBUG
+
+DVERSION= ${PORTVERSION}${DISTVERSIONSUFFIX}
+PPORTNAME= percona-${PORTNAME}
+WRKSRC= ${WRKDIR}/${PPORTNAME}-${PPORTNAME}-${DVERSION}
+
.include <bsd.port.pre.mk>
# Since MySQL 8.0.20 InnoDB engine uses new memory alligned allocator
@@ -54,15 +65,16 @@ CMAKE_ARGS+= -DWITH_BOOST=${WRKDIR}/boost_${BOOST_VERSION_UNDER}
CMAKE_ARGS+= -DDISABLE_PSI_MEMORY=1
.endif
-post-extract:
-# Delete bundled components so we won't accidentally use them, except LZ4
-# which cannot be removed just yet
- @${MV} ${WRKSRC}/extra/lz4 ${WRKSRC}
- @${RM} -r ${WRKSRC}/extra/*
- @${MV} ${WRKSRC}/lz4 ${WRKSRC}/extra
+KEEP_EXTRA= lz4 robin-hood-hashing zlib
-post-patch:
- @${REINPLACE_CMD} -e 's,TRUE,true,' ${WRKSRC}/sql/mysqld.cc
+pre-configure:
+.for dir in ${KEEP_EXTRA}
+ @${MV} ${WRKSRC}/extra/${dir} ${WRKDIR}
+.endfor
+ @${RM} -r ${WRKSRC}/extra/*
+.for dir in ${KEEP_EXTRA}
+ @${MV} ${WRKDIR}/${dir} ${WRKSRC}/extra
+.endfor
post-stage:
@${RM} -r ${STAGEDIR}${PREFIX}/docs
diff --git a/databases/xtrabackup8/distinfo b/databases/xtrabackup8/distinfo
index 6675fcff0dc8..d0cdcc263929 100644
--- a/databases/xtrabackup8/distinfo
+++ b/databases/xtrabackup8/distinfo
@@ -1,5 +1,5 @@
-TIMESTAMP = 1650736843
-SHA256 (percona-xtrabackup-8.0.14.tar.gz) = db8d6d2c6a6b016bf24b4942582ebdbd55c09253ccc78daa6911217bd5a73d5d
-SIZE (percona-xtrabackup-8.0.14.tar.gz) = 285621091
-SHA256 (boost_1_72_0.tar.gz) = c66e88d5786f2ca4dbebb14e06b566fb642a1a6947ad8cc9091f9f445134143f
-SIZE (boost_1_72_0.tar.gz) = 126580835
+TIMESTAMP = 1677255149
+SHA256 (percona-xtrabackup-8.0.31-24.tar.gz) = 0031a91501a98e09b8d3955d580552ae05ac28696143369ba461aa1fa04c5140
+SIZE (percona-xtrabackup-8.0.31-24.tar.gz) = 336261760
+SHA256 (boost_1_77_0.tar.gz) = 5347464af5b14ac54bb945dc68f1dd7c56f0dad7262816b956138fc53bcc0131
+SIZE (boost_1_77_0.tar.gz) = 130620992
diff --git a/databases/xtrabackup8/files/patch-CMakeLists.txt b/databases/xtrabackup8/files/patch-CMakeLists.txt
index 15735641fee2..59e23aedca07 100644
--- a/databases/xtrabackup8/files/patch-CMakeLists.txt
+++ b/databases/xtrabackup8/files/patch-CMakeLists.txt
@@ -1,13 +1,21 @@
---- CMakeLists.txt.orig 2020-08-28 21:02:32 UTC
+--- CMakeLists.txt.orig 2023-01-30 13:34:34 UTC
+++ CMakeLists.txt
-@@ -1575,10 +1575,6 @@ IF(ENABLE_GCOV)
- INCLUDE(fastcov)
+@@ -2081,7 +2081,6 @@ ENDIF()
+ ENDIF()
ENDIF()
--IF(UNIX)
-- ADD_SUBDIRECTORY(man)
+-ADD_SUBDIRECTORY(extra/libkmip)
+
+ #
+ # Setup maintainer mode options by the end. Platform checks are
+@@ -2292,10 +2291,6 @@ IF(ENABLE_GCOV)
+
+ IF(ENABLE_GCOV)
+ INCLUDE(fastcov)
-ENDIF()
-
+-IF(UNIX)
+- ADD_SUBDIRECTORY(man)
+ ENDIF()
+
IF(NOT WITHOUT_SERVER)
- ADD_SUBDIRECTORY(packaging/rpm-common)
- ADD_SUBDIRECTORY(packaging/rpm-oel)
diff --git a/databases/xtrabackup8/files/patch-llvm-15 b/databases/xtrabackup8/files/patch-llvm-15
new file mode 100644
index 000000000000..95eba05846e8
--- /dev/null
+++ b/databases/xtrabackup8/files/patch-llvm-15
@@ -0,0 +1,41 @@
+--- include/varlen_sort.h.orig 2023-01-30 20:34:34.000000000 +0700
++++ include/varlen_sort.h 2023-02-25 15:15:11.238374000 +0700
+@@ -184,7 +184,9 @@ template <>
+
+ // Required for Iterator.
+ template <>
+-struct iterator_traits<varlen_iterator> : iterator_traits<varlen_element *> {};
++struct iterator_traits<varlen_iterator> : iterator_traits<varlen_element *> {
++ using reference = varlen_element;
++};
+
+ } // namespace std
+
+--- storage/innobase/include/ddl0impl.h.orig 2023-01-30 20:34:34.000000000 +0700
++++ storage/innobase/include/ddl0impl.h 2023-02-25 15:17:06.382636000 +0700
+@@ -118,14 +118,6 @@ struct Row {
+
+ /** Physical row context. */
+ struct Row {
+- /** Constructor. */
+- Row() = default;
+-
+- Row(const Row &) = default;
+-
+- /** Destructor. */
+- ~Row() = default;
+-
+ /** Build a row from a raw record.
+ @param[in,out] ctx DDL context.
+ @param[in,out] index Index the record belongs to.
+--- unittest/gunit/mysys_my_rdtsc-t.cc.orig 2023-01-30 20:34:34.000000000 +0700
++++ unittest/gunit/mysys_my_rdtsc-t.cc 2023-02-25 15:23:43.264080000 +0700
+@@ -113,7 +113,7 @@ TEST_F(RDTimeStampCounter, TestCycle) {
+ ulonglong t1 = my_timer_cycles();
+ ulonglong t2;
+ int i;
+- int backward = 0;
++ int backward [[maybe_unused]] = 0;
+ int nonzero = 0;
+
+ for (i = 0; i < LOOP_COUNT; i++) {
diff --git a/databases/xtrabackup8/files/patch-procps b/databases/xtrabackup8/files/patch-procps
new file mode 100644
index 000000000000..3331e9140f8a
--- /dev/null
+++ b/databases/xtrabackup8/files/patch-procps
@@ -0,0 +1,15 @@
+--- storage/innobase/xtrabackup/src/CMakeLists.txt.orig 2023-01-30 20:34:34.000000000 +0700
++++ storage/innobase/xtrabackup/src/CMakeLists.txt 2023-02-25 17:34:58.412247000 +0700
+@@ -132,12 +132,6 @@ TARGET_LINK_LIBRARIES(xtrabackup
+ crc
+ )
+
+-IF(NOT APPLE)
+- TARGET_LINK_LIBRARIES(xtrabackup
+- procps
+- )
+-ENDIF()
+-
+ # We depend on protobuf because of the mysqlx plugin and replication.
+ IF(UNIX_INSTALL_RPATH_ORIGIN_PRIV_LIBDIR)
+ ADD_INSTALL_RPATH_FOR_PROTOBUF(xtrabackup)
diff --git a/databases/xtrabackup8/files/patch-sql_binlog.cc b/databases/xtrabackup8/files/patch-sql_binlog.cc
deleted file mode 100644
index 2bae3d050d5a..000000000000
--- a/databases/xtrabackup8/files/patch-sql_binlog.cc
+++ /dev/null
@@ -1,24 +0,0 @@
---- sql/binlog.cc.orig 2020-08-28 21:02:32 UTC
-+++ sql/binlog.cc
-@@ -9163,8 +9163,8 @@ void MYSQL_BIN_LOG::report_missing_purged_gtids(
-
- char *missing_gtids = NULL;
- char *slave_executed_gtids = NULL;
-- gtid_missing.to_string(&missing_gtids, NULL);
-- slave_executed_gtid_set->to_string(&slave_executed_gtids, NULL);
-+ gtid_missing.to_string(&missing_gtids, false);
-+ slave_executed_gtid_set->to_string(&slave_executed_gtids, false);
-
- /*
- Log the information about the missing purged GTIDs to the error log.
-@@ -9217,8 +9217,8 @@ void MYSQL_BIN_LOG::report_missing_gtids(
- Gtid_set gtid_missing(slave_executed_gtid_set->get_sid_map());
- gtid_missing.add_gtid_set(slave_executed_gtid_set);
- gtid_missing.remove_gtid_set(previous_gtid_set);
-- gtid_missing.to_string(&missing_gtids, NULL);
-- slave_executed_gtid_set->to_string(&slave_executed_gtids, NULL);
-+ gtid_missing.to_string(&missing_gtids, false);
-+ slave_executed_gtid_set->to_string(&slave_executed_gtids, false);
-
- String tmp_uuid;
-
diff --git a/databases/xtrabackup8/files/patch-storage_innobase_xtrabackup_src_utils.cc b/databases/xtrabackup8/files/patch-storage_innobase_xtrabackup_src_utils.cc
new file mode 100644
index 000000000000..34feee9867f6
--- /dev/null
+++ b/databases/xtrabackup8/files/patch-storage_innobase_xtrabackup_src_utils.cc
@@ -0,0 +1,59 @@
+--- storage/innobase/xtrabackup/src/utils.cc.orig 2023-01-30 20:34:34.000000000 +0700
++++ storage/innobase/xtrabackup/src/utils.cc 2023-02-25 02:50:31.899561000 +0700
+@@ -21,6 +21,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Bos
+
+ #ifdef __APPLE__
+ #include <mach/mach_host.h>
++#endif
++#if defined(__APPLE__) || defined(__FreeBSD__)
+ #include <sys/sysctl.h>
+ #else
+ #include <proc/sysinfo.h>
+@@ -112,12 +114,14 @@ unsigned long get_version_number(std::string version_s
+ return major * 10000 + minor * 100 + version;
+ }
+
+-#ifdef __APPLE__
++#if defined(__APPLE__) || defined(__FreeBSD__)
+ unsigned long host_total_memory() {
+ unsigned long total_mem = sysconf(_SC_PHYS_PAGES) * sysconf(_SC_PAGESIZE);
+ return total_mem;
+ }
++#endif
+
++#ifdef __APPLE__
+ unsigned long host_free_memory() {
+ unsigned long total_mem = host_total_memory();
+ int64_t used_mem;
+@@ -138,6 +142,31 @@ unsigned long host_free_memory() {
+ return total_mem - (unsigned long)used_mem;
+ }
+ return 0;
++}
++#elif defined(__FreeBSD__)
++unsigned long host_free_memory() {
++ static int mib_free[2] = { -1, 0 };
++ static int mib_inactive[2] = { -1, 0 };
++ size_t miblen = sizeof(mib_free) / sizeof(mib_free[0]);
++ uint32_t free_pages, inactive_pages;
++ size_t sz = sizeof(free_pages);
++
++ free_pages = inactive_pages = 0;
++
++ if (mib_free[0] < 0 &&
++ sysctlnametomib("vm.stats.vm.v_free_count", mib_free, &miblen) < 0)
++ mib_free[0] = 0;
++ if (mib_inactive[0] < 0 &&
++ sysctlnametomib("vm.stats.vm.v_inactive_count", mib_inactive, &miblen) < 0)
++ mib_inactive[0] = 0;
++
++ if (mib_free[0] &&
++ sysctl(mib_free, 2, &free_pages, &sz, NULL, 0) < 0)
++ free_pages = 0; /* should not happen */
++ if (mib_inactive[0] && sysctl(mib_inactive, 2, &inactive_pages, &sz, NULL, 0) < 0)
++ inactive_pages = 0; /* should not happen, too */
++
++ return (free_pages + inactive_pages) * sysconf(_SC_PAGESIZE);
+ }
+ #else
+ unsigned long host_total_memory() {