git: 9f33a321916b - main - databases/mysql80-server: Fix build with LLVM15
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 12 Feb 2023 01:25:26 UTC
The branch main has been updated by joneum: URL: https://cgit.FreeBSD.org/ports/commit/?id=9f33a321916b70feece270f78b03eb081a7cefbf commit 9f33a321916b70feece270f78b03eb081a7cefbf Author: Guido Falsi <madpilot@FreeBSD.org> AuthorDate: 2023-02-12 01:22:17 +0000 Commit: Jochen Neumeister <joneum@FreeBSD.org> CommitDate: 2023-02-12 01:24:41 +0000 databases/mysql80-server: Fix build with LLVM15 This Patch fix an LLVM15 Problem on CURRENT PR: 269442 Reported by: madpilot Sponsored by: Netzkommune GmbH --- databases/mysql80-server/files/patch-llvm15-fix | 103 ++++++++++++++++++++++++ 1 file changed, 103 insertions(+) diff --git a/databases/mysql80-server/files/patch-llvm15-fix b/databases/mysql80-server/files/patch-llvm15-fix new file mode 100644 index 000000000000..0d16a0d93f68 --- /dev/null +++ b/databases/mysql80-server/files/patch-llvm15-fix @@ -0,0 +1,103 @@ +From 69fb953b55474f32d0e1e35b043599c34e516349 Mon Sep 17 00:00:00 2001 +From: Gabor Buella <gabor.buella@oracle.com> +Date: Sat, 12 Nov 2022 01:05:54 +0100 +Subject: [PATCH] Bug #34638573 Compile MySQL with clang 15 + +Fixing two compile errors, that are triggered when using libcxx from LLVM15 + +https://reviews.llvm.org/D104002 + +std::unary_function is not available in libcxx under C++17, see: +https://en.cppreference.com/w/cpp/utility/functional/unary_function +Boost uses std::unary_function, but it has a workaround for using +Boost headers in C++17, triggered by the macro BOOST_NO_CXX98_FUNCTION_BASE + +See: +https://www.boost.org/doc/libs/master/libs/config/doc/html/boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_features_that_have_been_removed_from_the_standard_ + +https://reviews.llvm.org/D130538 + +A new assert in libcxx is triggered in include/varlen_sort.h + +std::iterator_traits<varlen_iterator>::reference should match the return type of varlen_iterator::operator*() + +include/c++/v1/__algorithm/iterator_operations.h:100:5: error: static assertion failed due to requirement 'is_same<varlen_element, varlen_element &>::value': It looks like your iterator's `iterator_traits<It>::reference` does not match the return type of dereferencing the iterator, i.e., calling `*it`. This is undefined behavior according to [input.iterators] and can lead to dangling reference issues at runtime, so we are flagging this. +static_assert(is_same<__deref_t<_Iter>, typename iterator_traits<__remove_cvref_t<_Iter> >::reference>::value, +^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Fix a few warnings: +Remove some explicitly defined "=defau.t" constructors, destructors. +warning: definition of implicit copy assignment operator for 'Row' is deprecated because it has a user-declared destructor [-Wdeprecated-copy-with-dtor] + +Mark a variable potentially unuses in tests (unuses when __aarch64__) + +Change-Id: Iad346bd0cdb1d25d958377b9c7a0dd5da7a45fad +--- + cmake/boost.cmake | 3 +++ + include/varlen_sort.h | 5 +++-- + storage/innobase/include/ddl0impl.h | 8 -------- + unittest/gunit/innodb/ut0new-t.cc | 2 -- + unittest/gunit/mysys_my_rdtsc-t.cc | 2 +- + 5 files changed, 7 insertions(+), 13 deletions(-) + +diff --git a/cmake/boost.cmake b/cmake/boost.cmake +index 64e5cd6a1950..e879484a9d9e 100644 +--- cmake/boost.cmake ++++ cmake/boost.cmake +@@ -330,6 +330,9 @@ ELSE() + ENDIF() + + IF(NOT WIN32) ++# Needed to use Boost header container_hash/hash.hpp in C++17 ++ ADD_DEFINITIONS(-DBOOST_NO_CXX98_FUNCTION_BASE) ++ + FILE(GLOB_RECURSE BOOST_PATCHES_LIST + RELATIVE ${BOOST_PATCHES_DIR} + ${BOOST_PATCHES_DIR}/*.hpp +diff --git a/include/varlen_sort.h b/include/varlen_sort.h +index 433ab7e493b0..380274e418cf 100644 +--- include/varlen_sort.h ++++ include/varlen_sort.h +@@ -184,8 +184,9 @@ namespace std { + + // 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 + + /* +diff --git a/storage/innobase/include/ddl0impl.h b/storage/innobase/include/ddl0impl.h +index 2276c8d2f40d..0e5d8e428997 100644 +--- storage/innobase/include/ddl0impl.h ++++ storage/innobase/include/ddl0impl.h +@@ -119,13 +119,5 @@ struct Fetch_sequence : public Context::FTS::Sequence { + /** 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. +diff --git a/unittest/gunit/mysys_my_rdtsc-t.cc b/unittest/gunit/mysys_my_rdtsc-t.cc +index 6bec618475fe..e8d2fe1662b6 100644 +--- unittest/gunit/mysys_my_rdtsc-t.cc ++++ unittest/gunit/mysys_my_rdtsc-t.cc +@@ -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++) {