Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
AstreaeLuna opened this issue May 6, 2024 · 19 comments
Open

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

AstreaeLuna opened this issue May 6, 2024 · 19 comments

Comments

@AstreaeLuna
Copy link

AstreaeLuna commented May 6, 2024

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
@wh00hw
Copy link

wh00hw commented May 10, 2024

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

@iceman1001
Copy link
Collaborator

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

@ikarus23
Copy link
Contributor

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.

@iceman1001
Copy link
Collaborator

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?

@AstreaeLuna
Copy link
Author

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

@iceman1001
Copy link
Collaborator

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

@AstreaeLuna
Copy link
Author

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

@iceman1001
Copy link
Collaborator

keep it open until you got some more answers.

@sh7d
Copy link
Contributor

sh7d commented May 15, 2024

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)

@AstreaeLuna
Copy link
Author

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

@doegox
Copy link
Contributor

doegox commented May 29, 2024

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

@GladiatorX2016
Copy link

GladiatorX2016 commented Jul 23, 2024

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

@iceman1001
Copy link
Collaborator

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?

@virtadpt
Copy link

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.

@iceman1001
Copy link
Collaborator

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?

@virtadpt
Copy link

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

@iceman1001
Copy link
Collaborator

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

@virtadpt
Copy link

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

@doegox
Copy link
Contributor

doegox commented Nov 26, 2024

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants