I downloaded and installed the beta 4 Tar from this site and tried to build the latest qBittorrent (4.3.4.1) on my Pi 4 (Raspbian buster) and got a couple of errors:
`============ PuTTY log 2021.04.11 10:00:51 ============
make -j$(nproc)
cd src/ && ( test -e Makefile || /usr/local/Qt-5.15.2/bin/qmake -o Makefile /root/build/qBittorrent-release-4.3.4.1/src/src.pro QMAKE_LRELEASE= ) && make -f Makefile
make[1]: Entering directory '/root/build/qBittorrent-release-4.3.4.1/src'
compiling base/bittorrent/tracker.cpp
compiling base/http/responsebuilder.cpp
compiling base/http/responsegenerator.cpp
compiling base/http/server.cpp
In file included from base/http/server.cpp:31:
base/http/server.h:66:17: error: field m_key has incomplete type QSslKey
QSslKey m_key;
^~~~~
In file included from /usr/local/Qt-5.15.2/include/QtNetwork/QSslCertificate:1,
from base/http/server.h:34,
from base/http/server.cpp:31:
/usr/local/Qt-5.15.2/include/QtNetwork/qsslcertificate.h:63:7: note: forward declaration of class QSslKey
class QSslKey;
^~~~~~~
base/http/server.cpp:52:11: error: QSslCipher was not declared in this scope
QList safeCipherList()
^~~~~~~~~~
base/http/server.cpp:52:11: note: suggested alternative: QSslKey
QList safeCipherList()
^~~~~~~~~~
QSslKey
base/http/server.cpp:52:21: error: template argument 1 is invalid
QList safeCipherList()
^
base/http/server.cpp: In function int {anonymous}::safeCipherList():
base/http/server.cpp:55:21: error: QSslCipher was not declared in this scope
const QList allCiphers {QSslConfiguration::supportedCiphers()};
^~~~~~~~~~
base/http/server.cpp:55:21: note: suggested alternative: badCiphers
const QList allCiphers {QSslConfiguration::supportedCiphers()};
^~~~~~~~~~
badCiphers
base/http/server.cpp:55:31: error: template argument 1 is invalid
const QList allCiphers {QSslConfiguration::supportedCiphers()};
^
base/http/server.cpp:55:64: error: incomplete type QSslConfiguration used in nested name specifier
const QList allCiphers {QSslConfiguration::supportedCiphers()};
^~~~~~~~~~~~~~~~
base/http/server.cpp:56:25: error: type/value mismatch at argument 1 in template parameter list for template class QList
QList safeCiphers;
^
base/http/server.cpp:56:25: note: expected a type, got QSslCipher
base/http/server.cpp:57:33: error: request for member cbegin in allCiphers, which is of non-class type const int
std::copy_if(allCiphers.cbegin(), allCiphers.cend(), std::back_inserter(safeCiphers), [&badCiphers](const QSslCipher &cipher)
^~~~~~
base/http/server.cpp:57:54: error: request for member cend in allCiphers, which is of non-class type const int
std::copy_if(allCiphers.cbegin(), allCiphers.cend(), std::back_inserter(safeCiphers), [&badCiphers](const QSslCipher &cipher)
^~~~
In file included from /usr/include/c++/8/bits/stl_algobase.h:67,
from /usr/include/c++/8/algorithm:61,
from /usr/local/Qt-5.15.2/include/QtCore/qglobal.h:142,
from /usr/local/Qt-5.15.2/include/QtCore/qchar.h:43,
from /usr/local/Qt-5.15.2/include/QtCore/qhash.h:44,
from /usr/local/Qt-5.15.2/include/QtCore/qset.h:43,
from /usr/local/Qt-5.15.2/include/QtCore/QSet:1,
from base/http/server.h:33,
from base/http/server.cpp:31:
/usr/include/c++/8/bits/stl_iterator.h: In instantiation of class std::back_insert_iterator:
base/http/server.cpp:57:92: required from here
/usr/include/c++/8/bits/stl_iterator.h:490:7: error: int is not a class, struct, or union type
operator=(const typename _Container::value_type& __value)
^~~~~~~~
/usr/include/c++/8/bits/stl_iterator.h:497:7: error: int is not a class, struct, or union type
operator=(typename _Container::value_type&& __value)
^~~~~~~~
base/http/server.cpp:57:115: error: QSslCipher does not name a type; did you mean allCiphers?
std::copy_if(allCiphers.cbegin(), allCiphers.cend(), std::back_inserter(safeCiphers), [&badCiphers](const QSslCipher &cipher)
^~~~~~~~~~
allCiphers
base/http/server.cpp: In lambda function:
base/http/server.cpp:63:11: error: expected { before ; token
});
^
base/http/server.cpp: In function int {anonymous}::safeCipherList():
base/http/server.cpp:63:11: error: expected ) before ; token
});
^
)
base/http/server.cpp:57:21: note: to match this (
std::copy_if(allCiphers.cbegin(), allCiphers.cend(), std::back_inserter(safeCiphers), [&badCiphers](const QSslCipher &cipher)
^
base/http/server.cpp: In constructor Http::Server::Server(Http::IRequestHandler*, QObject*):
base/http/server.cpp:77:23: error: variable QSslConfiguration sslConf has initializer but incomplete type
QSslConfiguration sslConf {QSslConfiguration::defaultConfiguration()};
^~~~~~~
base/http/server.cpp:77:51: error: incomplete type QSslConfiguration used in nested name specifier
QSslConfiguration sslConf {QSslConfiguration::defaultConfiguration()};
^~~~~~~~~~~~~~~~~~~~
base/http/server.cpp:79:24: error: incomplete type QSslConfiguration used in nested name specifier
QSslConfiguration::setDefaultConfiguration(sslConf);
^~~~~~~~~~~~~~~~~~~~~~~
base/http/server.cpp: In member function virtual void Http::Server::incomingConnection(qintptr):
base/http/server.cpp:92:28: error: expected type-specifier before QSslSocket
serverSocket = new QSslSocket(this);
^~~~~~~~~~
base/http/server.cpp:94:43: error: invalid use of incomplete type class QTcpSocket
serverSocket = new QTcpSocket(this);
^
In file included from /usr/local/Qt-5.15.2/include/QtNetwork/QTcpServer:1,
from base/http/server.h:36,
from base/http/server.cpp:31:
/usr/local/Qt-5.15.2/include/QtNetwork/qtcpserver.h:55:7: note: forward declaration of class QTcpSocket
class QTcpSocket;
^~~~~~~~~~
base/http/server.cpp:96:22: error: invalid use of incomplete type class QTcpSocket
if (!serverSocket->setSocketDescriptor(socketDescriptor))
^~
In file included from /usr/local/Qt-5.15.2/include/QtNetwork/QTcpServer:1,
from base/http/server.h:36,
from base/http/server.cpp:31:
/usr/local/Qt-5.15.2/include/QtNetwork/qtcpserver.h:55:7: note: forward declaration of class QTcpSocket
class QTcpSocket;
^~~~~~~~~~
base/http/server.cpp:98:16: warning: possible problem detected in invocation of delete operator: [-Wdelete-incomplete]
delete serverSocket;
^~~~~~~~~~~~
base/http/server.cpp:90:17: warning: serverSocket has incomplete type
QTcpSocket *serverSocket;
^~~~~~~~~~~~
In file included from /usr/local/Qt-5.15.2/include/QtNetwork/QTcpServer:1,
from base/http/server.h:36,
from base/http/server.cpp:31:
/usr/local/Qt-5.15.2/include/QtNetwork/qtcpserver.h:55:7: note: forward declaration of class QTcpSocket
class QTcpSocket;
^~~~~~~~~~
base/http/server.cpp:98:16: note: neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined
delete serverSocket;
^~~~~~~~~~~~
base/http/server.cpp:104:21: error: QSslSocket does not name a type; did you mean QTcpSocket?
static_cast<QSslSocket *>(serverSocket)->setProtocol(QSsl::SecureProtocols);
^~~~~~~~~~
QTcpSocket
base/http/server.cpp:104:32: error: expected > before * token
static_cast<QSslSocket *>(serverSocket)->setProtocol(QSsl::SecureProtocols);
^
base/http/server.cpp:104:32: error: expected ( before * token
static_cast<QSslSocket *>(serverSocket)->setProtocol(QSsl::SecureProtocols);
^
(
base/http/server.cpp:104:33: error: expected primary-expression before > token
static_cast<QSslSocket *>(serverSocket)->setProtocol(QSsl::SecureProtocols);
^
base/http/server.cpp:104:48: error: invalid use of incomplete type class QTcpSocket
static_cast<QSslSocket *>(serverSocket)->setProtocol(QSsl::SecureProtocols);
^~
In file included from /usr/local/Qt-5.15.2/include/QtNetwork/QTcpServer:1,
from base/http/server.h:36,
from base/http/server.cpp:31:
/usr/local/Qt-5.15.2/include/QtNetwork/qtcpserver.h:55:7: note: forward declaration of class QTcpSocket
class QTcpSocket;
^~~~~~~~~~
base/http/server.cpp:104:84: error: expected ) before ; token
static_cast<QSslSocket *>(serverSocket)->setProtocol(QSsl::SecureProtocols);
^
)
base/http/server.cpp:105:21: error: QSslSocket does not name a type; did you mean QTcpSocket?
static_cast<QSslSocket *>(serverSocket)->setPrivateKey(m_key);
^~~~~~~~~~
QTcpSocket
base/http/server.cpp:105:32: error: expected > before * token
static_cast<QSslSocket >(serverSocket)->setPrivateKey(m_key);
^
base/http/server.cpp:105:32: error: expected ( before * token
static_cast<QSslSocket >(serverSocket)->setPrivateKey(m_key);
^
(
base/http/server.cpp:105:33: error: expected primary-expression before > token
static_cast<QSslSocket >(serverSocket)->setPrivateKey(m_key);
^
base/http/server.cpp:105:48: error: invalid use of incomplete type class QTcpSocket
static_cast<QSslSocket >(serverSocket)->setPrivateKey(m_key);
^~
In file included from /usr/local/Qt-5.15.2/include/QtNetwork/QTcpServer:1,
from base/http/server.h:36,
from base/http/server.cpp:31:
/usr/local/Qt-5.15.2/include/QtNetwork/qtcpserver.h:55:7: note: forward declaration of class QTcpSocket
class QTcpSocket;
^~~~~~~~~~
base/http/server.cpp:105:70: error: expected ) before ; token
static_cast<QSslSocket >(serverSocket)->setPrivateKey(m_key);
^
)
base/http/server.cpp:106:21: error: QSslSocket does not name a type; did you mean QTcpSocket?
static_cast<QSslSocket >(serverSocket)->setLocalCertificateChain(m_certificates);
^~~~~~~~~~
QTcpSocket
base/http/server.cpp:106:32: error: expected > before * token
static_cast<QSslSocket >(serverSocket)->setLocalCertificateChain(m_certificates);
^
base/http/server.cpp:106:32: error: expected ( before * token
static_cast<QSslSocket >(serverSocket)->setLocalCertificateChain(m_certificates);
^
(
base/http/server.cpp:106:33: error: expected primary-expression before > token
static_cast<QSslSocket >(serverSocket)->setLocalCertificateChain(m_certificates);
^
base/http/server.cpp:106:48: error: invalid use of incomplete type class QTcpSocket
static_cast<QSslSocket >(serverSocket)->setLocalCertificateChain(m_certificates);
^~
In file included from /usr/local/Qt-5.15.2/include/QtNetwork/QTcpServer:1,
from base/http/server.h:36,
from base/http/server.cpp:31:
/usr/local/Qt-5.15.2/include/QtNetwork/qtcpserver.h:55:7: note: forward declaration of class QTcpSocket
class QTcpSocket;
^~~~~~~~~~
base/http/server.cpp:106:90: error: expected ) before ; token
static_cast<QSslSocket >(serverSocket)->setLocalCertificateChain(m_certificates);
^
)
base/http/server.cpp:107:21: error: QSslSocket does not name a type; did you mean QTcpSocket?
static_cast<QSslSocket >(serverSocket)->setPeerVerifyMode(QSslSocket::VerifyNone);
^~~~~~~~~~
QTcpSocket
base/http/server.cpp:107:32: error: expected > before * token
static_cast<QSslSocket >(serverSocket)->setPeerVerifyMode(QSslSocket::VerifyNone);
^
base/http/server.cpp:107:32: error: expected ( before * token
static_cast<QSslSocket >(serverSocket)->setPeerVerifyMode(QSslSocket::VerifyNone);
^
(
base/http/server.cpp:107:33: error: expected primary-expression before > token
static_cast<QSslSocket >(serverSocket)->setPeerVerifyMode(QSslSocket::VerifyNone);
^
base/http/server.cpp:107:48: error: invalid use of incomplete type class QTcpSocket
static_cast<QSslSocket >(serverSocket)->setPeerVerifyMode(QSslSocket::VerifyNone);
^~
In file included from /usr/local/Qt-5.15.2/include/QtNetwork/QTcpServer:1,
from base/http/server.h:36,
from base/http/server.cpp:31:
/usr/local/Qt-5.15.2/include/QtNetwork/qtcpserver.h:55:7: note: forward declaration of class QTcpSocket
class QTcpSocket;
^~~~~~~~~~
base/http/server.cpp:107:68: error: QSslSocket has not been declared
static_cast<QSslSocket >(serverSocket)->setPeerVerifyMode(QSslSocket::VerifyNone);
^~~~~~~~~~
base/http/server.cpp:107:91: error: expected ) before ; token
static_cast<QSslSocket >(serverSocket)->setPeerVerifyMode(QSslSocket::VerifyNone);
^
)
base/http/server.cpp:108:21: error: QSslSocket does not name a type; did you mean QTcpSocket?
static_cast<QSslSocket >(serverSocket)->startServerEncryption();
^~~~~~~~~~
QTcpSocket
base/http/server.cpp:108:32: error: expected > before * token
static_cast<QSslSocket >(serverSocket)->startServerEncryption();
^
base/http/server.cpp:108:32: error: expected ( before * token
static_cast<QSslSocket >(serverSocket)->startServerEncryption();
^
(
base/http/server.cpp:108:33: error: expected primary-expression before > token
static_cast<QSslSocket >(serverSocket)->startServerEncryption();
^
base/http/server.cpp:108:48: error: invalid use of incomplete type class QTcpSocket
static_cast<QSslSocket >(serverSocket)->startServerEncryption();
^~
In file included from /usr/local/Qt-5.15.2/include/QtNetwork/QTcpServer:1,
from base/http/server.h:36,
from base/http/server.cpp:31:
/usr/local/Qt-5.15.2/include/QtNetwork/qtcpserver.h:55:7: note: forward declaration of class QTcpSocket
class QTcpSocket;
^~~~~~~~~~
base/http/server.cpp:108:73: error: expected ) before ; token
static_cast<QSslSocket >(serverSocket)->startServerEncryption();
^
)
base/http/server.cpp:113:101: error: no matching function for call to Http::Server::connect(QTcpSocket&, void (QAbstractSocket::)(), Http::Server, Http::Server::incomingConnection(qintptr)::<lambda()>)
connect(serverSocket, &QAbstractSocket::disconnected, this, c, this { removeConnection(c); });
^
In file included from /usr/local/Qt-5.15.2/include/QtCore/qsharedpointer_impl.h:65,
from /usr/local/Qt-5.15.2/include/QtCore/qsharedpointer.h:48,
from /usr/local/Qt-5.15.2/include/QtNetwork/qsslcertificate.h:54,
from /usr/local/Qt-5.15.2/include/QtNetwork/QSslCertificate:1,
from base/http/server.h:34,
from base/http/server.cpp:31:
/usr/local/Qt-5.15.2/include/QtCore/qobject.h:222:36: note: candidate: static QMetaObject::Connection QObject::connect(const QObject, const char, const QObject, const char, Qt::ConnectionType)
static QMetaObject::Connection connect(const QObject sender, const char signal,
^~~~~~~
/usr/local/Qt-5.15.2/include/QtCore/qobject.h:222:36: note: no known conversion for argument 1 from QTcpSocket to const QObject
/usr/local/Qt-5.15.2/include/QtCore/qobject.h:225:36: note: candidate: static QMetaObject::Connection QObject::connect(const QObject, const QMetaMethod&, const QObject, const QMetaMethod&, Qt::ConnectionType)
static QMetaObject::Connection connect(const QObject sender, const QMetaMethod &signal,
^~~~~~~
/usr/local/Qt-5.15.2/include/QtCore/qobject.h:225:36: note: no known conversion for argument 1 from QTcpSocket to const QObject
/usr/local/Qt-5.15.2/include/QtCore/qobject.h:481:32: note: candidate: QMetaObject::Connection QObject::connect(const QObject, const char, const char, Qt::ConnectionType) const
inline QMetaObject::Connection QObject::connect(const QObject asender, const char asignal,
^~~~~~~
/usr/local/Qt-5.15.2/include/QtCore/qobject.h:481:32: note: no known conversion for argument 1 from QTcpSocket to const QObject
/usr/local/Qt-5.15.2/include/QtCore/qobject.h:242:43: note: candidate: template<class Func1, class Func2> static QMetaObject::Connection QObject::connect(const typename QtPrivate::FunctionPointer::Object, Func1, const typename QtPrivate::FunctionPointer::Object, Func2, Qt::ConnectionType)
static inline QMetaObject::Connection connect(const typename QtPrivate::FunctionPointer::Object sender, Func1 signal,
^~~~~~~
/usr/local/Qt-5.15.2/include/QtCore/qobject.h:242:43: note: template argument deduction/substitution failed:
/usr/local/Qt-5.15.2/include/QtCore/qobject.h: In substitution of template<class Func1, class Func2> static QMetaObject::Connection QObject::connect(const typename QtPrivate::FunctionPointer::Object, Func1, const typename QtPrivate::FunctionPointer::Object, Func2, Qt::ConnectionType) [with Func1 = void (QAbstractSocket::)(); Func2 = Http::Server::incomingConnection(qintptr)::<lambda()>]:
base/http/server.cpp:113:101: required from here
/usr/local/Qt-5.15.2/include/QtCore/qobject.h:242:43: error: no type named Object in struct QtPrivate::FunctionPointer<Http::Server::incomingConnection(qintptr)::<lambda()> >
/usr/local/Qt-5.15.2/include/QtCore/qobject.h:274:13: note: candidate: template<class Func1, class Func2> static typename std::enable_if<((int)(QtPrivate::FunctionPointer::ArgumentCount) >= 0), QMetaObject::Connection>::type QObject::connect(const typename QtPrivate::FunctionPointer::Object, Func1, Func2)
connect(const typename QtPrivate::FunctionPointer::Object sender, Func1 signal, Func2 slot)
^~~~~~~
/usr/local/Qt-5.15.2/include/QtCore/qobject.h:274:13: note: template argument deduction/substitution failed:
base/http/server.cpp:113:101: note: candidate expects 3 arguments, 4 provided
connect(serverSocket, &QAbstractSocket::disconnected, this, c, this { removeConnection(c); });
^
In file included from /usr/local/Qt-5.15.2/include/QtCore/qsharedpointer_impl.h:65,
from /usr/local/Qt-5.15.2/include/QtCore/qsharedpointer.h:48,
from /usr/local/Qt-5.15.2/include/QtNetwork/qsslcertificate.h:54,
from /usr/local/Qt-5.15.2/include/QtNetwork/QSslCertificate:1,
from base/http/server.h:34,
from base/http/server.cpp:31:
/usr/local/Qt-5.15.2/include/QtCore/qobject.h:283:13: note: candidate: template<class Func1, class Func2> static typename std::enable_if<(((int)(QtPrivate::FunctionPointer::ArgumentCount) >= 0) && (! QtPrivate::FunctionPointer::IsPointerToMemberFunction)), QMetaObject::Connection>::type QObject::connect(const typename QtPrivate::FunctionPointer::Object, Func1, const QObject, Func2, Qt::ConnectionType)
connect(const typename QtPrivate::FunctionPointer::Object sender, Func1 signal, const QObject context, Func2 slot,
^~~~~~~
/usr/local/Qt-5.15.2/include/QtCore/qobject.h:283:13: note: template argument deduction/substitution failed:
/usr/local/Qt-5.15.2/include/QtCore/qobject.h: In substitution of template<class Func1, class Func2> static typename std::enable_if<(((int)(QtPrivate::FunctionPointer::ArgumentCount) >= 0) && (! QtPrivate::FunctionPointer::IsPointerToMemberFunction)), QMetaObject::Connection>::type QObject::connect(const typename QtPrivate::FunctionPointer::Object, Func1, const QObject, Func2, Qt::ConnectionType) [with Func1 = void (QAbstractSocket::)(); Func2 = Http::Server::incomingConnection(qintptr)::<lambda()>]:
base/http/server.cpp:113:101: required from here
/usr/local/Qt-5.15.2/include/QtCore/qobject.h:283:13: error: no type named type in struct std::enable_if<false, QMetaObject::Connection>
/usr/local/Qt-5.15.2/include/QtCore/qobject.h:314:13: note: candidate: template<class Func1, class Func2> static typename std::enable_if<(QtPrivate::FunctionPointer::ArgumentCount == -1), QMetaObject::Connection>::type QObject::connect(const typename QtPrivate::FunctionPointer::Object, Func1, Func2)
connect(const typename QtPrivate::FunctionPointer::Object sender, Func1 signal, Func2 slot)
^~~~~~~
/usr/local/Qt-5.15.2/include/QtCore/qobject.h:314:13: note: template argument deduction/substitution failed:
base/http/server.cpp:113:101: note: candidate expects 3 arguments, 4 provided
connect(serverSocket, &QAbstractSocket::disconnected, this, c, this { removeConnection(c); });
^
In file included from /usr/local/Qt-5.15.2/include/QtCore/qsharedpointer_impl.h:65,
from /usr/local/Qt-5.15.2/include/QtCore/qsharedpointer.h:48,
from /usr/local/Qt-5.15.2/include/QtNetwork/qsslcertificate.h:54,
from /usr/local/Qt-5.15.2/include/QtNetwork/QSslCertificate:1,
from base/http/server.h:34,
from base/http/server.cpp:31:
/usr/local/Qt-5.15.2/include/QtCore/qobject.h:322:13: note: candidate: static typename std::enable_if<(QtPrivate::FunctionPointer::ArgumentCount == -1), QMetaObject::Connection>::type QObject::connect(const typename QtPrivate::FunctionPointer::Object, Func1, const QObject, Func2, Qt::ConnectionType) [with Func1 = void (QAbstractSocket::)(); Func2 = Http::Server::incomingConnection(qintptr)::<lambda()>; typename std::enable_if<(QtPrivate::FunctionPointer::ArgumentCount == -1), QMetaObject::Connection>::type = QMetaObject::Connection; typename QtPrivate::FunctionPointer::Object = QAbstractSocket]
connect(const typename QtPrivate::FunctionPointer::Object sender, Func1 signal, const QObject context, Func2 slot,
^~~~~~~
/usr/local/Qt-5.15.2/include/QtCore/qobject.h:322:13: note: no known conversion for argument 1 from QTcpSocket to const Object {aka const QAbstractSocket}
base/http/server.cpp: In member function bool Http::Server::setupHttps(const QByteArray&, const QByteArray&):
base/http/server.cpp:137:19: error: variable const QSslKey key has initializer but incomplete type
const QSslKey key {Utils::Net::loadSSLKey(privateKey)};
^~~
base/http/server.cpp:137:57: error: invalid use of incomplete type class QSslKey
const QSslKey key {Utils::Net::loadSSLKey(privateKey)};
^
In file included from /usr/local/Qt-5.15.2/include/QtNetwork/QSslCertificate:1,
from base/http/server.h:34,
from base/http/server.cpp:31:
/usr/local/Qt-5.15.2/include/QtNetwork/qsslcertificate.h:63:7: note: forward declaration of class QSslKey
class QSslKey;
^~~~~~~
make[1]: *** [Makefile:9040: server.o] Error 1
make[1]: *** Waiting for unfinished jobs....
In file included from base/bittorrent/tracker.cpp:41:
./base/http/server.h:66:17: error: field m_key has incomplete type QSslKey
QSslKey m_key;
^~~~~
In file included from /usr/local/Qt-5.15.2/include/QtNetwork/QSslCertificate:1,
from ./base/http/server.h:34,
from base/bittorrent/tracker.cpp:41:
/usr/local/Qt-5.15.2/include/QtNetwork/qsslcertificate.h:63:7: note: forward declaration of class QSslKey
class QSslKey;
^~~~~~~
make[1]: *** [Makefile:8372: tracker.o] Error 1
make[1]: Leaving directory '/root/build/qBittorrent-release-4.3.4.1/src'
make: *** [Makefile:47: sub-src-make_first] Error 2
`
I also tried Beta 3 (5.12.4) and have gotten the same errors.