proxmark3 icon indicating copy to clipboard operation
proxmark3 copied to clipboard

Build error: C++20 -Werror=template-id-cdtor in proxguiqt.cpp

Open AstreaeLuna opened this issue 9 months ago • 18 comments

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:

  1. Download git repo on Fedora 40
  2. Install all required dependancies
  3. Run make -j all
  4. Build fails due to
/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<void>(State initialState = NoState)
      |                                     ^~~~~
/usr/include/qt5/QtCore/qfutureinterface.h:284:37: note: remove the ‘< >’

Expected behavior The build should succeed.

Desktop (please complete the following information):

  • OS: Linux - Fedora 40

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.h

This 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<void>(State initialState = NoState)
      |                                     ^~~~~
/usr/include/qt5/QtCore/qfutureinterface.h:284:37: note: remove the ‘< >’
[=] AR libjansson.a
[=] AR tinycbor.a
[=] AR liblua.a
[=] AR libreveng.a
[=] AR libcliparser.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/proxgui.cpp:22:
/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<void>(State initialState = NoState)
      |                                     ^~~~~
/usr/include/qt5/QtCore/qfutureinterface.h:284:37: note: remove the ‘< >’
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.moc.cpp:10:
/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<void>(State initialState = NoState)
      |                                     ^~~~~
/usr/include/qt5/QtCore/qfutureinterface.h:284:37: note: remove the ‘< >’
[=] AR libmbedtls.a
cc1plus: all warnings being treated as errors
make[1]: *** [Makefile:1004: obj/proxguiqt.o] Error 1
make[1]: *** Waiting for unfinished jobs....
cc1plus: all warnings being treated as errors
make[1]: *** [Makefile:1004: obj/proxgui.o] Error 1
cc1plus: all warnings being treated as errors
make[1]: *** [Makefile:1004: obj/proxguiqt.moc.o] Error 1
make: *** [Makefile:177: client/all] Error 2

AstreaeLuna avatar May 06 '24 19:05 AstreaeLuna

same error on Arch, try to checkout the latest release tag then compile as usual. git checkout tags/v4.18341

wh00hw avatar May 10 '24 22:05 wh00hw

This sounds more of a QT5 change than anything that we do

iceman1001 avatar May 12 '24 15:05 iceman1001

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.

ikarus23 avatar May 13 '24 19:05 ikarus23

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 avatar May 14 '24 06:05 iceman1001

@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?

AstreaeLuna avatar May 14 '24 15:05 AstreaeLuna

you will need to modify the Makefiles / Cmakefile to use QT6 instead.

iceman1001 avatar May 14 '24 15:05 iceman1001

Should I close this issue since it's a Qt problem or leave it open?

AstreaeLuna avatar May 14 '24 16:05 AstreaeLuna

keep it open until you got some more answers.

iceman1001 avatar May 14 '24 16:05 iceman1001

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)

sh7d avatar May 15 '24 20:05 sh7d

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.

https://bugzilla.redhat.com/show_bug.cgi?id=2280366

AstreaeLuna avatar May 16 '24 15:05 AstreaeLuna

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

doegox avatar May 29 '24 03:05 doegox

I simply replaced "CONFIG += c++17" with "CONFIG += c++20" in the project file. And also added this: "DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000"

GladiatorX2016 avatar Jul 23 '24 08:07 GladiatorX2016

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?

iceman1001 avatar Jul 24 '24 13:07 iceman1001

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.

virtadpt avatar Sep 15 '24 00:09 virtadpt

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?

iceman1001 avatar Sep 15 '24 09:09 iceman1001

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).

virtadpt avatar Sep 16 '24 02:09 virtadpt

We have the following solutions:

  • @doegox patch the QT file qfutureinterface.h
  • @GladiatorX2016 patch the makefile CONFIG += c++20
  • @sh7d suppress the message and the snprint issue which is something else

iceman1001 avatar Sep 16 '24 08:09 iceman1001

I'll give them a try tonight, and if they work on my end I'll let the AUR package maintainer know.

virtadpt avatar Sep 16 '24 18:09 virtadpt