Therion fails on Fedora 41
Hello everyone - I have upgraded one of my test machines to Fedora 41. Therion 6.2.0 now fails to run with a complaint that libfmt.so.10 cannot be found. Very true! The fmt package was upgraded to version 11 and the shared library is now libfmt.so.11. I downloaded the latest source code for version 6.2.1 and went to compile it. The compile fails, and I think it is related to fmt. The last few lines from the compile run are listed below. How can I get past this? Thanks! -- =============== Bill Gee [ 57%] Building CXX object CMakeFiles/therion-common.dir/therion.cxx.o In file included from /usr/include/fmt/format.h:41, from /usr/include/fmt/core.h:5, from /home/bgee/Installs/therion-6.2.1/thepsparse.cxx:42: /usr/include/fmt/base.h: In instantiation of ‘static void fmt::v11::detail::value<Context>::format_custom_arg(void*, typename Context::parse_context_type&, Context&) [with T = thdouble; Formatter = fmt::v11::formatter<thdouble>; Context = fmt::v11::context; typename Context::parse_context_type = fmt::v11::basic_format_parse_context<char>]’: /usr/include/fmt/base.h:1383:19: required from ‘fmt::v11::detail::value<Context>::value(T&) [with T = thdouble; Context = fmt::v11::context]’ 1383 | custom.format = format_custom_arg< | ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~ 1384 | value_type, typename Context::template formatter_type<value_type>>; | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/fmt/base.h:1647:41: required from ‘constexpr fmt::v11::detail::value<Context> fmt::v11::detail::make_arg(T&) [with bool PACKED = true; Context = fmt::v11::context; T = thdouble; typename std::enable_if<PACKED, int>::type <anonymous> = 0]’ 1647 | return {arg_mapper<Context>().map(val)}; | ^ /usr/include/fmt/base.h:2018:74: required from ‘constexpr fmt::v11::detail::format_arg_store<Context, NUM_ARGS, 0, DESC> fmt::v11::make_format_args(T& ...) [with Context = context; T = {thdouble}; long unsigned int NUM_ARGS = 1; long unsigned int NUM_NAMED_ARGS = 0; long long unsigned int DESC = 15; typename std::enable_if<(NUM_NAMED_ARGS == 0), int>::type <anonymous> = 0]’ 2018 | return {{detail::make_arg<NUM_ARGS <= detail::max_packed_args, Context>( | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 2019 | args)...}}; | ~~~~~ /usr/include/fmt/format.h:4365:44: required from ‘std::string fmt::v11::format(format_string<T ...>, T&& ...) [with T = {thdouble}; std::string = std::__cxx11::basic_string<char>; format_string<T ...> = basic_format_string<char, thdouble>]’ 4365 | return vformat(fmt, fmt::make_format_args(args...)); | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~ /home/bgee/Installs/therion-6.2.1/thepsparse.cxx:143:23: required from here 143 | s << fmt::format("{}", thdouble(this->a,prec_col)) << " g"; | ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/fmt/base.h:1402:29: error: passing ‘const fmt::v11::formatter<thdouble>’ as ‘this’ argument discards qualifiers [-fpermissive] 1402 | ctx.advance_to(cf.format(*static_cast<qualified_type*>(arg), ctx)); | ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /home/bgee/Installs/therion-6.2.1/thepsparse.cxx:50: /home/bgee/Installs/therion-6.2.1/thdouble.h:37:10: note: in call to ‘auto fmt::v11::formatter<thdouble>::format(const thdouble&, FormatContext&) [with FormatContext = fmt::v11::context]’ 37 | auto format(const thdouble& p, FormatContext& ctx) { | ^~~~~~ make[2]: *** [CMakeFiles/therion-common.dir/build.make:593: CMakeFiles/therion-common.dir/thepsparse.cxx.o] Error 1 make[2]: *** Waiting for unfinished jobs.... make[1]: *** [CMakeFiles/Makefile2:871: CMakeFiles/therion-common.dir/all] Error 2 make: *** [Makefile:146: all] Error 2
Hello, 1. If you upgrade your OS, you should use a clean build folder, because libraries which CMake previously found are no longer there, so it needs to look for them again. 2. I think this fmt compilation error was fixed in September (https://github.com/therion/therion/pull/586), but since then there was no release, in the meantime you can try to use branch master. Matěj so 9. 11. 2024 v 1:56 odesílatel Bill Gee <bgee@campercaver.net> napsal:
Hello everyone - I have upgraded one of my test machines to Fedora 41. Therion 6.2.0 now fails to run with a complaint that libfmt.so.10 cannot be found. Very true! The fmt package was upgraded to version 11 and the shared library is now libfmt.so.11.
I downloaded the latest source code for version 6.2.1 and went to compile it. The compile fails, and I think it is related to fmt. The last few lines from the compile run are listed below.
How can I get past this?
Thanks! -- =============== Bill Gee
[ 57%] Building CXX object CMakeFiles/therion-common.dir/therion.cxx.o In file included from /usr/include/fmt/format.h:41, from /usr/include/fmt/core.h:5, from /home/bgee/Installs/therion-6.2.1/thepsparse.cxx:42: /usr/include/fmt/base.h: In instantiation of ‘static void fmt::v11::detail::value<Context>::format_custom_arg(void*, typename Context::parse_context_type&, Context&) [with T = thdouble; Formatter = fmt::v11::formatter<thdouble>; Context = fmt::v11::context; typename Context::parse_context_type = fmt::v11::basic_format_parse_context<char>]’: /usr/include/fmt/base.h:1383:19: required from ‘fmt::v11::detail::value<Context>::value(T&) [with T = thdouble; Context = fmt::v11::context]’ 1383 | custom.format = format_custom_arg< | ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~ 1384 | value_type, typename Context::template formatter_type<value_type>>; | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/fmt/base.h:1647:41: required from ‘constexpr fmt::v11::detail::value<Context> fmt::v11::detail::make_arg(T&) [with bool PACKED = true; Context = fmt::v11::context; T = thdouble; typename std::enable_if<PACKED, int>::type <anonymous> = 0]’ 1647 | return {arg_mapper<Context>().map(val)}; | ^ /usr/include/fmt/base.h:2018:74: required from ‘constexpr fmt::v11::detail::format_arg_store<Context, NUM_ARGS, 0, DESC> fmt::v11::make_format_args(T& ...) [with Context = context; T = {thdouble}; long unsigned int NUM_ARGS = 1; long unsigned int NUM_NAMED_ARGS = 0; long long unsigned int DESC = 15; typename std::enable_if<(NUM_NAMED_ARGS == 0), int>::type <anonymous> = 0]’ 2018 | return {{detail::make_arg<NUM_ARGS <= detail::max_packed_args, Context>( | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 2019 | args)...}}; | ~~~~~
/usr/include/fmt/format.h:4365:44: required from ‘std::string fmt::v11::format(format_string<T ...>, T&& ...) [with T = {thdouble}; std::string = std::__cxx11::basic_string<char>; format_string<T ...> = basic_format_string<char, thdouble>]’ 4365 | return vformat(fmt, fmt::make_format_args(args...)); | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~ /home/bgee/Installs/therion-6.2.1/thepsparse.cxx:143:23: required from here 143 | s << fmt::format("{}", thdouble(this->a,prec_col)) << " g"; | ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/fmt/base.h:1402:29: error: passing ‘const fmt::v11::formatter<thdouble>’ as ‘this’ argument discards qualifiers [-fpermissive] 1402 | ctx.advance_to(cf.format(*static_cast<qualified_type*>(arg), ctx)); | ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /home/bgee/Installs/therion-6.2.1/thepsparse.cxx:50: /home/bgee/Installs/therion-6.2.1/thdouble.h:37:10: note: in call to ‘auto fmt::v11::formatter<thdouble>::format(const thdouble&, FormatContext&) [with FormatContext = fmt::v11::context]’ 37 | auto format(const thdouble& p, FormatContext& ctx) { | ^~~~~~ make[2]: *** [CMakeFiles/therion-common.dir/build.make:593: CMakeFiles/therion-common.dir/thepsparse.cxx.o] Error 1 make[2]: *** Waiting for unfinished jobs.... make[1]: *** [CMakeFiles/Makefile2:871: CMakeFiles/therion-common.dir/all] Error 2 make: *** [Makefile:146: all] Error 2
_______________________________________________ Therion mailing list Therion@speleo.sk https://mailman.speleo.sk/listinfo/therion
This is a clean folder since it is a new version of Therion. I did not try to recompile 6.2.0. "branch master" is not a term I understand. Does that refer to the git repository? I did figure this out. The solution is to use the git repository rather than the tar.gz file that is on the web site. My revised compile process is this: 0) Open a bash window 1) Change to ~/Installs 2) git clone https://github.com/therion/therion 2.5) Change to ~/Installs/therion (should be a new directory) 3) mkdir build 4) perl makeconfig.pl 5) cd build 6) cmake .. 7) make -j 4 8) Become root 9) Change to the build directory. 10) make install With this I now have working Therion on Fedora 41. Thanks! =============== Bill Gee On 11/9/24 01:57, Matěj Plch wrote:
Hello, 1. If you upgrade your OS, you should use a clean build folder, because libraries which CMake previously found are no longer there, so it needs to look for them again. 2. I think this fmt compilation error was fixed in September (https://github.com/therion/therion/pull/586), but since then there was no release, in the meantime you can try to use branch master.
Matěj
so 9. 11. 2024 v 1:56 odesílatel Bill Gee <bgee@campercaver.net> napsal:
Hello everyone - I have upgraded one of my test machines to Fedora 41. Therion 6.2.0 now fails to run with a complaint that libfmt.so.10 cannot be found. Very true! The fmt package was upgraded to version 11 and the shared library is now libfmt.so.11.
I downloaded the latest source code for version 6.2.1 and went to compile it. The compile fails, and I think it is related to fmt. The last few lines from the compile run are listed below.
How can I get past this?
Thanks! -- =============== Bill Gee
[ 57%] Building CXX object CMakeFiles/therion-common.dir/therion.cxx.o In file included from /usr/include/fmt/format.h:41, from /usr/include/fmt/core.h:5, from /home/bgee/Installs/therion-6.2.1/thepsparse.cxx:42: /usr/include/fmt/base.h: In instantiation of ‘static void fmt::v11::detail::value<Context>::format_custom_arg(void*, typename Context::parse_context_type&, Context&) [with T = thdouble; Formatter = fmt::v11::formatter<thdouble>; Context = fmt::v11::context; typename Context::parse_context_type = fmt::v11::basic_format_parse_context<char>]’: /usr/include/fmt/base.h:1383:19: required from ‘fmt::v11::detail::value<Context>::value(T&) [with T = thdouble; Context = fmt::v11::context]’ 1383 | custom.format = format_custom_arg< | ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~ 1384 | value_type, typename Context::template formatter_type<value_type>>; | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/fmt/base.h:1647:41: required from ‘constexpr fmt::v11::detail::value<Context> fmt::v11::detail::make_arg(T&) [with bool PACKED = true; Context = fmt::v11::context; T = thdouble; typename std::enable_if<PACKED, int>::type <anonymous> = 0]’ 1647 | return {arg_mapper<Context>().map(val)}; | ^ /usr/include/fmt/base.h:2018:74: required from ‘constexpr fmt::v11::detail::format_arg_store<Context, NUM_ARGS, 0, DESC> fmt::v11::make_format_args(T& ...) [with Context = context; T = {thdouble}; long unsigned int NUM_ARGS = 1; long unsigned int NUM_NAMED_ARGS = 0; long long unsigned int DESC = 15; typename std::enable_if<(NUM_NAMED_ARGS == 0), int>::type <anonymous> = 0]’ 2018 | return {{detail::make_arg<NUM_ARGS <= detail::max_packed_args, Context>( | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 2019 | args)...}}; | ~~~~~
/usr/include/fmt/format.h:4365:44: required from ‘std::string fmt::v11::format(format_string<T ...>, T&& ...) [with T = {thdouble}; std::string = std::__cxx11::basic_string<char>; format_string<T ...> = basic_format_string<char, thdouble>]’ 4365 | return vformat(fmt, fmt::make_format_args(args...)); | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~ /home/bgee/Installs/therion-6.2.1/thepsparse.cxx:143:23: required from here 143 | s << fmt::format("{}", thdouble(this->a,prec_col)) << " g"; | ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/fmt/base.h:1402:29: error: passing ‘const fmt::v11::formatter<thdouble>’ as ‘this’ argument discards qualifiers [-fpermissive] 1402 | ctx.advance_to(cf.format(*static_cast<qualified_type*>(arg), ctx)); | ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /home/bgee/Installs/therion-6.2.1/thepsparse.cxx:50: /home/bgee/Installs/therion-6.2.1/thdouble.h:37:10: note: in call to ‘auto fmt::v11::formatter<thdouble>::format(const thdouble&, FormatContext&) [with FormatContext = fmt::v11::context]’ 37 | auto format(const thdouble& p, FormatContext& ctx) { | ^~~~~~ make[2]: *** [CMakeFiles/therion-common.dir/build.make:593: CMakeFiles/therion-common.dir/thepsparse.cxx.o] Error 1 make[2]: *** Waiting for unfinished jobs.... make[1]: *** [CMakeFiles/Makefile2:871: CMakeFiles/therion-common.dir/all] Error 2 make: *** [Makefile:146: all] Error 2
_______________________________________________ Therion mailing list Therion@speleo.sk https://mailman.speleo.sk/listinfo/therion
_______________________________________________ Therion mailing list Therion@speleo.sk https://mailman.speleo.sk/listinfo/therion
On 2024-11-09 06:25 -0600, Bill Gee wrote:
This is a clean folder since it is a new version of Therion. I did not try to recompile 6.2.0.
"branch master" is not a term I understand. Does that refer to the git repository?
I did figure this out. The solution is to use the git repository rather than the tar.gz file that is on the web site.
But now you are just building 'today' not v6.2.0, which probably includes the fix matej mentioned. 'Tomorrow' might break again, or at least behave differently. This is OK for a personal build, but for a distro recipie, you need to build 6.2.0 with explicit extra patches/commits needed for Fedora, otherwise no-one knows what version they are running. (Or wait for a 6.2.1 release and build that). Wookey -- Principal hats: Debian, Wookware http://wookware.org/
participants (3)
-
Bill Gee -
Matěj Plch -
Wookey