forked from openembedded/meta-openembedded
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
mariadb: Fix build with libfmt 10.1+
Signed-off-by: Khem Raj <[email protected]> Cc: Markus Volk <[email protected]> Cc: Wang Mingyu <[email protected]>
- Loading branch information
Showing
2 changed files
with
69 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
Make make_arg work with libfmt 10.1+ | ||
|
||
This ensures that compiler can find the correct template to use | ||
Fixes | ||
|
||
mariadb-10.11.5/sql/item_strfunc.cc:1429:22: error: no matching functi | ||
on for call to 'make_arg' | ||
| 1429 | vargs[carg-1]= fmt::detail::make_arg<ctx>(args[carg]->val_int()); | ||
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| /mnt/b/yoe/master/build/tmp/work/cortexa72-cortexa53-crypto-yoe-linux/mariadb/10.11.5/recipe-sysroot/usr/include/fmt/core.h:1588:20: note: candidate functio | ||
n [with Context = fmt::basic_format_context<fmt::appender, char>, T = long long] not viable: expects an lvalue for 1st argument | ||
| 1588 | FMT_CONSTEXPR auto make_arg(T& val) -> basic_format_arg<Context> { | ||
| | ^ ~~~~~~ | ||
| /mnt/b/yoe/master/build/tmp/work/cortexa72-cortexa53-crypto-yoe-linux/mariadb/10.11.5/recipe-sysroot/usr/include/fmt/core.h:1559:31: note: candidate templat | ||
e ignored: invalid explicitly-specified argument for template parameter 'PACKED' | ||
| 1559 | FMT_CONSTEXPR FMT_INLINE auto make_arg(T& [ 46%] Building C object mysys/CMakeFiles/mysys.dir/my_likely.c.o | ||
| val) -> value<Context> { | ||
| | ^ | ||
| /mnt/b/yoe/master/build/tmp/work/cortexa72-cortexa53-crypto-yoe-linux/mariadb/10.11.5/recipe-sysroot/usr/include/fmt/core.h:1596:27: note: candidate templat | ||
e ignored: invalid explicitly-specified argument for template parameter 'PACKED' | ||
| 1596 | FMT_CONSTEXPR inline auto make_arg(T& val) -> basic_format_arg<Context> { | ||
| | ^ | ||
|
||
Upstream-Status: Pending | ||
Signed-off-by: Khem Raj <[email protected]> | ||
|
||
--- a/cmake/libfmt.cmake | ||
+++ b/cmake/libfmt.cmake | ||
@@ -33,8 +33,9 @@ MACRO (CHECK_LIBFMT) | ||
#include <fmt/format-inl.h> | ||
#include <iostream> | ||
int main() { | ||
+ int val = 42; | ||
fmt::format_args::format_arg arg= | ||
- fmt::detail::make_arg<fmt::format_context>(42); | ||
+ fmt::detail::make_arg<fmt::format_context>(val); | ||
std::cout << fmt::vformat(\"The answer is {}.\", | ||
fmt::format_args(&arg, 1)); | ||
}" HAVE_SYSTEM_LIBFMT) | ||
--- a/sql/item_strfunc.cc | ||
+++ b/sql/item_strfunc.cc | ||
@@ -1426,14 +1426,22 @@ String *Item_func_sformat::val_str(Strin | ||
switch (args[carg]->result_type()) | ||
{ | ||
case INT_RESULT: | ||
- vargs[carg-1]= fmt::detail::make_arg<ctx>(args[carg]->val_int()); | ||
+ int intval; | ||
+ intval = args[carg]->val_int(); | ||
+ vargs[carg-1]= fmt::detail::make_arg<ctx>(intval); | ||
break; | ||
case DECIMAL_RESULT: // TODO | ||
case REAL_RESULT: | ||
+ float fval; | ||
+ int val; | ||
if (args[carg]->field_type() == MYSQL_TYPE_FLOAT) | ||
- vargs[carg-1]= fmt::detail::make_arg<ctx>((float)args[carg]->val_real()); | ||
- else | ||
- vargs[carg-1]= fmt::detail::make_arg<ctx>(args[carg]->val_real()); | ||
+ { | ||
+ fval = (float)args[carg]->val_real(); | ||
+ vargs[carg-1]= fmt::detail::make_arg<ctx>(fval); | ||
+ } else { | ||
+ val = args[carg]->val_real(); | ||
+ vargs[carg-1]= fmt::detail::make_arg<ctx>(val); | ||
+ } | ||
break; | ||
case STRING_RESULT: | ||
if (!(parg= args[carg]->val_str(&val_arg[carg-1]))) |