mirror of https://git.freebsd.org/ports.git
databases/xtrabackup81: New port: xtrabackup 8.1
setting maintainer email to Eugene as aligned in the email conversation.2024Q2
parent
0a8cc8a2ea
commit
e8017b636f
|
@ -1073,6 +1073,7 @@
|
|||
SUBDIR += xrootd
|
||||
SUBDIR += xtrabackup
|
||||
SUBDIR += xtrabackup80
|
||||
SUBDIR += xtrabackup81
|
||||
SUBDIR += zodb
|
||||
|
||||
.include <bsd.port.subdir.mk>
|
||||
|
|
|
@ -0,0 +1,89 @@
|
|||
PORTNAME= xtrabackup81
|
||||
PORTVERSION= 8.1.0
|
||||
DISTVERSIONSUFFIX= -1
|
||||
CATEGORIES= databases
|
||||
MASTER_SITES= https://downloads.percona.com/downloads/Percona-XtraBackup-innovative-release/Percona-XtraBackup-8.1.0-1/source/tarball/:percona \
|
||||
SF/boost/boost/${BOOST_VERSION}:boost
|
||||
DISTFILES= ${PPORTNAME}-${DVERSION}${EXTRACT_SUFX}:percona \
|
||||
boost_${BOOST_VERSION_UNDER}${EXTRACT_SUFX}:boost
|
||||
|
||||
MAINTAINER= eugene@zhegan.in
|
||||
COMMENT= Open-source backup tool for InnoDB and XtraDB
|
||||
WWW= https://www.percona.com/doc/percona-xtrabackup/
|
||||
|
||||
LICENSE= GPLv2
|
||||
LICENSE_FILE= ${WRKSRC}/LICENSE
|
||||
|
||||
BUILD_DEPENDS= protobuf>=3.0:devel/protobuf \
|
||||
rapidjson>=1.1.0:devel/rapidjson \
|
||||
libevent>=2.1:devel/libevent
|
||||
LIB_DEPENDS= libcurl.so:ftp/curl \
|
||||
libev.so:devel/libev \
|
||||
libgcrypt.so:security/libgcrypt \
|
||||
libgpg-error.so:security/libgpg-error \
|
||||
libicudata.so:devel/icu \
|
||||
libprotobuf-lite.so:devel/protobuf \
|
||||
libunwind.so:devel/libunwind \
|
||||
libzstd.so:archivers/zstd
|
||||
RUN_DEPENDS= qpress:archivers/qpress
|
||||
|
||||
USES= bison cmake compiler:c++14-lang cpe pkgconfig ssl
|
||||
CPE_VENDOR= percona
|
||||
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:C/.$//}*
|
||||
|
||||
# Bundle last supported Boost release
|
||||
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-xtrabackup
|
||||
WRKSRC= ${WRKDIR}/${PPORTNAME}-${DVERSION}
|
||||
|
||||
.include <bsd.port.pre.mk>
|
||||
|
||||
# Since MySQL 8.0.20 InnoDB engine uses new memory alligned allocator
|
||||
# which is broken on i386 due to different size of types and causes a
|
||||
# 'static_assert(alignof(T) <= alignof(std::max_align_t))' error
|
||||
.if ${ARCH} == i386
|
||||
CXXFLAGS+= -malign-double
|
||||
.endif
|
||||
|
||||
KEEP_EXTRA= lz4 robin-hood-hashing zlib
|
||||
|
||||
post-patch:
|
||||
.for d in storage/innobase/xtrabackup/src sql/protobuf
|
||||
${REINPLACE_CMD} 's,%%PREFIX%%,${PREFIX},' ${WRKSRC}/${d}/CMakeLists.txt
|
||||
.endfor
|
||||
.if ${COMPILER_TYPE} == clang && ${COMPILER_VERSION} >= 160
|
||||
@${REINPLACE_CMD} -e 's|std::unary_function|std::__unary_function|' \
|
||||
${WRKSRC}/../boost_${BOOST_VERSION_UNDER}/boost/container_hash/hash.hpp
|
||||
.endif
|
||||
|
||||
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 ${STAGEDIR}${PREFIX}/man
|
||||
@${RMDIR} ${STAGEDIR}${PREFIX}/lib/plugin/debug
|
||||
|
||||
.include <bsd.port.post.mk>
|
|
@ -0,0 +1,5 @@
|
|||
TIMESTAMP = 1711999595
|
||||
SHA256 (percona-xtrabackup-8.1.0-1.tar.gz) = e058d18e2a80838940aa8f80a095413d994f5a4e8ff5c16228fd9382bb826fe6
|
||||
SIZE (percona-xtrabackup-8.1.0-1.tar.gz) = 446978094
|
||||
SHA256 (boost_1_77_0.tar.gz) = 5347464af5b14ac54bb945dc68f1dd7c56f0dad7262816b956138fc53bcc0131
|
||||
SIZE (boost_1_77_0.tar.gz) = 130620992
|
|
@ -0,0 +1,22 @@
|
|||
--- CMakeLists.txt.orig 2023-10-19 12:05:28 UTC
|
||||
+++ CMakeLists.txt
|
||||
@@ -2094,8 +2094,6 @@ IF(WITH_PROTOBUF STREQUAL "bundled" OR WITH_FIDO STREQ
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
-ADD_SUBDIRECTORY(extra/libkmip)
|
||||
-
|
||||
#
|
||||
# Setup maintainer mode options by the end. Platform checks are
|
||||
# not run with the warning options as to not perturb fragile checks
|
||||
@@ -2345,10 +2343,6 @@ ENDIF()
|
||||
|
||||
IF(ENABLE_GCOV)
|
||||
INCLUDE(fastcov)
|
||||
-ENDIF()
|
||||
-
|
||||
-IF(UNIX)
|
||||
- ADD_SUBDIRECTORY(man)
|
||||
ENDIF()
|
||||
|
||||
IF(LINUX AND NOT WITHOUT_SERVER)
|
|
@ -0,0 +1,11 @@
|
|||
--- cmake/install_layout.cmake.orig 2023-10-19 12:05:28 UTC
|
||||
+++ cmake/install_layout.cmake
|
||||
@@ -159,7 +159,7 @@ SET(INSTALL_INFODIR_STANDALONE "docs")
|
||||
#
|
||||
SET(INSTALL_SHAREDIR_STANDALONE "share")
|
||||
SET(INSTALL_MYSQLSHAREDIR_STANDALONE "share")
|
||||
-SET(INSTALL_MYSQLTESTDIR_STANDALONE "xtrabackup-test")
|
||||
+# SET(INSTALL_MYSQLTESTDIR_STANDALONE "xtrabackup-test")
|
||||
SET(INSTALL_SUPPORTFILESDIR_STANDALONE "support-files")
|
||||
#
|
||||
SET(INSTALL_MYSQLDATADIR_STANDALONE "data")
|
|
@ -0,0 +1,23 @@
|
|||
--- cmake/os/FreeBSD.cmake.orig 2023-10-19 12:05:28 UTC
|
||||
+++ cmake/os/FreeBSD.cmake
|
||||
@@ -48,6 +48,20 @@ IF(NOT FORCE_UNSUPPORTED_COMPILER)
|
||||
IF(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.1)
|
||||
MESSAGE(FATAL_ERROR "GCC 7.1 or newer is required")
|
||||
ENDIF()
|
||||
+ CHECK_C_SOURCE_RUNS("
|
||||
+ int main()
|
||||
+ {
|
||||
+ return (__clang_major__ >= 4);
|
||||
+ }" I386_ATOMIC_BUILTINS)
|
||||
+ IF((CMAKE_SYSTEM_PROCESSOR MATCHES "i386") AND (NOT I386_ATOMIC_BUILTINS))
|
||||
+ SET(HAVE_GCC_ATOMIC_BUILTINS CACHE INTERNAL "")
|
||||
+ ENDIF()
|
||||
+ ELSEIF(CMAKE_COMPILER_IS_GNUCC)
|
||||
+ EXECUTE_PROCESS(COMMAND ${CMAKE_C_COMPILER} -dumpversion
|
||||
+ OUTPUT_VARIABLE GCC_VERSION)
|
||||
+ IF(GCC_VERSION VERSION_LESS 4.4)
|
||||
+ MESSAGE(FATAL_ERROR "GCC 4.4 or newer is required!")
|
||||
+ ENDIF()
|
||||
ELSE()
|
||||
MESSAGE(FATAL_ERROR "Unsupported compiler!")
|
||||
ENDIF()
|
|
@ -0,0 +1,20 @@
|
|||
--- storage/innobase/xtrabackup/src/file_utils.cc.orig 2023-11-24 17:33:10.000000000 +0700
|
||||
+++ storage/innobase/xtrabackup/src/file_utils.cc 2024-02-17 00:40:45.193255000 +0700
|
||||
@@ -20,7 +20,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Bos
|
||||
|
||||
#include "file_utils.h"
|
||||
#include <mysql/service_mysql_alloc.h>
|
||||
-#ifdef __APPLE__
|
||||
+#if defined(__APPLE__) || defined (__FreeBSD__)
|
||||
#include <sys/event.h>
|
||||
#else
|
||||
#include <sys/epoll.h>
|
||||
@@ -391,7 +391,7 @@ File open_fifo_for_read_with_timeout(const char *path,
|
||||
}
|
||||
|
||||
/* File was open, lets check its open on the other side */
|
||||
-#ifdef __APPLE__
|
||||
+#if defined(__APPLE__) || defined(__FreeBSD__)
|
||||
struct timespec tm = {timeout, 0};
|
||||
int kqueue_fd = kqueue();
|
||||
if (kqueue_fd < 0) {
|
|
@ -0,0 +1,28 @@
|
|||
--- storage/innobase/include/ddl0impl.h.orig 2023-10-19 12:05:28 UTC
|
||||
+++ storage/innobase/include/ddl0impl.h
|
||||
@@ -118,14 +118,6 @@ struct Fetch_sequence : public Context::FTS::Sequence
|
||||
|
||||
/** Physical row context. */
|
||||
struct Row {
|
||||
- /** Constructor. */
|
||||
- Row() = default;
|
||||
-
|
||||
- Row(const Row &) = default;
|
||||
-
|
||||
- /** Destructor. */
|
||||
- ~Row() = default;
|
||||
-
|
||||
Row &operator=(const Row &) = default;
|
||||
|
||||
/** Build a row from a raw record.
|
||||
--- unittest/gunit/mysys_my_rdtsc-t.cc.orig 2023-10-19 12:05:28 UTC
|
||||
+++ unittest/gunit/mysys_my_rdtsc-t.cc
|
||||
@@ -145,7 +145,7 @@ TEST_F(RDTimeStampCounter, TestNanosecond) {
|
||||
ulonglong t1 = my_timer_nanoseconds();
|
||||
ulonglong t2;
|
||||
int i;
|
||||
- int backward = 0;
|
||||
+ int backward [[maybe_unused]] = 0;
|
||||
int nonzero = 0;
|
||||
|
||||
for (i = 0; i < LOOP_COUNT; i++) {
|
|
@ -0,0 +1,28 @@
|
|||
--- storage/innobase/xtrabackup/src/CMakeLists.txt.orig 2023-11-24 13:33:10.000000000 +0300
|
||||
+++ storage/innobase/xtrabackup/src/CMakeLists.txt 2024-02-16 15:38:03.294091000 +0300
|
||||
@@ -20,8 +20,9 @@
|
||||
|
||||
INCLUDE(${MYSQL_CMAKE_SCRIPT_DIR}/compile_flags.cmake)
|
||||
|
||||
+INCLUDE_DIRECTORIES(%%PREFIX%%/include)
|
||||
+
|
||||
FIND_GCRYPT()
|
||||
-FIND_PROCPS()
|
||||
|
||||
CHECK_TYPE_SIZE("unsigned long" SIZEOF_UNSIGNED_LONG)
|
||||
|
||||
@@ -134,14 +135,6 @@
|
||||
ext::icu
|
||||
crc
|
||||
)
|
||||
-
|
||||
-IF(NOT APPLE)
|
||||
- IF(PROCPS_VERSION EQUAL 4)
|
||||
- TARGET_LINK_LIBRARIES(xtrabackup proc2)
|
||||
- ELSE()
|
||||
- TARGET_LINK_LIBRARIES(xtrabackup procps)
|
||||
- ENDIF()
|
||||
-ENDIF()
|
||||
|
||||
# We depend on protobuf because of the mysqlx plugin and replication.
|
||||
IF(UNIX_INSTALL_RPATH_ORIGIN_PRIV_LIBDIR)
|
|
@ -0,0 +1,10 @@
|
|||
--- sql/protobuf/CMakeLists.txt.orig 2023-11-24 17:33:10.000000000 +0700
|
||||
+++ sql/protobuf/CMakeLists.txt 2024-02-17 02:13:42.264307000 +0700
|
||||
@@ -21,6 +21,7 @@
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
INCLUDE(${CMAKE_SOURCE_DIR}/cmake/protobuf.cmake)
|
||||
+INCLUDE_DIRECTORIES(%%PREFIX%%/include)
|
||||
|
||||
SET(PROTOBUF_LITE_LIB_NAME rpl_protobuf_lite)
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
--- storage/innobase/xtrabackup/src/utils.cc.orig 2023-10-19 12:05:28 UTC
|
||||
+++ storage/innobase/xtrabackup/src/utils.cc
|
||||
@@ -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
|
||||
#ifdef HAVE_PROCPS_V3
|
||||
@@ -113,12 +115,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;
|
||||
@@ -139,6 +143,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() {
|
|
@ -0,0 +1,15 @@
|
|||
--- storage/innobase/xtrabackup/xbcloud_osenv.sh.orig 2020-08-28 21:02:32 UTC
|
||||
+++ storage/innobase/xtrabackup/xbcloud_osenv.sh
|
||||
@@ -1,4 +1,4 @@
|
||||
-#!/bin/bash
|
||||
+#!/bin/sh
|
||||
|
||||
# Copyright (C) 2015 Percona LLC and/or its affiliates.
|
||||
# This software comes with ABSOLUTELY NO WARRANTY. This is free software,
|
||||
@@ -105,5 +105,5 @@ fi
|
||||
|
||||
# do it
|
||||
# shellcheck disable=SC2086,SC2048
|
||||
-${XBCLOUD_BIN} $* ${XBCLOUD_OS_ENV}
|
||||
+${XBCLOUD_BIN} "$@" ${XBCLOUD_OS_ENV}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
--- storage/temptable/include/temptable/lock_free_type.h.orig 2023-10-19 12:05:28 UTC
|
||||
+++ storage/temptable/include/temptable/lock_free_type.h
|
||||
@@ -32,6 +32,14 @@ Lock-free type (selection) implementation. */
|
||||
#include "my_config.h"
|
||||
#include "storage/temptable/include/temptable/constants.h"
|
||||
|
||||
+#if defined(__i386__) //&& defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8)
|
||||
+/* Fix for clang setting __GCC_ATOMIC_LLONG_LOCK_FREE incorrectly for x86
|
||||
+ * https://llvm.org/bugs/show_bug.cgi?id=19355
|
||||
+ */
|
||||
+#undef ATOMIC_LLONG_LOCK_FREE
|
||||
+#define ATOMIC_LLONG_LOCK_FREE 2
|
||||
+#endif
|
||||
+
|
||||
namespace temptable {
|
||||
|
||||
/** Clang has a bug which causes ATOMIC_LLONG_LOCK_FREE to be defined as 1
|
|
@ -0,0 +1,4 @@
|
|||
Percona XtraBackup is an open-source hot backup utility for MySQL that
|
||||
doesn't lock your database during the backup. It can back up data from
|
||||
InnoDB, XtraDB and MyISAM tables on MySQL/Percona Server/MariaDB
|
||||
servers, and has many advanced features.
|
|
@ -0,0 +1,10 @@
|
|||
bin/xbcloud
|
||||
bin/xbcloud_osenv
|
||||
bin/xbcrypt
|
||||
bin/xbstream
|
||||
bin/xtrabackup
|
||||
lib/libmysqlservices.a
|
||||
lib/plugin/component_keyring_file.so
|
||||
lib/plugin/component_keyring_kms.so
|
||||
lib/plugin/keyring_file.so
|
||||
lib/plugin/component_keyring_vault.so
|
Loading…
Reference in New Issue