Open AstreaeLuna opened 6 months ago
same error on Arch, try to checkout the latest release tag then compile as usual.
git checkout tags/v4.18341
This sounds more of a QT5 change than anything that we do
Bumped into this issue as well.
On v4.18341
the warning is:
In file included from /usr/include/qt/QtCore/qfuture.h:45,
from /usr/include/qt/QtCore/QtCore:97,
from /usr/include/qt/QtGui/QtGuiDepends:3,
from /usr/include/qt/QtGui/QtGui:3,
from src/proxguiqt.h:30,
from src/proxguiqt.cpp:19:
/usr/include/qt/QtCore/qfutureinterface.h:284:37: warning: template-id not allowed for constructor in C++20 [-Wtemplate-id-cdtor]
284 | explicit QFutureInterface<void>(State initialState = NoState)
| ^~~~~
/usr/include/qt/QtCore/qfutureinterface.h:284:37: note: remove the ‘< >’
On main the error is:
In file included from /usr/include/qt/QtCore/qfuture.h:45,
from /usr/include/qt/QtCore/QtCore:97,
from /usr/include/qt/QtGui/QtGuiDepends:3,
from /usr/include/qt/QtGui/QtGui:3,
from src/proxguiqt.h:30,
from src/proxguiqt.moc.cpp:10:
/usr/include/qt/QtCore/qfutureinterface.h:284:37: error: template-id not allowed for constructor in C++20 [-Werror=template-id-cdtor]
284 | explicit QFutureInterface<void>(State initialState = NoState)
| ^~~~~
/usr/include/qt/QtCore/qfutureinterface.h:284:37: note: remove the ‘< >’
So there is a difference in wording (error vs. warning). Not sure were it is coming from. Arch recently updated its gcc13 package. Maybe this changed something. Or like @iceman1001 said, something with Qt.
funny thing, the .moc.cpp is created by QT... So its nothing we have control over more than it might be needed to regenerate on your systems?
@iceman1001 I'll look into reporting this bug to the QT devs instead. Out of curiosity, is there a way to retarget the build to use QT6?
you will need to modify the Makefiles / Cmakefile to use QT6 instead.
Should I close this issue since it's a Qt problem or leave it open?
keep it open until you got some more answers.
For now you can use the following patch in order to just make build working and suppress the error:
diff --git a/client/Makefile b/client/Makefile
index 1b7090f68..22bd772b4 100644
--- a/client/Makefile
+++ b/client/Makefile
@@ -446,7 +446,7 @@ endif
PM3CFLAGS += -DHAVE_SNPRINTF
-CXXFLAGS ?= -Wall -Werror
+CXXFLAGS ?= -Wall -Werror -Wno-error=template-id-cdtor
CXXFLAGS += $(MYDEFS) $(MYCXXFLAGS) $(MYINCLUDES)
PM3CXXFLAGS = $(CXXFLAGS)
I sent a bug report to the QT5 devs, who confirmed that the bug had been patched and the latest update to the upstream repositories should now resolve the issue.
If someone needs to patch their own Qt5 install, the line to change is https://src.fedoraproject.org/rpms/qt5-qtbase/blob/664f24855f26ccaee2501b26a50108b054bf19e2/f/qtbase-qfutureinterface-fix-build-with-gcc14.patch
class QFutureInterface<void> : public QFutureInterfaceBase
{
public:
- explicit QFutureInterface<void>(State initialState = NoState)
+ explicit QFutureInterface(State initialState = NoState)
: QFutureInterfaceBase(initialState)
{ }
E.g. on Debian : /usr/include/x86_64-linux-gnu/qt5/QtCore/qfutureinterface.h
I simply replaced "CONFIG += c++17
" with "CONFIG += c++20
" in the project file.
And also added this: "DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000
"
I simply replaced "
CONFIG += c++17
" with "CONFIG += c++20
" in the project file. And also added this: "DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000
"
Interesting find, You added the c++20 in the Client Makefile right? and where did you add the QT define?
You might also want to see this: https://aur.archlinux.org/packages/proxmark3-iceman-git
Some hand-hacking was involved insofar as compilation by an AUR helper was involved.
Reminder, SKIPQT means you will not get the data plot
window
You also mentioned:
Deleting the substrings mfkey and 'nonce2key' from line 139 fixed that.
Where did you run into this?
I know. I sat and thought about it, and for what I'm using proxmark3 for right now that's fine.
I ran into that with the PKGBUILD file in the AUR. It doesn't apply here, I think.
I had the same questions you did about the projectfile and QT definition, which is why I went off in a different direction (hopefully not a rabbithole).
We have the following solutions:
qfutureinterface.h
CONFIG += c++20
I'll give them a try tonight, and if they work on my end I'll let the AUR package maintainer know.
If someone needs to patch their own Qt5 install, the line to change is https://src.fedoraproject.org/rpms/qt5-qtbase/blob/664f24855f26ccaee2501b26a50108b054bf19e2/f/qtbase-qfutureinterface-fix-build-with-gcc14.patch
FTR on Debian, the bug has been fixed in qtbase5-dev version 5.15.13+dfsg-4. Current testing (Trixie) and unstable (Sid) are at 5.15.15.
Describe the bug Build failure caused by C++20 compiler change: template-id not allowed for constructor in C++20
To Reproduce Steps to reproduce the behavior:
make -j all
Expected behavior The build should succeed.
Desktop (please complete the following information):
Additional context The error is resolved and the build can successfully complete if the change suggested by the compiler is made and
<void>
is removed from Line 284 of /usr/include/qt5/QtCore/qfutureinterface.hThis leads me to believe this isn't a problem strictly with Proxmark3 but with the QT development library. But I'm posting here to be sure.
Full build log is as follows:
Build Log
``` =================================================================== Version info: Iceman/master/v4.18341-152-g2bc7c5030 Platform name: Proxmark3 generic target PLATFORM: PM3GENERIC PLATFORM_FPGA: xc2s30 PLATFORM_SIZE: 512 Platform extras: No extra selected Included options: LF HITAG EM4x50 EM4x70 ZX8211 GENERAL_HF ISO15693 LEGICRF ISO14443b ISO14443a ICLASS FELICA NFCBARCODE HFSNIFF HFPLOT Standalone mode: LF_SAMYRUN =================================================================== [*] MAKE client/all [*] MAKE bootrom/all [*] MAKE fpga_compress/all [*] MAKE mfkey/all [*] MAKE nonce2key/all [*] MAKE mf_nonce_brute/all [*] MAKE mfd_aes_brute/all [*] MAKE cryptorf/all [-] CC fpga_compress.c [-] CC ../../common/lz4/lz4hc.c [-] CC ../../common/lz4/lz4.c [-] CC mf_nonce_brute.c [-] CC nonce2key.c [-] CC mfkey32.c [-] CC ../../common/crapto1/crypto1.c [-] CC ../../common/crapto1/crapto1.c [-] CC ../../common/crapto1/crypto1.c [-] CC ../../common/crapto1/crapto1.c [-] CC ../../common/bucketsort.c [-] CC ../../common/bucketsort.c [-] CC brute_key.c [-] CC cm.c [-] CC ../../common/crapto1/crypto1.c [-] CC ../../common/crapto1/crapto1.c [-] CC nested_util.c [-] CC ../../common/cryptorf/cryptolib.c [-] CC util.c [-] CC util_posix.c [-] CC iso14443crc.c [-] CC ../../common/bucketsort.c [-] CC sleep.c [-] CC sm.c [-] CC randoms.c [-] CC util_posix.c [-] CC mfkey32v2.c compiler version: arm-none-eabi-gcc (Fedora 13.2.0-5.fc40) 13.2.0 [=] CHECK version_pm3.c [-] CC mfd_aes_brute.c [-] CC ram-reset.s [-] CC mf_trace_brute.c [-] CXX sma.cpp [-] CC mfkey64.c [-] CC flash-reset.s [-] CXX sma_multi.cpp [-] CC mfd_multi_brute.c [-] CC staticnested.c [-] CC ../common_arm/usb_cdc.c [-] CC ../common_arm/clocks.c [-] CC bootrom.c [-] CC version_pm3.c [=] CXX brute_key =================================================================== Version info: Iceman/master/v4.18341-152-g2bc7c5030 Client platform: Linux GUI support: QT5 found, enabled (Qt version 5.15.13 in /usr/lib64) native BT support: Bluez found, enabled Jansson library: system library not found, using local library Lua library: system library not found, using local library [=] LD obj/bootrom.elf Python3 library: Python3 v3.12 found, enabled [=] GEN obj/bootrom.s19 GD library: GD v2.3.3 found, enabled Readline library: enabled Whereami library: system library not found, using local library Lua SWIG: wrapper found Python SWIG: wrapper found compiler version: cc (GCC) 14.0.1 20240411 (Red Hat 14.0.1-0) =================================================================== [=] CXX mfd_multi_brute [=] CXX mfd_aes_brute [-] CC src/mifare/aiddesfire.c [-] CC src/aidsearch.c [-] CC src/atrs.c [-] CC src/cmdanalyse.c [=] CXX cm [=] CXX sm [-] CC src/cmdcrc.c [-] CC src/cmddata.c [-] CC src/cmdflashmem.c [-] CC src/cmdflashmemspiffs.c [-] CC src/cmdhf.c [-] CC src/cmdhf14a.c [-] CC src/cmdhf14b.c [-] CC src/cmdhf15.c [-] CC src/cmdhfcryptorf.c [=] CXX mf_nonce_brute [=] CXX mf_trace_brute [-] CC src/cmdhfepa.c [=] CXX nonce2key [-] CC src/cmdhfemrtd.c [-] CC src/cmdhffelica.c [-] CC src/cmdhffido.c [-] CC src/cmdhffudan.c [-] CC src/cmdhfgallagher.c [-] CC src/cmdhfksx6924.c [-] CC src/cmdhfcipurse.c [-] CC src/cmdhficlass.c [=] CXX mfkey32 [=] CXX mfkey32v2 [=] CXX mfkey64 [-] CC src/cmdhfict.c [=] CXX staticnested [=] CXX sma [-] CC src/cmdhflegic.c [-] CC src/cmdhfjooki.c [-] CC src/cmdhflist.c [-] CC src/cmdhflto.c [-] CC src/cmdhfmf.c [-] CC src/cmdhfmfdes.c [-] CC src/cmdhfmfhard.c [-] CC src/cmdhfmfu.c [=] CXX sma_multi [-] CC src/cmdhfmfp.c [-] CC src/cmdhfntag424.c [-] CC src/cmdhfseos.c [-] CC src/cmdhfst.c [-] CC src/cmdhfst25ta.c [-] CC src/cmdhftesla.c [-] CC src/cmdhfthinfilm.c [-] CC src/cmdhftopaz.c [-] CC src/cmdhftexkom.c [-] CC src/cmdhfvas.c [-] CC src/cmdhfxerox.c [-] CC src/cmdhw.c [-] CC src/cmdlf.c [-] CC src/cmdlfawid.c [-] CC src/cmdlfcotag.c [-] CC src/cmdlfdestron.c [-] CC src/cmdlfem.c [-] CC src/cmdlfem410x.c [-] CC src/cmdlfem4x05.c [-] CC src/cmdlfem4x50.c [-] CC src/cmdlfem4x70.c [-] CC src/cmdlffdxb.c [-] CC src/cmdlfguard.c [-] CC src/cmdlfgallagher.c [-] CC src/cmdlfhid.c [-] CC src/cmdlfhitag.c [-] CC src/cmdlfidteck.c [-] CC src/cmdlfindala.c [-] CC src/cmdlfio.c [-] CC src/cmdlfjablotron.c [-] CC src/cmdlfkeri.c [-] CC src/cmdlfmotorola.c [-] CC src/cmdlfnedap.c [-] CC src/cmdlfnexwatch.c [-] CC src/cmdlfnoralsy.c [-] CC src/cmdlfpac.c [-] CC src/cmdlfparadox.c [-] CC src/cmdlfpcf7931.c [-] CC src/cmdlfpresco.c [-] CC src/cmdlfpyramid.c [-] CC src/cmdlfsecurakey.c [-] CC src/cmdlft55xx.c [-] CC src/cmdlfti.c [-] CC src/cmdlfviking.c [-] CC src/cmdlfvisa2000.c [-] CC src/cmdlfzx8211.c [-] CC src/cmdmain.c [-] CC src/cmdnfc.c [-] CC src/cmdparser.c [-] CC src/cmdpiv.c [-] CC src/cmdscript.c [-] CC src/cmdsmartcard.c [-] CC src/cmdtrace.c [-] CC src/cmdusart.c [-] CC src/cmdwiegand.c [-] CC src/comms.c [-] CC src/crypto/asn1dump.c [-] CC src/crypto/asn1utils.c [-] CC src/crypto/libpcrypto.c [-] CC src/emv/cmdemv.c [-] CC src/emv/crypto.c [-] CC src/emv/crypto_polarssl.c [-] CC src/emv/dol.c [=] CXX fpga_compress [-] CC src/emv/emv_pk.c [-] CC src/emv/emv_pki.c [-] CC src/emv/emv_pki_priv.c [*] MAKE armsrc/all [-] CC src/emv/emv_roca.c compiler version: arm-none-eabi-gcc (Fedora 13.2.0-5.fc40) 13.2.0 [-] GEN fpga_version_info.c [-] GEN obj/fpga_all.bit.z [-] CC start.c [-] CC iso15693.c [-] CC ../common/iso15693tools.c [-] CC thinfilm.c [-] CC lfops.c [-] CC lfsampling.c [-] CC pcf7931.c [-] CC ../common/lfdemod.c [-] CC lfadc.c [-] CC ../common/lz4/lz4.c [-] CC legicrf.c [-] CC legicrfsim.c [-] CC ../common/legic_prng.c [-] CC src/emv/emv_tags.c [-] CC ../common/hitag2/hitag2_crypto.c [-] CC hitag2.c [-] CC hitagS.c [-] CC hitag2_crack.c [-] CC em4x50.c [-] CC ../common/bruteforce.c [-] CC em4x70.c [-] CC hfops.c [-] CC iso14443a.c [-] CC mifareutil.c [-] CC mifarecmd.c [-] CC epa.c [-] CC mifaresim.c [-] CC sam_mfc.c [-] CC sam_seos.c [-] CC iso14443b.c [-] CC ../common/crapto1/crypto1.c [-] CC ../common/mbedtls/des.c [-] CC desfire_crypto.c [-] CC mifaredesfire.c [-] CC ../common/mbedtls/aes.c [-] CC ../common/mbedtls/platform_util.c [-] CC iclass.c [-] CC optimized_cipherutils.c [-] CC optimized_ikeys.c [-] CC optimized_elite.c [-] CC optimized_cipher.c [-] CC sam_picopass.c [-] CC ../common/crc.c [-] CC ../common/crc16.c [-] CC src/emv/emvcore.c [-] CC ../common/crc32.c [-] CC felica.c [-] CC ../armsrc/Standalone/lf_samyrun.c [-] CC lfzx.c [-] CC appmain.c [-] CC printf.c [-] CC dbprint.c [-] CC ../common/commonutil.c [-] CC util.c [-] CC string.c [-] CC BigBuf.c [-] CC ../common_arm/ticks.c [-] CC ../common_arm/clocks.c [-] CC hfsnoop.c [-] CC ../common/generator.c [-] CC fpgaloader.c [-] CC ../common_arm/usb_cdc.c [-] CC cmd.c [-] CC fpga_version_info.c [-] GEN obj/fpga_all.o [-] CC src/emv/emvjson.c [-] CC src/emv/tlv.c [-] CC src/emv/test/crypto_test.c [-] CC src/emv/test/cryptotest.c [-] CC src/emv/test/cda_test.c [-] CC src/emv/test/dda_test.c [-] CC src/emv/test/sda_test.c [-] CC src/fido/additional_ca.c [-] CC src/fido/cose.c [-] CC src/fido/cbortools.c [-] CC src/fido/fidocore.c [-] CC src/ksx6924/ksx6924core.c [-] CC src/cipurse/cipursecore.c [-] CC src/cipurse/cipursecrypto.c [-] CC src/cipurse/cipursetest.c [-] CC src/fileutils.c [-] CC src/flash.c [-] CC ../common/generator.c [-] CC src/graph.c [-] CC src/jansson_path.c [-] CC src/iso4217.c [-] CC src/iso7816/apduinfo.c [-] CC src/iso7816/iso7816core.c [-] CC src/loclass/cipher.c [-] CC src/loclass/cipherutils.c [-] CC src/loclass/elite_crack.c [-] CC src/loclass/ikeys.c [-] CC src/mifare/lrpcrypto.c [-] CC src/mifare/desfirecrypto.c [-] CC src/mifare/desfirecore.c [-] CC src/mifare/desfiresecurechan.c [-] CC src/mifare/desfiretest.c [-] CC src/mifare/gallaghercore.c [-] CC src/mifare/mad.c [-] CC src/mifare/mfkey.c [-] CC src/mifare/mifare4.c [-] CC src/mifare/mifaredefault.c [-] CC src/mifare/mifarehost.c [-] CC src/mifare/gen4.c [-] CC src/nfc/ndef.c [-] CC src/pm3.c [-] CC src/pm3_binlib.c [-] CC src/pm3_bitlib.c [-] CC src/preferences.c [-] CHECK version_pm3.c [-] CC version_pm3.c [-] CC src/pm3line.c [=] LD obj/fullimage.stage1.elf [-] GEN obj/fullimage.data.bin [-] GEN obj/fullimage.data.bin.z [=] LD obj/fullimage.elf [=] GEN obj/fullimage.s19 [*] MAKE recovery/all [-] CC src/proxmark3.c [=] GEN bootrom.bin [=] GEN fullimage.bin [=] GEN proxmark3_recovery.bin [-] CC src/scandir.c [-] CC src/uart/ringbuffer.c [-] CC src/uart/uart_common.c [-] CC src/uart/uart_posix.c [-] CC src/uart/uart_win32.c [-] CC src/scripting.c [-] CC src/ui.c [-] CC src/util.c [=] CHECK src/version_pm3.c [-] CC src/wiegand_formats.c [-] CC src/wiegand_formatutils.c [-] CC ../common/bucketsort.c [-] CC ../common/bruteforce.c [-] CC ../common/cardhelper.c [-] CC ../common/crapto1/crapto1.c [-] CC ../common/crapto1/crypto1.c [-] CC ../common/crc.c [-] CC ../common/crc16.c [-] CC ../common/crc32.c [-] CC ../common/crc64.c [-] CC ../common/commonutil.c [-] CC ../common/hitag2/hitag2_crypto.c [-] CC ../common/iso15693tools.c [-] CC ../common/legic_prng.c [-] CC ../common/lfdemod.c [-] CC ../common/util_posix.c [-] CC src/imgutils.c [-] CC src/cmdhfwaveshare.c [-] CC src/pm3_luawrap.c [-] CC src/pm3_pywrap.c [-] UIC src/ui/ui_overlays.h [-] UIC src/ui/ui_image.h [*] MAKE deps/amiitool/libamiibo.a [*] MAKE deps/cliparser/libcliparser.a [*] MAKE deps/hardnested/libhardnested.a [*] MAKE deps/id48/libid48.a [*] MAKE deps/liblua/liblua.a for linux [*] MAKE deps/jansson/libjansson.a [*] MAKE obj/libmbedtls.a [*] MAKE deps/reveng/libreveng.a [*] MAKE deps/tinycbor/tinycbor.a [*] MAKE deps/whereami/libwhereami.a [=] GEN lualibs/pm3_cmd.lua [=] GEN lualibs/mfc_default_keys.lua [-] CC src/version_pm3.c PLATFORM Linux [-] CC id48_data.c [-] CC amiibo.c [-] CC id48_generator.c [-] CC dump.c [-] CC drbg.c [-] CC id48_recover.c [-] CC argtable3.c [-] CC cliparser.c [-] CC keygen.c [-] CC error.c [-] CC bmpbit.c [=] TEST bmptst [-] CC hashtable.c [-] CC hashtable_seed.c [-] CC bmpbit.c [-] CC load.c [-] CC cli.c [-] CC memory.c [-] CC aes.c [-] CC model.c [-] CC pack_unpack.c [-] CC poly.c [-] CC strbuffer.c [-] CC preset.c [-] CC strconv.c [-] CC asn1parse.c [-] CC utf.c [-] CC whereami.c [-] CC value.c [-] CC reveng.c [-] CC asn1write.c [-] CC cborencoder.c [-] CC base64.c [-] CC bignum.c [-] CC ctr_drbg.c [-] CC cborencoder_close_container_checked.c [-] CC lapi.c [-] CC(NOSIMD) hardnested_bf_core.c [-] CC entropy_poll.c [-] CC(NOSIMD) hardnested_bitarray_core.c [-] CC(MMX) hardnested_bf_core.c [-] CC entropy.c [-] CC cborerrorstrings.c [-] CC error.c [-] CC cborparser.c [-] CC ecp.c [-] CC cborparser_dup_string.c [-] CC lcode.c [-] CC cborpretty.c [-] CC ecp_curves.c [-] CC lctype.c [-] CC certs.c [-] CC cbortojson.c [-] CC(MMX) hardnested_bitarray_core.c [-] CC(SSE2) hardnested_bf_core.c [-] CC camellia.c [-] CC cborvalidation.c [-] CC ldebug.c [-] CC blowfish.c [-] CC(SSE2) hardnested_bitarray_core.c [-] CC(AVX) hardnested_bf_core.c [-] CC ldo.c [-] CC cipher_wrap.c [-] CC(AVX) hardnested_bitarray_core.c [-] CC(AVX2) hardnested_bf_core.c [-] CC cipher.c [-] CC ldump.c [-] CC lfunc.c [-] CC cmac.c [-] CC lgc.c [-] CC des.c [-] CC(AVX2) hardnested_bitarray_core.c [-] CC llex.c [-] CC(AVX512) hardnested_bf_core.c [-] CC ecc_point_compression.c [-] CC lmem.c [-] CC ecdh.c [-] CC lobject.c [-] CC lopcodes.c [-] CC ecdsa.c [-] CC gcm.c [-] CC lparser.c [-] CC(AVX512) hardnested_bitarray_core.c [-] CC lstate.c [-] CC md.c [-] CC md5.c [-] CC lstring.c [-] CC hardnested_bruteforce.c [-] CC ltable.c [-] CC oid.c [-] CC ltm.c [-] CC pem.c [-] CC arc4.c [-] CC pk.c [-] CC lundump.c [-] CC pk_wrap.c [=] AR libwhereami.a [-] CC lvm.c [-] CC pkwrite.c [-] CC lzio.c [-] CC lauxlib.c [-] CXX src/proxgui.cpp [-] CC lbaselib.c [-] CC pkcs5.c [-] CC pkcs12.c [-] CC lbitlib.c [-] CC pkparse.c [-] CC lcorolib.c [-] CC ldblib.c [-] CC platform.c [-] CC liolib.c [-] CC lmathlib.c [-] CC platform_util.c [-] CC loslib.c [-] CC lstrlib.c [-] CC ltablib.c [-] CC loadlib.c [-] CC rsa.c [-] CC linit.c [-] CC rsa_internal.c [-] CC sha1.c [-] CC sha256.c [-] CC sha512.c [-] CC threading.c [=] AR libamiibo.a [-] CC x509.c [-] CC x509_crl.c [-] CC x509_crt.c [-] CC net_sockets.c [-] CXX src/proxguiqt.cpp [-] MOC src/proxguiqt.moc.cpp [-] CXX src/proxguiqt.moc.cpp [=] AR libid48.a [=] AR libhardnested.a In file included from /usr/include/qt5/QtCore/qfuture.h:45, from /usr/include/qt5/QtCore/QtCore:97, from /usr/include/qt5/QtGui/QtGuiDepends:3, from /usr/include/qt5/QtGui/QtGui:3, from src/proxguiqt.h:30, from src/proxguiqt.cpp:19: /usr/include/qt5/QtCore/qfutureinterface.h:284:37: error: template-id not allowed for constructor in C++20 [-Werror=template-id-cdtor] 284 | explicit QFutureInterface