Re: [OpenIndiana-discuss] Compiling KeepassXC on Hipster
On Fri, 11 Jan 2019, benta...@chez.com wrote: Ok, I just needed a few more minutes obviously so I found where this options were defined by default : CMakeLists.txt:add_gcc_compiler_flags("-fvisibility=hidden") CMakeLists.txt:add_gcc_compiler_cxxflags("-fvisibility-inlines-hidden") commented them out and compiled it There are Solaris linker options which do similar things. It would be good to find those options and use them instead so that the library ABI is similar to Linux, without a bunch of exposed private symbols. Using the hidden symbols actually makes the code smaller and load faster. Bob -- Bob Friesenhahn bfrie...@simple.dallas.tx.us, http://www.simplesystems.org/users/bfriesen/ GraphicsMagick Maintainer,http://www.GraphicsMagick.org/ Public Key, http://www.simplesystems.org/users/bfriesen/public-key.txt ___ openindiana-discuss mailing list openindiana-discuss@openindiana.org https://openindiana.org/mailman/listinfo/openindiana-discuss
Re: [OpenIndiana-discuss] Compiling KeepassXC on Hipster
Ok, I just needed a few more minutes obviously so I found where this options were defined by default : CMakeLists.txt:add_gcc_compiler_flags("-fvisibility=hidden") CMakeLists.txt:add_gcc_compiler_cxxflags("-fvisibility-inlines-hidden") commented them out and compiled it Et voila! It works (64bits as well), I finally have auto type function available which is quite cool. I think I'm ready to try to package it. Should I do 1PR for libargon2 and 1PR for KeepassXC or 1 PR for both libargon2 and KeepassXC ? 64 bits build only or both 32/64 bits ? Best regards. Ben Le 2019-01-11 11:17, benta...@chez.com a écrit : Hi all, I'm coming back to this and spent nearly 1.5 day on this. They used to have this issue on netbsd and first solved it by removing compilation option related to symbol visibility, then removed that hack later on but I cannot figure out how they work it out to not use the hack. http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/security/keepassxc/Makefile.diff?only_with_tag=MAIN=text=1.1=text=1.2 Basically, I would like to try to compile without -fvisibility=hidden but I cannot get my head around how to make it through cmake The only packages (curl, gnome2-atk) in OI-userland having something to do with this option are using autoconfigure and diabling it is part of the configure script. What would be the way to force cmake to tell gcc not to use -fvisibility=hidden ? Best regards. Ben On 05/12/2018 10:43, benta...@chez.com wrote: The issue on autotype is related to QT. The plugin for autotype doesn't load at start : $ LANG=en_US.UTF-8 LD_LIBRARY_PATH=/usr/lib/qt/5.8/lib:/usr/local/lib /usr/local/bin/keepassxc Qt: Session management error: Could not open network socket Warning: using insecure memory! Couldn't load translations. Unable to load auto-type plugin: Cannot resolve symbol "qt_plugin_instance" in /usr/local/lib/keepassxc/libkeepassx-autotype-xcb.so: (ld.so.1: keepassxc: fatal: qt_plugin_instance: can't find symbol) QObject::startTimer: Timers cannot have negative interval I have to add the LD_LIBRARY_PATH for QT, so I suspect I miss a few other path, though : /usr/lib/qt/5.8/lib$ LANG=en_US.UTF-8 grep -R qt_plugin_instance * Binary file amd64/libQt5DesignerComponents.so.5.8.0 matches Binary file amd64/libQt5DesignerComponents.so.5 matches Binary file amd64/libQt5Core.so.5.8 matches Binary file amd64/libQt5DesignerComponents.so matches Binary file amd64/libQt5DesignerComponents.so.5.8 matches Binary file amd64/libQt5Core.so.5 matches Binary file amd64/libQt5Core.so.5.8.0 matches Binary file amd64/libQt5Core.so matches Binary file libQt5Core.so matches Binary file libQt5Core.so.5 matches Binary file libQt5Core.so.5.8 matches Binary file libQt5Core.so.5.8.0 matches Binary file libQt5DesignerComponents.so matches Binary file libQt5DesignerComponents.so.5 matches Binary file libQt5DesignerComponents.so.5.8 matches Binary file libQt5DesignerComponents.so.5.8.0 matches I'm not sure why it doesn't find the symbol Best regards. Ben On 04/12/2018 10:38, benta...@chez.com wrote: This is not perfect, this is what's left to do : - 64bits keepassxc and libargon2 - autotype doesn't work, option (menu entries, shortcut) not present libargon2 compiles out of the box https://github.com/P-H-C/phc-winner-argon2 cmake : - cmake linker flags -lsocket -lnsl -lrt -lresolv - cmake didn't find QT5 config utilities, I had to point it to the directory - did compilation with GCC7 but I think default GCC6 should work as well - due to GCC7, I added -I /usr/gcc/7/include/c++/7.3.0 to CXX_FLAGS keepassxc patch : cut here --- src/totp/totp.cpp 2018-08-23 03:25:04.0 + +++ src/totp/totp.cpp.mod 2018-12-04 09:09:32.413168641 + @@ -164,7 +164,7 @@ direction = 1; startpos = 0; } -quint32 digitsPower = pow(encoder.alphabet.size(), digits); +quint32 digitsPower = pow(double (encoder.alphabet.size()), digits); quint64 password = binary % digitsPower; QString retval(int(digits), encoder.alphabet[0]); cut here Best regards. Ben On 04/12/2018 09:29, Till Wegmüller wrote: Nice work. I would also be interested in it. Could you Publish a patch or put a makefile into OI Userland? Thanks and Greetings Till On 12/03/18 09:28 PM, benta...@chez.com wrote: Thanks Bob and Alexander, I think I start to understand. grep digits ../../src/totp/totp.cpp [...] quint8 digits = encoder.digits == 0 ? numDigits : encoder.digits; [...] From my 30 years old rusty knowledge of C++, this mean that digits is supposed to be a 'quint8' which is most probably QT version of the 'int' and as Bob noticed the pow function expects 'int', 'float', or 'double' From Alexander reference, I should have quint32 digitsPower = pow(encoder.alphabet.size(), int(digits)); In that particular case it was 'encoder.alphabet.size()' which appeared ambiguous, using 'double (encoder.alphabet.size())' made it. 'digits' was ok so far Bottom line is I could compile and execute it,
Re: [OpenIndiana-discuss] Compiling KeepassXC on Hipster
Hi all, I'm coming back to this and spent nearly 1.5 day on this. They used to have this issue on netbsd and first solved it by removing compilation option related to symbol visibility, then removed that hack later on but I cannot figure out how they work it out to not use the hack. http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/security/keepassxc/Makefile.diff?only_with_tag=MAIN=text=1.1=text=1.2 Basically, I would like to try to compile without -fvisibility=hidden but I cannot get my head around how to make it through cmake The only packages (curl, gnome2-atk) in OI-userland having something to do with this option are using autoconfigure and diabling it is part of the configure script. What would be the way to force cmake to tell gcc not to use -fvisibility=hidden ? Best regards. Ben On 05/12/2018 10:43, benta...@chez.com wrote: The issue on autotype is related to QT. The plugin for autotype doesn't load at start : $ LANG=en_US.UTF-8 LD_LIBRARY_PATH=/usr/lib/qt/5.8/lib:/usr/local/lib /usr/local/bin/keepassxc Qt: Session management error: Could not open network socket Warning: using insecure memory! Couldn't load translations. Unable to load auto-type plugin: Cannot resolve symbol "qt_plugin_instance" in /usr/local/lib/keepassxc/libkeepassx-autotype-xcb.so: (ld.so.1: keepassxc: fatal: qt_plugin_instance: can't find symbol) QObject::startTimer: Timers cannot have negative interval I have to add the LD_LIBRARY_PATH for QT, so I suspect I miss a few other path, though : /usr/lib/qt/5.8/lib$ LANG=en_US.UTF-8 grep -R qt_plugin_instance * Binary file amd64/libQt5DesignerComponents.so.5.8.0 matches Binary file amd64/libQt5DesignerComponents.so.5 matches Binary file amd64/libQt5Core.so.5.8 matches Binary file amd64/libQt5DesignerComponents.so matches Binary file amd64/libQt5DesignerComponents.so.5.8 matches Binary file amd64/libQt5Core.so.5 matches Binary file amd64/libQt5Core.so.5.8.0 matches Binary file amd64/libQt5Core.so matches Binary file libQt5Core.so matches Binary file libQt5Core.so.5 matches Binary file libQt5Core.so.5.8 matches Binary file libQt5Core.so.5.8.0 matches Binary file libQt5DesignerComponents.so matches Binary file libQt5DesignerComponents.so.5 matches Binary file libQt5DesignerComponents.so.5.8 matches Binary file libQt5DesignerComponents.so.5.8.0 matches I'm not sure why it doesn't find the symbol Best regards. Ben On 04/12/2018 10:38, benta...@chez.com wrote: This is not perfect, this is what's left to do : - 64bits keepassxc and libargon2 - autotype doesn't work, option (menu entries, shortcut) not present libargon2 compiles out of the box https://github.com/P-H-C/phc-winner-argon2 cmake : - cmake linker flags -lsocket -lnsl -lrt -lresolv - cmake didn't find QT5 config utilities, I had to point it to the directory - did compilation with GCC7 but I think default GCC6 should work as well - due to GCC7, I added -I /usr/gcc/7/include/c++/7.3.0 to CXX_FLAGS keepassxc patch : cut here --- src/totp/totp.cpp 2018-08-23 03:25:04.0 + +++ src/totp/totp.cpp.mod 2018-12-04 09:09:32.413168641 + @@ -164,7 +164,7 @@ direction = 1; startpos = 0; } -quint32 digitsPower = pow(encoder.alphabet.size(), digits); +quint32 digitsPower = pow(double (encoder.alphabet.size()), digits); quint64 password = binary % digitsPower; QString retval(int(digits), encoder.alphabet[0]); cut here Best regards. Ben On 04/12/2018 09:29, Till Wegmüller wrote: Nice work. I would also be interested in it. Could you Publish a patch or put a makefile into OI Userland? Thanks and Greetings Till On 12/03/18 09:28 PM, benta...@chez.com wrote: Thanks Bob and Alexander, I think I start to understand. grep digits ../../src/totp/totp.cpp [...] quint8 digits = encoder.digits == 0 ? numDigits : encoder.digits; [...] From my 30 years old rusty knowledge of C++, this mean that digits is supposed to be a 'quint8' which is most probably QT version of the 'int' and as Bob noticed the pow function expects 'int', 'float', or 'double' From Alexander reference, I should have quint32 digitsPower = pow(encoder.alphabet.size(), int(digits)); In that particular case it was 'encoder.alphabet.size()' which appeared ambiguous, using 'double (encoder.alphabet.size())' made it. 'digits' was ok so far Bottom line is I could compile and execute it, it is nice to have it native (works with wine). Thanks both of you. Best regards. Ben On 04/12/2018 03:21, Bob Friesenhahn wrote: On Mon, 3 Dec 2018, benta...@chez.com wrote: Hello, 'static QString Totp::generateTotp(QByteArray, quint64, quint8, quint8)': /home/ben/tmp/keepassxc-2.3.4/src/totp/totp.cpp:167:62: error: call of overloaded 'pow(int, quint8&)' is ambiguous quint32 digitsPower = pow(encoder.alphabet.size(), digits); What is the declared storage type of the 'digits' argument? From reading the header, it appears that it must be of type 'int', 'float', or 'double'. Any other type would require a
Re: [OpenIndiana-discuss] Compiling KeepassXC on Hipster
The issue on autotype is related to QT. The plugin for autotype doesn't load at start : $ LANG=en_US.UTF-8 LD_LIBRARY_PATH=/usr/lib/qt/5.8/lib:/usr/local/lib /usr/local/bin/keepassxc Qt: Session management error: Could not open network socket Warning: using insecure memory! Couldn't load translations. Unable to load auto-type plugin: Cannot resolve symbol "qt_plugin_instance" in /usr/local/lib/keepassxc/libkeepassx-autotype-xcb.so: (ld.so.1: keepassxc: fatal: qt_plugin_instance: can't find symbol) QObject::startTimer: Timers cannot have negative interval I have to add the LD_LIBRARY_PATH for QT, so I suspect I miss a few other path, though : /usr/lib/qt/5.8/lib$ LANG=en_US.UTF-8 grep -R qt_plugin_instance * Binary file amd64/libQt5DesignerComponents.so.5.8.0 matches Binary file amd64/libQt5DesignerComponents.so.5 matches Binary file amd64/libQt5Core.so.5.8 matches Binary file amd64/libQt5DesignerComponents.so matches Binary file amd64/libQt5DesignerComponents.so.5.8 matches Binary file amd64/libQt5Core.so.5 matches Binary file amd64/libQt5Core.so.5.8.0 matches Binary file amd64/libQt5Core.so matches Binary file libQt5Core.so matches Binary file libQt5Core.so.5 matches Binary file libQt5Core.so.5.8 matches Binary file libQt5Core.so.5.8.0 matches Binary file libQt5DesignerComponents.so matches Binary file libQt5DesignerComponents.so.5 matches Binary file libQt5DesignerComponents.so.5.8 matches Binary file libQt5DesignerComponents.so.5.8.0 matches I'm not sure why it doesn't find the symbol Best regards. Ben On 04/12/2018 10:38, benta...@chez.com wrote: This is not perfect, this is what's left to do : - 64bits keepassxc and libargon2 - autotype doesn't work, option (menu entries, shortcut) not present libargon2 compiles out of the box https://github.com/P-H-C/phc-winner-argon2 cmake : - cmake linker flags -lsocket -lnsl -lrt -lresolv - cmake didn't find QT5 config utilities, I had to point it to the directory - did compilation with GCC7 but I think default GCC6 should work as well - due to GCC7, I added -I /usr/gcc/7/include/c++/7.3.0 to CXX_FLAGS keepassxc patch : cut here --- src/totp/totp.cpp 2018-08-23 03:25:04.0 + +++ src/totp/totp.cpp.mod 2018-12-04 09:09:32.413168641 + @@ -164,7 +164,7 @@ direction = 1; startpos = 0; } -quint32 digitsPower = pow(encoder.alphabet.size(), digits); +quint32 digitsPower = pow(double (encoder.alphabet.size()), digits); quint64 password = binary % digitsPower; QString retval(int(digits), encoder.alphabet[0]); cut here Best regards. Ben On 04/12/2018 09:29, Till Wegmüller wrote: Nice work. I would also be interested in it. Could you Publish a patch or put a makefile into OI Userland? Thanks and Greetings Till On 12/03/18 09:28 PM, benta...@chez.com wrote: Thanks Bob and Alexander, I think I start to understand. grep digits ../../src/totp/totp.cpp [...] quint8 digits = encoder.digits == 0 ? numDigits : encoder.digits; [...] From my 30 years old rusty knowledge of C++, this mean that digits is supposed to be a 'quint8' which is most probably QT version of the 'int' and as Bob noticed the pow function expects 'int', 'float', or 'double' From Alexander reference, I should have quint32 digitsPower = pow(encoder.alphabet.size(), int(digits)); In that particular case it was 'encoder.alphabet.size()' which appeared ambiguous, using 'double (encoder.alphabet.size())' made it. 'digits' was ok so far Bottom line is I could compile and execute it, it is nice to have it native (works with wine). Thanks both of you. Best regards. Ben On 04/12/2018 03:21, Bob Friesenhahn wrote: On Mon, 3 Dec 2018, benta...@chez.com wrote: Hello, 'static QString Totp::generateTotp(QByteArray, quint64, quint8, quint8)': /home/ben/tmp/keepassxc-2.3.4/src/totp/totp.cpp:167:62: error: call of overloaded 'pow(int, quint8&)' is ambiguous quint32 digitsPower = pow(encoder.alphabet.size(), digits); What is the declared storage type of the 'digits' argument? From reading the header, it appears that it must be of type 'int', 'float', or 'double'. Any other type would require a type transformation which might be ambiguous. Bob ___ openindiana-discuss mailing list openindiana-discuss@openindiana.org https://openindiana.org/mailman/listinfo/openindiana-discuss
Re: [OpenIndiana-discuss] Compiling KeepassXC on Hipster
This is not perfect, this is what's left to do : - 64bits keepassxc and libargon2 - autotype doesn't work, option (menu entries, shortcut) not present libargon2 compiles out of the box https://github.com/P-H-C/phc-winner-argon2 cmake : - cmake linker flags -lsocket -lnsl -lrt -lresolv - cmake didn't find QT5 config utilities, I had to point it to the directory - did compilation with GCC7 but I think default GCC6 should work as well - due to GCC7, I added -I /usr/gcc/7/include/c++/7.3.0 to CXX_FLAGS keepassxc patch : cut here --- src/totp/totp.cpp 2018-08-23 03:25:04.0 + +++ src/totp/totp.cpp.mod 2018-12-04 09:09:32.413168641 + @@ -164,7 +164,7 @@ direction = 1; startpos = 0; } -quint32 digitsPower = pow(encoder.alphabet.size(), digits); +quint32 digitsPower = pow(double (encoder.alphabet.size()), digits); quint64 password = binary % digitsPower; QString retval(int(digits), encoder.alphabet[0]); cut here Best regards. Ben On 04/12/2018 09:29, Till Wegmüller wrote: Nice work. I would also be interested in it. Could you Publish a patch or put a makefile into OI Userland? Thanks and Greetings Till On 12/03/18 09:28 PM, benta...@chez.com wrote: Thanks Bob and Alexander, I think I start to understand. grep digits ../../src/totp/totp.cpp [...] quint8 digits = encoder.digits == 0 ? numDigits : encoder.digits; [...] From my 30 years old rusty knowledge of C++, this mean that digits is supposed to be a 'quint8' which is most probably QT version of the 'int' and as Bob noticed the pow function expects 'int', 'float', or 'double' From Alexander reference, I should have quint32 digitsPower = pow(encoder.alphabet.size(), int(digits)); In that particular case it was 'encoder.alphabet.size()' which appeared ambiguous, using 'double (encoder.alphabet.size())' made it. 'digits' was ok so far Bottom line is I could compile and execute it, it is nice to have it native (works with wine). Thanks both of you. Best regards. Ben On 04/12/2018 03:21, Bob Friesenhahn wrote: On Mon, 3 Dec 2018, benta...@chez.com wrote: Hello, 'static QString Totp::generateTotp(QByteArray, quint64, quint8, quint8)': /home/ben/tmp/keepassxc-2.3.4/src/totp/totp.cpp:167:62: error: call of overloaded 'pow(int, quint8&)' is ambiguous quint32 digitsPower = pow(encoder.alphabet.size(), digits); What is the declared storage type of the 'digits' argument? From reading the header, it appears that it must be of type 'int', 'float', or 'double'. Any other type would require a type transformation which might be ambiguous. Bob ___ openindiana-discuss mailing list openindiana-discuss@openindiana.org https://openindiana.org/mailman/listinfo/openindiana-discuss ___ openindiana-discuss mailing list openindiana-discuss@openindiana.org https://openindiana.org/mailman/listinfo/openindiana-discuss ___ openindiana-discuss mailing list openindiana-discuss@openindiana.org https://openindiana.org/mailman/listinfo/openindiana-discuss
Re: [OpenIndiana-discuss] Compiling KeepassXC on Hipster
Nice work. I would also be interested in it. Could you Publish a patch or put a makefile into OI Userland? Thanks and Greetings Till On 12/03/18 09:28 PM, benta...@chez.com wrote: > Thanks Bob and Alexander, I think I start to understand. > > grep digits ../../src/totp/totp.cpp > [...] > quint8 digits = encoder.digits == 0 ? numDigits : encoder.digits; > [...] > > From my 30 years old rusty knowledge of C++, this mean that digits is > supposed to be a 'quint8' which is most probably QT version of the 'int' > and as Bob noticed the pow function expects 'int', 'float', or 'double' > > From Alexander reference, I should have > quint32 digitsPower = pow(encoder.alphabet.size(), int(digits)); > > In that particular case it was 'encoder.alphabet.size()' which appeared > ambiguous, using 'double (encoder.alphabet.size())' made it. 'digits' > was ok so far > > Bottom line is I could compile and execute it, it is nice to have it > native (works with wine). > > Thanks both of you. > Best regards. > Ben > > On 04/12/2018 03:21, Bob Friesenhahn wrote: > >> On Mon, 3 Dec 2018, benta...@chez.com wrote: >> >>> Hello, >>> 'static QString Totp::generateTotp(QByteArray, quint64, quint8, >>> quint8)': >>> /home/ben/tmp/keepassxc-2.3.4/src/totp/totp.cpp:167:62: error: call >>> of overloaded 'pow(int, quint8&)' is ambiguous >>> quint32 digitsPower = pow(encoder.alphabet.size(), digits); >> >> What is the declared storage type of the 'digits' argument? From >> reading the header, it appears that it must be of type 'int', 'float', >> or 'double'. Any other type would require a type transformation which >> might be ambiguous. >> >> Bob > > ___ > openindiana-discuss mailing list > openindiana-discuss@openindiana.org > https://openindiana.org/mailman/listinfo/openindiana-discuss ___ openindiana-discuss mailing list openindiana-discuss@openindiana.org https://openindiana.org/mailman/listinfo/openindiana-discuss
Re: [OpenIndiana-discuss] Compiling KeepassXC on Hipster
Thanks Bob and Alexander, I think I start to understand. grep digits ../../src/totp/totp.cpp [...] quint8 digits = encoder.digits == 0 ? numDigits : encoder.digits; [...] From my 30 years old rusty knowledge of C++, this mean that digits is supposed to be a 'quint8' which is most probably QT version of the 'int' and as Bob noticed the pow function expects 'int', 'float', or 'double' From Alexander reference, I should have quint32 digitsPower = pow(encoder.alphabet.size(), int(digits)); In that particular case it was 'encoder.alphabet.size()' which appeared ambiguous, using 'double (encoder.alphabet.size())' made it. 'digits' was ok so far Bottom line is I could compile and execute it, it is nice to have it native (works with wine). Thanks both of you. Best regards. Ben On 04/12/2018 03:21, Bob Friesenhahn wrote: On Mon, 3 Dec 2018, benta...@chez.com wrote: Hello, 'static QString Totp::generateTotp(QByteArray, quint64, quint8, quint8)': /home/ben/tmp/keepassxc-2.3.4/src/totp/totp.cpp:167:62: error: call of overloaded 'pow(int, quint8&)' is ambiguous quint32 digitsPower = pow(encoder.alphabet.size(), digits); What is the declared storage type of the 'digits' argument? From reading the header, it appears that it must be of type 'int', 'float', or 'double'. Any other type would require a type transformation which might be ambiguous. Bob ___ openindiana-discuss mailing list openindiana-discuss@openindiana.org https://openindiana.org/mailman/listinfo/openindiana-discuss
Re: [OpenIndiana-discuss] Compiling KeepassXC on Hipster
On Mon, 3 Dec 2018, benta...@chez.com wrote: Hello, 'static QString Totp::generateTotp(QByteArray, quint64, quint8, quint8)': /home/ben/tmp/keepassxc-2.3.4/src/totp/totp.cpp:167:62: error: call of overloaded 'pow(int, quint8&)' is ambiguous quint32 digitsPower = pow(encoder.alphabet.size(), digits); What is the declared storage type of the 'digits' argument? From reading the header, it appears that it must be of type 'int', 'float', or 'double'. Any other type would require a type transformation which might be ambiguous. Bob -- Bob Friesenhahn bfrie...@simple.dallas.tx.us, http://www.simplesystems.org/users/bfriesen/ GraphicsMagick Maintainer,http://www.GraphicsMagick.org/ Public Key, http://www.simplesystems.org/users/bfriesen/public-key.txt ___ openindiana-discuss mailing list openindiana-discuss@openindiana.org https://openindiana.org/mailman/listinfo/openindiana-discuss
Re: [OpenIndiana-discuss] Compiling KeepassXC on Hipster
Hi. Code likely needs some casts, like in https://github.com/OpenIndiana/oi-userland/blob/oi/hipster/components/library/webkitgtk/patches/03-functions-ambiguity.patch С уважением, Александр Пыхалов, программист отдела телекоммуникационной инфраструктуры управления информационно-коммуникационной инфраструктуры ЮФУ От: benta...@chez.com Отправлено: 3 декабря 2018 г. 6:07:34 Кому: openindiana-discuss@openindiana.org Тема: [OpenIndiana-discuss] Compiling KeepassXC on Hipster Hello, I'm trying to compile KeepassXC from source using gcc-7 but I fall onto the following issue : [ 53%] Building CXX object src/CMakeFiles/keepassx_core.dir/totp/totp.cpp.o /home/ben/tmp/keepassxc-2.3.4/src/totp/totp.cpp: In static member function 'static QString Totp::generateTotp(QByteArray, quint64, quint8, quint8)': /home/ben/tmp/keepassxc-2.3.4/src/totp/totp.cpp:167:62: error: call of overloaded 'pow(int, quint8&)' is ambiguous quint32 digitsPower = pow(encoder.alphabet.size(), digits); ^ In file included from /usr/include/math.h:32:0, from /usr/gcc/7/include/c++/7.3.0/bits/std_abs.h:40, from /usr/gcc/7/include/c++/7.3.0/cstdlib:77, from /usr/gcc/7/include/c++/7.3.0/bits/stl_algo.h:59, from /usr/gcc/7/include/c++/7.3.0/algorithm:62, from /usr/lib/qt/5.8/include/QtCore/qglobal.h:108, from /home/ben/tmp/keepassxc-2.3.4/src/totp/totp.h:22, from /home/ben/tmp/keepassxc-2.3.4/src/totp/totp.cpp:19: /usr/include/iso/math_iso.h:84:15: note: candidate: double std::pow(double, double) extern double pow __P((double, double)); ^~~ /usr/include/iso/math_iso.h:161:16: note: candidate: double std::pow(double, int) inline double pow(double __X, int __Y) { return ^~~ /usr/include/iso/math_iso.h:181:15: note: candidate: float std::pow(float, float) inline float pow(float __X, float __Y) { return __powf(__X, __Y); } ^~~ /usr/include/iso/math_iso.h:182:15: note: candidate: float std::pow(float, int) inline float pow(float __X, int __Y) { return ^~~ /usr/include/iso/math_iso.h:212:21: note: candidate: long double std::pow(long double, long double) inline long double pow(long double __X, long double __Y) { return ^~~ /usr/include/iso/math_iso.h:214:21: note: candidate: long double std::pow(long double, int) inline long double pow(long double __X, int __Y) { return ^~~ gmake[2]: *** [src/CMakeFiles/keepassx_core.dir/build.make:1545: src/CMakeFiles/keepassx_core.dir/totp/totp.cpp.o] Error 1 gmake[1]: *** [CMakeFiles/Makefile2:230: src/CMakeFiles/keepassx_core.dir/all] Error 2 gmake: *** [Makefile:141: all] Error 2 I think KeepassXC code expect pow coming from /usr/gcc/7/include/c++/7.3.0/complex.h rather than /usr/include/iso/math_iso.h I tried to shuffle around the -I on the compiler command line but it doesn't seem to have any impact Compile command is : cd /home/franck/tmp/keepassxc-2.3.4/build/src && /usr/bin/g++-7 -DKEEPASSX_BUILDING_CORE -DQT_CONCURRENT_LIB -DQT_CORE_LIB -DQT_DBUS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_NO_CAST_TO_ASCII -DQT_NO_DEBUG -DQT_NO_EXCEPTIONS -DQT_STRICT_ITERATORS -DQT_WIDGETS_LIB -I/home/franck/tmp/keepassxc-2.3.4/build/src/keepassx_core_autogen/include -I/home/franck/tmp/keepassxc-2.3.4/src -I/home/franck/tmp/keepassxc-2.3.4/build/src -I/home/franck/tmp/keepassxc-2.3.4/src/zxcvbn -isystem /usr/lib/qt/5.8/include -isystem /usr/lib/qt/5.8/include/QtCore -isystem /usr/lib/qt/5.8/./mkspecs/solaris-g++ -isystem /usr/lib/qt/5.8/include/QtWidgets -isystem /usr/lib/qt/5.8/include/QtGui -isystem /usr/lib/qt/5.8/include/QtNetwork -isystem /usr/lib/qt/5.8/include/QtConcurrent -isystem /usr/lib/qt/5.8/include/QtDBus -fno-common -Wall -Wextra -Wundef -Wpointer-arith -Wno-long-long -Wformat=2 -Wmissing-format-attribute -fvisibility=hidden -fvisibility-inlines-hidden -fstack-protector-strong -fno-exceptions -fno-rtti -Wnon-virtual-dtor -Wold-style-cast -Woverloaded-virtual -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -Werror=format-security -Wcast-align -std=c++11 -O3 -DNDEBUG -fPIC -std=gnu++11 -o CMakeFiles/keepassx_core.dir/totp/totp.cpp.o -c /home/franck/tmp/keepassxc-2.3.4/src/totp/totp.cppEPASSX_BUILDING_CORE -DQT_CONCURRENT_LIB -DQT_CORE_LIB -DQT_DBUS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_NO_CAST_TO_ASCII -DQT_NO_DEBUG -DQT_NO_EXCEPTIONS -DQT_STRICT_ITERATORS -DQT_WIDGETS_LIB -I/usr/gcc/7/include/c++/7.3.0 -I/home/franck/tmp/keepassxc-2.3.4/build/src/keepassx_core_autogen/include -I/home/franck/tmp/keepassxc-2.3.4/src -I/home/franck/tmp/keepassxc-2.3.4/build/src -I/home/franck/tmp/keepassxc-2.3.4/src/zxcvbn -isystem /usr/lib/qt/5.8/include -isystem /usr/lib/qt/5.8/include/QtCore -isystem /usr/lib/qt/5.8/./mkspecs/solaris-g++ -isystem