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

Qt5-5.8.0 - Pointer to incomplete class type is not allowed #7108

Closed
vanzod opened this issue Nov 1, 2018 · 4 comments
Closed

Qt5-5.8.0 - Pointer to incomplete class type is not allowed #7108

vanzod opened this issue Nov 1, 2018 · 4 comments
Milestone

Comments

@vanzod
Copy link
Member

vanzod commented Nov 1, 2018

Building Qt5-5.8.0-intel-2017b on a system with OpenSSL 1.1.0f fails with the following error:

icpc -c -pch-use .pch/Qt5Network.pchi -include ../corelib/global/qt_pch.h -O2 -falign-functions=16 -ansi-alias -fstrict-aliasing -std=c++1y -fvisibility=hidden -fvisibility-inlines-hidden -w1 -Wall -Wcheck -wd1572,873,2259,2261,3373 -D_REENTRANT -D_REENTRANT -D_REENTRANT -fPIC -DQT_NO_USING_NAMESPACE -DQT_NO_FOREACH -DQT_USE_SYSTEM_PROXIES -DQT_BUILD_NETWORK_LIB -DQT_BUILDING_QT -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x050000 -DQT_NO_EXCEPTIONS -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_NO_DEBUG -DQT_CORE_LIB -I. -Ikernel -I../../include -I../../include/QtNetwork -I../../include/QtNetwork/5.8.0 -I../../include/QtNetwork/5.8.0/QtNetwork -I../../include/QtCore/5.8.0 -I../../include/QtCore/5.8.0/QtCore -I../../include/QtCore -I.moc -I../../mkspecs/linux-icc-64 -o .obj/qsslcertificate_openssl.o ssl/qsslcertificate_openssl.cpp
"ssl/qsslcertificate_openssl.cpp": using precompiled header file ".pch/Qt5Network.pchi"
ssl/qsslcertificate_openssl.cpp(69): error: pointer to incomplete class type is not allowed
          return qHashBits(x509->sha1_hash, SHA_DIGEST_LENGTH, seed);
                           ^

ssl/qsslcertificate_openssl.cpp(93): error: pointer to incomplete class type is not allowed
              QByteArray::number(qlonglong(q_ASN1_INTEGER_get(d->x509->cert_info->version)) + 1);
                                                              ^

ssl/qsslcertificate_openssl.cpp(102): error: pointer to incomplete class type is not allowed
          ASN1_INTEGER *serialNumber = d->x509->cert_info->serialNumber;
                                       ^

ssl/qsslcertificate_openssl.cpp(238): error: pointer to incomplete class type is not allowed
      X509_PUBKEY *xkey = d->x509->cert_info->key;
                          ^

ssl/qsslcertificate_openssl.cpp(242): error: pointer to incomplete class type is not allowed
      if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_RSA) {
                          ^

ssl/qsslcertificate_openssl.cpp(246): error: pointer to incomplete class type is not allowed
      } else if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_DSA) {
                                 ^

ssl/qsslcertificate_openssl.cpp(251): error: pointer to incomplete class type is not allowed
      } else if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_EC) {
                                 ^

ssl/qsslcertificate_openssl.cpp(256): error: pointer to incomplete class type is not allowed
      } else if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_DH) {
                                 ^

compilation aborted for ssl/qsslcertificate_openssl.cpp (code 2)
@boegel
Copy link
Member

boegel commented Nov 2, 2018

@vanzod Same problem as
#6644?

Also relevant:
#6759

@vanzod
Copy link
Member Author

vanzod commented Nov 2, 2018

@boegel The root cause is the same: OpenSSL 1.1 not being backward compatible. Here are a couple of Qt bug reports regarding this issue:
https://bugreports.qt.io/browse/QTBUG-52905
https://bugreports.qt.io/browse/QTBUG-51553

There is no official patch for version 5.8.0, but OpenSSL 1.1 is fully supported from Qt 5.10.
In the meantime the workaround on Debian is to install libssl1.0-dev and skip OS dependency checks. Not a clean solution but it puts me back on track.

@boegel boegel added this to the 3.x milestone Nov 3, 2018
@boegel
Copy link
Member

boegel commented Nov 3, 2018

@vanzod In the long run, we can reconsider our current approach to OpenSSL, and let EasyBuild install it as a dependency rather than relying on the OS.

The support we now have for module wrappers makes this feasible, but of course it'll be important that we're on top of things w.r.t. security updates (and maybe we should make it opt-in)...

@boegel boegel modified the milestones: 3.x, 4.x Feb 20, 2020
@Micket
Copy link
Contributor

Micket commented Mar 22, 2024

I think this is no longer an issue with more uptodate qt5's, and our OpenSSL wrapper is good like it is i think. Closing.

@Micket Micket closed this as completed Mar 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants