forked from Lainports/freebsd-ports
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)
This commit is contained in:
parent
e5f16a9a54
commit
d06e12de9a
7 changed files with 168 additions and 57 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
41
databases/xtrabackup8/files/patch-llvm-15
Normal file
41
databases/xtrabackup8/files/patch-llvm-15
Normal file
|
|
@ -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++) {
|
||||
15
databases/xtrabackup8/files/patch-procps
Normal file
15
databases/xtrabackup8/files/patch-procps
Normal file
|
|
@ -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)
|
||||
|
|
@ -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;
|
||||
|
||||
|
|
@ -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() {
|
||||
Loading…
Add table
Reference in a new issue