diff options
author | Eugene Grosbein <eugen@FreeBSD.org> | 2024-02-22 08:52:06 +0000 |
---|---|---|
committer | Eugene Grosbein <eugen@FreeBSD.org> | 2024-02-22 09:35:51 +0000 |
commit | 147efd9835e16cae10637c56e34325d1b4c573c2 (patch) | |
tree | ae93b3e8a802fedde3a2ba8f9d174965980a70ff /databases/xtrabackup80 | |
parent | cc466608a4a986db9f2da72fa0bb1dd71ad6bcf8 (diff) | |
download | ports-147efd9835e16cae10637c56e34325d1b4c573c2.tar.gz ports-147efd9835e16cae10637c56e34325d1b4c573c2.zip |
databases/xtrabackup80: renamed from databases/xtrabackup8 and updated
The port databases/xtrabackup8 upgraded to version 8.0.35-30
and renamed to databases/xtrabackup80 in preparation for upcoming
incompatible branch databases/xtrabackup81, to avoid confusion.
Drop unused dependency on libncurses.
The update based on maintainer's submittion.
PR: 277088
Tested by: Eugene M. Zheganin (maintainer)
Approved by: Eugene M. Zheganin (maintainer)
Diffstat (limited to 'databases/xtrabackup80')
15 files changed, 370 insertions, 0 deletions
diff --git a/databases/xtrabackup80/Makefile b/databases/xtrabackup80/Makefile new file mode 100644 index 000000000000..65315e7d2baf --- /dev/null +++ b/databases/xtrabackup80/Makefile @@ -0,0 +1,89 @@ +PORTNAME= xtrabackup80 +PORTVERSION= 8.0.35 +DISTVERSIONSUFFIX= -30 +CATEGORIES= databases +MASTER_SITES= https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.35-30/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> diff --git a/databases/xtrabackup80/distinfo b/databases/xtrabackup80/distinfo new file mode 100644 index 000000000000..53dc0ae04280 --- /dev/null +++ b/databases/xtrabackup80/distinfo @@ -0,0 +1,5 @@ +TIMESTAMP = 1677255149 +SHA256 (percona-xtrabackup-8.0.35-30.tar.gz) = 8a3632a5a7a91834800f4f83902468bccff1d979e82347c0372b39a97b0c85f0 +SIZE (percona-xtrabackup-8.0.35-30.tar.gz) = 447842768 +SHA256 (boost_1_77_0.tar.gz) = 5347464af5b14ac54bb945dc68f1dd7c56f0dad7262816b956138fc53bcc0131 +SIZE (boost_1_77_0.tar.gz) = 130620992 diff --git a/databases/xtrabackup80/files/patch-CMakeLists.txt b/databases/xtrabackup80/files/patch-CMakeLists.txt new file mode 100644 index 000000000000..750740325604 --- /dev/null +++ b/databases/xtrabackup80/files/patch-CMakeLists.txt @@ -0,0 +1,22 @@ +--- CMakeLists.txt.orig 2023-11-24 17:33:10.000000000 +0700 ++++ CMakeLists.txt 2024-02-17 02:31:46.069754000 +0700 +@@ -2078,8 +2078,6 @@ + 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 +@@ -2322,10 +2320,6 @@ + + IF(ENABLE_GCOV) + INCLUDE(fastcov) +-ENDIF() +- +-IF(UNIX) +- ADD_SUBDIRECTORY(man) + ENDIF() + + IF(LINUX AND NOT WITHOUT_SERVER) diff --git a/databases/xtrabackup80/files/patch-cmake-install_layout.cmake b/databases/xtrabackup80/files/patch-cmake-install_layout.cmake new file mode 100644 index 000000000000..e823abeffe31 --- /dev/null +++ b/databases/xtrabackup80/files/patch-cmake-install_layout.cmake @@ -0,0 +1,11 @@ +--- cmake/install_layout.cmake.orig 2020-04-10 19:45:19 UTC ++++ cmake/install_layout.cmake +@@ -160,7 +160,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") diff --git a/databases/xtrabackup80/files/patch-cmake_os_FreeBSD.cmake b/databases/xtrabackup80/files/patch-cmake_os_FreeBSD.cmake new file mode 100644 index 000000000000..624f462e7542 --- /dev/null +++ b/databases/xtrabackup80/files/patch-cmake_os_FreeBSD.cmake @@ -0,0 +1,23 @@ +--- cmake/os/FreeBSD.cmake.orig 2020-05-26 05:35:19 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!") + 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() diff --git a/databases/xtrabackup80/files/patch-file_utils b/databases/xtrabackup80/files/patch-file_utils new file mode 100644 index 000000000000..a23aa72136d4 --- /dev/null +++ b/databases/xtrabackup80/files/patch-file_utils @@ -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) { diff --git a/databases/xtrabackup80/files/patch-llvm-15 b/databases/xtrabackup80/files/patch-llvm-15 new file mode 100644 index 000000000000..094f83fbb98b --- /dev/null +++ b/databases/xtrabackup80/files/patch-llvm-15 @@ -0,0 +1,28 @@ +--- storage/innobase/include/ddl0impl.h.orig 2023-11-24 13:33:10.000000000 +0300 ++++ storage/innobase/include/ddl0impl.h 2024-02-16 15:06:59.137578000 +0300 +@@ -118,14 +118,6 @@ + + /** 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 2024-02-16 15:08:36.323297000 +0300 ++++ unittest/gunit/mysys_my_rdtsc-t.cc 2024-02-16 15:08:40.000582000 +0300 +@@ -145,7 +145,7 @@ + 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++) { diff --git a/databases/xtrabackup80/files/patch-procps b/databases/xtrabackup80/files/patch-procps new file mode 100644 index 000000000000..733821dd7c65 --- /dev/null +++ b/databases/xtrabackup80/files/patch-procps @@ -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) diff --git a/databases/xtrabackup80/files/patch-protobuf b/databases/xtrabackup80/files/patch-protobuf new file mode 100644 index 000000000000..f1bd482d944a --- /dev/null +++ b/databases/xtrabackup80/files/patch-protobuf @@ -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) + diff --git a/databases/xtrabackup80/files/patch-storage_innobase_log__log0recv.cc b/databases/xtrabackup80/files/patch-storage_innobase_log__log0recv.cc new file mode 100644 index 000000000000..4f6c96125878 --- /dev/null +++ b/databases/xtrabackup80/files/patch-storage_innobase_log__log0recv.cc @@ -0,0 +1,29 @@ +--- storage/innobase/log/log0recv.cc.orig 2023-11-24 13:33:10.000000000 +0300 ++++ storage/innobase/log/log0recv.cc 2024-02-16 15:16:49.528584000 +0300 +@@ -3702,7 +3702,7 @@ + #else /* !UNIV_HOTBACKUP */ + bool meb_scan_log_recs( + #endif /* !UNIV_HOTBACKUP */ +- size_t *max_memory, const byte *buf, size_t len, ++ size_t max_memory, const byte *buf, size_t len, + lsn_t start_lsn, lsn_t *read_upto_lsn, + lsn_t to_lsn) { + const byte *log_block = buf; +@@ -3975,7 +3975,7 @@ + recv_parse_log_recs(); + + #ifndef UNIV_HOTBACKUP +- if (recv_heap_used() > *max_memory) { ++ if (recv_heap_used() > max_memory) { + recv_apply_hashed_log_recs(log, false); + } + #endif /* !UNIV_HOTBACKUP */ +@@ -4161,7 +4161,7 @@ + break; + } + +- finished = recv_scan_log_recs(log, &max_mem, log.buf, end_lsn - start_lsn, ++ finished = recv_scan_log_recs(log, max_mem, log.buf, end_lsn - start_lsn, + start_lsn, &log.m_scanned_lsn, to_lsn); + + start_lsn = end_lsn; diff --git a/databases/xtrabackup80/files/patch-storage_innobase_xtrabackup_src_utils.cc b/databases/xtrabackup80/files/patch-storage_innobase_xtrabackup_src_utils.cc new file mode 100644 index 000000000000..34feee9867f6 --- /dev/null +++ b/databases/xtrabackup80/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() { diff --git a/databases/xtrabackup80/files/patch-storage_innobase_xtrabackup_xbcloud__osenv.sh b/databases/xtrabackup80/files/patch-storage_innobase_xtrabackup_xbcloud__osenv.sh new file mode 100644 index 000000000000..37b1e45afc66 --- /dev/null +++ b/databases/xtrabackup80/files/patch-storage_innobase_xtrabackup_xbcloud__osenv.sh @@ -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} + diff --git a/databases/xtrabackup80/files/patch-storage_temptable_include_temptable_lock_free_type.h b/databases/xtrabackup80/files/patch-storage_temptable_include_temptable_lock_free_type.h new file mode 100644 index 000000000000..a229da5b0adc --- /dev/null +++ b/databases/xtrabackup80/files/patch-storage_temptable_include_temptable_lock_free_type.h @@ -0,0 +1,17 @@ +--- storage/temptable/include/temptable/lock_free_type.h.orig 2020-06-16 16:31:03 UTC ++++ storage/temptable/include/temptable/lock_free_type.h +@@ -31,6 +31,14 @@ Lock-free type (selection) implementation. */ + + #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 { + + /** Enum class describing alignment-requirements. */ diff --git a/databases/xtrabackup80/pkg-descr b/databases/xtrabackup80/pkg-descr new file mode 100644 index 000000000000..da1655f57769 --- /dev/null +++ b/databases/xtrabackup80/pkg-descr @@ -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. diff --git a/databases/xtrabackup80/pkg-plist b/databases/xtrabackup80/pkg-plist new file mode 100644 index 000000000000..7d1e3c5b80e7 --- /dev/null +++ b/databases/xtrabackup80/pkg-plist @@ -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/keyring_vault.so |