compiling openmittsu on ARM64 (pinephone)
Hello When I try to compile openmittsu on a pinephone with mobian, it reaches 65% and then stops with the following error. Can you please help me solving this? Regards Friedhelm
[ 65%] Linking CXX executable openMittsuTests
/usr/bin/ld: CMakeFiles/openMittsuTests.dir/test/src/openmittsu-tests.cpp.o: in function fmt::v7::detail::count_digits(unsigned long)': openmittsu-tests.cpp:(.text._ZN3fmt2v76detail12count_digitsEm[_ZN3fmt2v76detail12count_digitsEm]+0x38): undefined reference to fmt::v7::detail::basic_datafmt::v7::detail::basic_data<void>::zero_or_powers_of_10_64_new' /usr/bin/ld: CMakeFiles/openMittsuTests.dir/test/src/openmittsu-tests.cpp.o: in function fmt::v7::detail::count_digits(unsigned int)':
openmittsu-tests.cpp:(.text._ZN3fmt2v76detail12count_digitsEj[_ZN3fmt2v76detail12count_digitsEj]+0x38): undefined reference to fmt::v7::detail::basic_data<void>::zero_or_powers_of_10_32_new' /usr/bin/ld: openmittsu-tests.cpp:(.text._ZN3fmt2v76detail12count_digitsEj[_ZN3fmt2v76detail12count_digitsEj]+0x3c): undefined reference to fmt::v7::detail::basic_dataspdlog::spdlog_ex::spdlog_ex(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)': openmittsu-tests.cpp:(.text._ZN6spdlog9spdlog_exC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi[_ZN6spdlog9spdlog_exC5ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi]+0x74): undefined reference to fmt::v7::format_system_error(fmt::v7::detail::bufferstd::make_unsigned<long>::type fmt::v7::detail::to_unsigned<long>(long)': openmittsu-tests.cpp:(.text._ZN3fmt2v76detail11to_unsignedIlEENSt13make_unsignedIT_E4typeES4_[_ZN3fmt2v76detail11to_unsignedIlEENSt13make_unsignedIT_E4typeES4_]+0x2c): undefined reference to fmt::v7::detail::assert_fail(char const*, int, char const*)'
/usr/bin/ld: CMakeFiles/openMittsuTests.dir/test/src/openmittsu-tests.cpp.o: in function fmt::v7::basic_memory_buffer<char, 250ul, std::allocator<char> >::operator=(fmt::v7::basic_memory_buffer<char, 250ul, std::allocator<char> >&&)': openmittsu-tests.cpp:(.text._ZN3fmt2v719basic_memory_bufferIcLm250ESaIcEEaSEOS3_[_ZN3fmt2v719basic_memory_bufferIcLm250ESaIcEEaSEOS3_]+0x34): undefined reference to fmt::v7::detail::assert_fail(char const*, int, char const*)'
/usr/bin/ld: CMakeFiles/openMittsuTests.dir/test/src/openmittsu-tests.cpp.o: in function fmt::v7::buffer_context<fmt::v7::detail::buffer_appender<char>, char>::iterator fmt::v7::format_to<char [6], int&, 250ul, char>(fmt::v7::basic_memory_buffer<char, 250ul, std::allocator<char> >&, char const (&) [6], int&)': openmittsu-tests.cpp:(.text._ZN3fmt2v79format_toIA6_cJRiELm250EcEENS0_14buffer_contextINS0_6detail15buffer_appenderIT2_EES7_E8iteratorERNS0_19basic_memory_bufferIS7_XT1_ESaIS7_EEERKT_DpOT0_[_ZN3fmt2v79format_toIA6_cJRiELm250EcEENS0_14buffer_contextINS0_6detail15buffer_appenderIT2_EES7_E8iteratorERNS0_19basic_memory_bufferIS7_XT1_ESaIS7_EEERKT_DpOT0_]+0x8c): undefined reference to void fmt::v7::detail::vformat_tofmt::v7::detail::format_decimal_result<char*> fmt::v7::detail::format_decimal<char, unsigned int>(char*, unsigned int, int)': openmittsu-tests.cpp:(.text._ZN3fmt2v76detail14format_decimalIcjEENS1_21format_decimal_resultIPT_EES5_T0_i[_ZN3fmt2v76detail14format_decimalIcjEENS1_21format_decimal_resultIPT_EES5_T0_i]+0x44): undefined reference to fmt::v7::detail::assert_fail(char const*, int, char const*)'
/usr/bin/ld: openmittsu-tests.cpp:(.text._ZN3fmt2v76detail14format_decimalIcjEENS1_21format_decimal_resultIPT_EES5_T0_i[_ZN3fmt2v76detail14format_decimalIcjEENS1_21format_decimal_resultIPT_EES5_T0_i]+0xa4): undefined reference to fmt::v7::detail::basic_data<void>::digits' /usr/bin/ld: openmittsu-tests.cpp:(.text._ZN3fmt2v76detail14format_decimalIcjEENS1_21format_decimal_resultIPT_EES5_T0_i[_ZN3fmt2v76detail14format_decimalIcjEENS1_21format_decimal_resultIPT_EES5_T0_i]+0xa8): undefined reference to fmt::v7::detail::basic_datafmt::v7::detail::basic_data<void>::digits' /usr/bin/ld: openmittsu-tests.cpp:(.text._ZN3fmt2v76detail14format_decimalIcjEENS1_21format_decimal_resultIPT_EES5_T0_i[_ZN3fmt2v76detail14format_decimalIcjEENS1_21format_decimal_resultIPT_EES5_T0_i]+0x144): undefined reference to fmt::v7::detail::basic_datafmt::v7::detail::format_decimal_result<char*> fmt::v7::detail::format_decimal<char, unsigned long>(char*, unsigned long, int)': openmittsu-tests.cpp:(.text._ZN3fmt2v76detail14format_decimalIcmEENS1_21format_decimal_resultIPT_EES5_T0_i[_ZN3fmt2v76detail14format_decimalIcmEENS1_21format_decimal_resultIPT_EES5_T0_i]+0x44): undefined reference to fmt::v7::detail::assert_fail(char const*, int, char const*)'
/usr/bin/ld: openmittsu-tests.cpp:(.text._ZN3fmt2v76detail14format_decimalIcmEENS1_21format_decimal_resultIPT_EES5_T0_i[_ZN3fmt2v76detail14format_decimalIcmEENS1_21format_decimal_resultIPT_EES5_T0_i]+0xb8): undefined reference to fmt::v7::detail::basic_data<void>::digits' /usr/bin/ld: openmittsu-tests.cpp:(.text._ZN3fmt2v76detail14format_decimalIcmEENS1_21format_decimal_resultIPT_EES5_T0_i[_ZN3fmt2v76detail14format_decimalIcmEENS1_21format_decimal_resultIPT_EES5_T0_i]+0xbc): undefined reference to fmt::v7::detail::basic_datafmt::v7::detail::basic_data<void>::digits' /usr/bin/ld: openmittsu-tests.cpp:(.text._ZN3fmt2v76detail14format_decimalIcmEENS1_21format_decimal_resultIPT_EES5_T0_i[_ZN3fmt2v76detail14format_decimalIcmEENS1_21format_decimal_resultIPT_EES5_T0_i]+0x160): undefined reference to fmt::v7::detail::basic_datafmt::v7::buffer_context<fmt::v7::detail::buffer_appender<char>, char>::iterator fmt::v7::format_to<fmt::v7::basic_string_view<char>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, 250ul, char>(fmt::v7::basic_memory_buffer<char, 250ul, std::allocator<char> >&, fmt::v7::basic_string_view<char> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)': openmittsu-tests.cpp:(.text._ZN3fmt2v79format_toINS0_17basic_string_viewIcEEJRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEELm250EcEENS0_14buffer_contextINS0_6detail15buffer_appenderIT2_EESF_E8iteratorERNS0_19basic_memory_bufferISF_XT1_ESaISF_EEERKT_DpOT0_[_ZN3fmt2v79format_toINS0_17basic_string_viewIcEEJRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEELm250EcEENS0_14buffer_contextINS0_6detail15buffer_appenderIT2_EESF_E8iteratorERNS0_19basic_memory_bufferISF_XT1_ESaISF_EEERKT_DpOT0_]+0x90): undefined reference to void fmt::v7::detail::vformat_tospdlog::sinks::rotating_file_sink<std::mutex>::calc_filename(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long)': openmittsu-tests.cpp:(.text._ZN6spdlog5sinks18rotating_file_sinkISt5mutexE13calc_filenameERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm[_ZN6spdlog5sinks18rotating_file_sinkISt5mutexE13calc_filenameERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm]+0x11c): undefined reference to fmt::v7::detail::vformat[abi:cxx11](fmt::v7::basic_string_viewfmt::v7::buffer_context<fmt::v7::detail::buffer_appender<char>, char>::iterator fmt::v7::format_to<fmt::v7::basic_string_view<char>, int const&, 250ul, char>(fmt::v7::basic_memory_buffer<char, 250ul, std::allocator<char> >&, fmt::v7::basic_string_view<char> const&, int const&)': BackupReader.cpp:(.text._ZN3fmt2v79format_toINS0_17basic_string_viewIcEEJRKiELm250EcEENS0_14buffer_contextINS0_6detail15buffer_appenderIT2_EES9_E8iteratorERNS0_19basic_memory_bufferIS9_XT1_ESaIS9_EEERKT_DpOT0_[_ZN3fmt2v79format_toINS0_17basic_string_viewIcEEJRKiELm250EcEENS0_14buffer_contextINS0_6detail15buffer_appenderIT2_EES9_E8iteratorERNS0_19basic_memory_bufferIS9_XT1_ESaIS9_EEERKT_DpOT0_]+0x90): undefined reference to void fmt::v7::detail::vformat_tofmt::v7::buffer_context<fmt::v7::detail::buffer_appender<char>, char>::iterator fmt::v7::format_to<fmt::v7::basic_string_view<char>, char const (&) [13], 250ul, char>(fmt::v7::basic_memory_buffer<char, 250ul, std::allocator<char> >&, fmt::v7::basic_string_view<char> const&, char const (&) [13])': DatabaseWrapper.cpp:(.text._ZN3fmt2v79format_toINS0_17basic_string_viewIcEEJRA13_KcELm250EcEENS0_14buffer_contextINS0_6detail15buffer_appenderIT2_EESA_E8iteratorERNS0_19basic_memory_bufferISA_XT1_ESaISA_EEERKT_DpOT0_[_ZN3fmt2v79format_toINS0_17basic_string_viewIcEEJRA13_KcELm250EcEENS0_14buffer_contextINS0_6detail15buffer_appenderIT2_EESA_E8iteratorERNS0_19basic_memory_bufferISA_XT1_ESaISA_EEERKT_DpOT0_]+0x90): undefined reference to void fmt::v7::detail::vformat_tofmt::v7::buffer_context<fmt::v7::detail::buffer_appender<char>, char>::iterator fmt::v7::format_to<fmt::v7::basic_string_view<char>, char const (&) [15], 250ul, char>(fmt::v7::basic_memory_buffer<char, 250ul, std::allocator<char> >&, fmt::v7::basic_string_view<char> const&, char const (&) [15])': DatabaseWrapper.cpp:(.text._ZN3fmt2v79format_toINS0_17basic_string_viewIcEEJRA15_KcELm250EcEENS0_14buffer_contextINS0_6detail15buffer_appenderIT2_EESA_E8iteratorERNS0_19basic_memory_bufferISA_XT1_ESaISA_EEERKT_DpOT0_[_ZN3fmt2v79format_toINS0_17basic_string_viewIcEEJRA15_KcELm250EcEENS0_14buffer_contextINS0_6detail15buffer_appenderIT2_EESA_E8iteratorERNS0_19basic_memory_bufferISA_XT1_ESaISA_EEERKT_DpOT0_]+0x90): undefined reference to void fmt::v7::detail::vformat_tofmt::v7::buffer_context<fmt::v7::detail::buffer_appender<char>, char>::iterator fmt::v7::format_to<fmt::v7::basic_string_view<char>, char const (&) [17], 250ul, char>(fmt::v7::basic_memory_buffer<char, 250ul, std::allocator<char> >&, fmt::v7::basic_string_view<char> const&, char const (&) [17])': DatabaseWrapper.cpp:(.text._ZN3fmt2v79format_toINS0_17basic_string_viewIcEEJRA17_KcELm250EcEENS0_14buffer_contextINS0_6detail15buffer_appenderIT2_EESA_E8iteratorERNS0_19basic_memory_bufferISA_XT1_ESaISA_EEERKT_DpOT0_[_ZN3fmt2v79format_toINS0_17basic_string_viewIcEEJRA17_KcELm250EcEENS0_14buffer_contextINS0_6detail15buffer_appenderIT2_EESA_E8iteratorERNS0_19basic_memory_bufferISA_XT1_ESaISA_EEERKT_DpOT0_]+0x90): undefined reference to void fmt::v7::detail::vformat_tofmt::v7::buffer_context<fmt::v7::detail::buffer_appender<char>, char>::iterator fmt::v7::format_to<fmt::v7::basic_string_view<char>, char const (&) [11], 250ul, char>(fmt::v7::basic_memory_buffer<char, 250ul, std::allocator<char> >&, fmt::v7::basic_string_view<char> const&, char const (&) [11])': DatabaseWrapper.cpp:(.text._ZN3fmt2v79format_toINS0_17basic_string_viewIcEEJRA11_KcELm250EcEENS0_14buffer_contextINS0_6detail15buffer_appenderIT2_EESA_E8iteratorERNS0_19basic_memory_bufferISA_XT1_ESaISA_EEERKT_DpOT0_[_ZN3fmt2v79format_toINS0_17basic_string_viewIcEEJRA11_KcELm250EcEENS0_14buffer_contextINS0_6detail15buffer_appenderIT2_EESA_E8iteratorERNS0_19basic_memory_bufferISA_XT1_ESaISA_EEERKT_DpOT0_]+0x90): undefined reference to void fmt::v7::detail::vformat_to
would you mind using code markup?
The error seems to come from the spdlog library. This is probably the root cause: https://github.com/gabime/spdlog/issues/1604
Maybe updating the spdlog submodule to the latest version helps. (You'll have to re-run cmake and make.)
@dbrgn Thank you for your support and linking the relevant issue! Always appreciated.
@derbaertigeFrytz Sorry for the delay, life takes its toll.
I just pushed some commits to master that should bump the spdlog version, be sure to also update the submodules for this change to take effect (git submodule init and git submodule update). If this does not fix the issue, please report the updated error!
would you mind using code markup? I am sorry, I will bear that in mind. I am not that experienced in that kind of things.
@blizzard4591 Thank you for your effort. Unfortunately there is still an error. I deleted the old directories and cloned the whole project again. In my initial test, there occurred a lot of warnings. There was no warning in my test today. However, at 65%, make stops
Can I test this myself somehow? Are you cross-compiling? Is there an easy image I can use to play around with this?
I decided to compile on the device itself and did not use a chroot environment on my desktop. The device was installed from https://images.mobian-project.org/pinephone/
A first approach for you could be downloading the .xz file, unpack it with gunzip and chroot into it. Mobian is based on Debian. So, if you are experienced with it, you could update this image to the state of my phone.
As I am really interested in running my Threema account on the phone, I am willing to provide you with all necessary ressources. This starts with supporting you with knowledge about this sofftware. At the moment, I have a spare pinephone. I could send you this as a testing device for some months (sorry, no gift). Let me know, what you think about this. Send me a pm and we could have a phone call. Friedhelm
Mobian is my favorite OS. However let me know, if manjaro or any other taste of linux is yours. I am willing to test it. Raspberry Pi might also be a good starting point for an ARM 64
@derbaertigeFrytz I set up a docker/qemu based environment following this guide: https://gitlab.com/mobian1/wiki/-/wikis/Crosscompiling. I was able to successfully compile and run openMittsu in there, even the QSqlCipher plugin worked out of the box.
Could you do the following for me (on the phone, you may need to fix paths to where you are):
-
pushd openMittsu && git status && popd -
pushd openMittsu/3rdparty/spdlog && git status && popd -
g++ -v
Hello blizzard4591 thank you for your patience and your help. I was succsessful.
It was not possible for me to compile it in a docker crosscompiling environment. I even did not get the compile started. This does not mean, there was something wrong with the wiki. I think, I missed a little detail. This also must have been the case for my previous attempts on the device. I do not know, what I did wrong in the beginning. Finally, I started over with a fresh Mobian image and everything went fine.
Now, openMittsu runs for me on Mobian. I was able to create a database from an ID Backup and receive messages for a group and and from a single contact. Thank you for this great app!
When it comes to usability, there is an issue, that you might be interested in:
The tile for contacts and groups seems to have a minimum width, that is not ideal for portrait view.
It uses a minimum of about 40% of the screen and can be set to a maximum of about 60%.
Even on 40% width, horizontal scrolling is necessary to read the messages.
Do you think, it is possible to allow minimizing this tile to 10%, or even hide it?
With 10%, I believe, contacts could still be recognized, and this app would be a great win for the pinephone. (Resizing the tiles is only possible with a mouse connected, so it cannot be done spontaneous).
Best regards
Frytz