Building libraries/qca failed

I am new to developing on KDE and I’m trying to build spectacle on OpenSUSE Tumbleweed.

I have just set up kde-builder and I was able to successfully build KCalc. However, Spectacle fails to build on Building libraries/qca (kdesupport/qca) (18/42):

# kde-builder running: 'ninja'
# from directory:  /home/conley/kde/build/qca
# with environment:  /home/conley/kde/build/qca/kde-builder.env
[1/140] Building CXX object unittest/hexunittest/CMakeFiles/hexunittest.dir/hexunittest_autogen/mocs_compilation.cpp.o
[2/140] Building CXX object unittest/keybundle/CMakeFiles/keybundle.dir/keybundle_autogen/mocs_compilation.cpp.o
[3/140] Building CXX object unittest/keygenunittest/CMakeFiles/keygenunittest.dir/keygenunittest_autogen/mocs_compilation.cpp.o
[4/140] Building CXX object unittest/kdfunittest/CMakeFiles/kdfunittest.dir/kdfunittest_autogen/mocs_compilation.cpp.o
[5/140] Building CXX object unittest/keylengthunittest/CMakeFiles/keylengthunittest.dir/keylengthunittest_autogen/mocs_compilation.cpp.o
[6/140] Building CXX object unittest/keystore/CMakeFiles/keystore.dir/keystore_autogen/mocs_compilation.cpp.o
[7/140] Building CXX object unittest/logger/CMakeFiles/loggerunittest.dir/loggerunittest_autogen/mocs_compilation.cpp.o
[8/140] Building CXX object unittest/macunittest/CMakeFiles/macunittest.dir/macunittest_autogen/mocs_compilation.cpp.o
[9/140] Building CXX object unittest/pgpunittest/CMakeFiles/pgpunittest.dir/pgpunittest_autogen/mocs_compilation.cpp.o
[10/140] Building CXX object unittest/pipeunittest/CMakeFiles/pipeunittest.dir/pipeunittest_autogen/mocs_compilation.cpp.o
[11/140] Building CXX object unittest/metatype/CMakeFiles/metatypeunittest.dir/metatypeunittest_autogen/mocs_compilation.cpp.o
[12/140] Building CXX object unittest/pkits/CMakeFiles/pkits.dir/pkits_autogen/mocs_compilation.cpp.o
[13/140] Building CXX object unittest/rsaunittest/CMakeFiles/rsaunittest.dir/rsaunittest_autogen/mocs_compilation.cpp.o
[14/140] Building CXX object unittest/keystore/CMakeFiles/keystore.dir/keystore.cpp.o
[15/140] Building CXX object unittest/securearrayunittest/CMakeFiles/securearrayunittest.dir/securearrayunittest_autogen/mocs_compilation.cpp.o
[16/140] Building CXX object unittest/keybundle/CMakeFiles/keybundle.dir/keybundle.cpp.o
[17/140] Building CXX object unittest/keylengthunittest/CMakeFiles/keylengthunittest.dir/keylengthunittest.cpp.o
[18/140] Building CXX object unittest/staticunittest/CMakeFiles/staticunittest.dir/staticunittest_autogen/mocs_compilation.cpp.o
[19/140] Building CXX object unittest/symmetrickeyunittest/CMakeFiles/symmetrickeyunittest.dir/symmetrickeyunittest_autogen/mocs_compilation.cpp.o
[20/140] Building CXX object unittest/pipeunittest/CMakeFiles/pipeunittest.dir/pipeunittest.cpp.o
[21/140] Building CXX object unittest/tls/CMakeFiles/tlsunittest.dir/tlsunittest_autogen/mocs_compilation.cpp.o
[22/140] Building CXX object unittest/rsaunittest/CMakeFiles/rsaunittest.dir/rsaunittest.cpp.o
[23/140] Building CXX object unittest/velox/CMakeFiles/veloxunittest.dir/veloxunittest_autogen/mocs_compilation.cpp.o
[24/140] Building CXX object plugins/qca-ossl/CMakeFiles/qca-ossl.dir/qca-ossl.cpp.o
FAILED: [code=1] plugins/qca-ossl/CMakeFiles/qca-ossl.dir/qca-ossl.cpp.o 
/usr/bin/c++ -DHAVE_OPENSSL_AES_CCM -DHAVE_OPENSSL_AES_CTR -DHAVE_OPENSSL_AES_GCM -DQCA_SYSTEMSTORE_PATH=\"/etc/ssl/ca-bundle.pem\" -DQT_CORE_LIB -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_FROM_BYTEARRAY -DQT_NO_CAST_TO_ASCII -DQT_NO_DEBUG -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_SIGNALS_SLOTS_KEYWORDS -DQT_NO_URL_CAST_FROM_STRING -DQT_STRICT_ITERATORS -DQT_USE_QSTRINGBUILDER -D_DEFAULT_SOURCE -Dqca_ossl_EXPORTS -I/home/conley/kde/build/qca/plugins/qca-ossl -I/home/conley/kde/src/qca/plugins/qca-ossl -I/home/conley/kde/build/qca/plugins/qca-ossl/qca-ossl_autogen/include -I/home/conley/kde/src/qca/include/QtCrypto -I/home/conley/kde/build/qca -isystem /usr/include/qt6/QtCore -isystem /usr/include/qt6 -isystem /usr/lib64/qt6/mkspecs/linux-g++ -pipe -Wcast-align -Wnon-virtual-dtor -Wno-long-long -Wundef -Wchar-subscripts -Wall -W -Wpointer-arith -Wwrite-strings -Wformat-security -fno-check-new -fno-common -Wsuggest-override -Wlogical-op -O2 -g -DNDEBUG -std=gnu++17 -fPIC -MD -MT plugins/qca-ossl/CMakeFiles/qca-ossl.dir/qca-ossl.cpp.o -MF plugins/qca-ossl/CMakeFiles/qca-ossl.dir/qca-ossl.cpp.o.d -o plugins/qca-ossl/CMakeFiles/qca-ossl.dir/qca-ossl.cpp.o -c /home/conley/kde/src/qca/plugins/qca-ossl/qca-ossl.cpp
In file included from /home/conley/kde/src/qca/plugins/qca-ossl/qca-ossl.cpp:37:
/home/conley/kde/src/qca/plugins/qca-ossl/qca-ossl.cpp: In static member function ‘static int opensslQCAPlugin::QCA_RSA_METHOD::rsa_priv_dec(int, const unsigned char*, unsigned char*, RSA*, int)’:
/home/conley/kde/src/qca/plugins/qca-ossl/qca-ossl.cpp:2855:20: error: ‘RSA_F_RSA_OSSL_PRIVATE_DECRYPT’ was not declared in this scope; did you mean ‘RSA_F_RSA_NULL_PRIVATE_DECRYPT’?
 2855 |             RSAerr(RSA_F_RSA_OSSL_PRIVATE_DECRYPT, RSA_R_UNKNOWN_PADDING_TYPE);
      |                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/conley/kde/src/qca/plugins/qca-ossl/qca-ossl.cpp: In function ‘QDateTime opensslQCAPlugin::ASN1_UTCTIME_QDateTime(const ASN1_UTCTIME*, int*)’:
/home/conley/kde/src/qca/plugins/qca-ossl/qca-ossl.cpp:3373:24: warning: ‘void QDateTime::setTimeSpec(Qt::TimeSpec)’ is deprecated: Use setTimeZone() instead [-Wdeprecated-declarations]
 3373 |         qdt.setTimeSpec(Qt::UTC);
      |         ~~~~~~~~~~~~~~~^~~~~~~~~
In file included from /usr/include/qt6/QtCore/QDateTime:1,
                 from /home/conley/kde/src/qca/include/QtCrypto/qca_cert.h:38,
                 from /home/conley/kde/src/qca/include/QtCrypto/qca.h:37,
                 from /home/conley/kde/src/qca/include/QtCrypto/QtCrypto:1,
                 from /home/conley/kde/src/qca/plugins/qca-ossl/qca-ossl.cpp:25:
/usr/include/qt6/QtCore/qdatetime.h:407:10: note: declared here
  407 |     void setTimeSpec(Qt::TimeSpec spec);
      |          ^~~~~~~~~~~
/home/conley/kde/src/qca/plugins/qca-ossl/qca-ossl.cpp: In member function ‘virtual QStringList opensslQCAPlugin::MyTLSContext::supportedCipherSuites(const QCA::TLS::Version&) const’:
/home/conley/kde/src/qca/plugins/qca-ossl/qca-ossl.cpp:5028:47: error: ‘SSL_CIPHER_standard_name’ was not declared in this scope; did you mean ‘SSL_CIPHER_get_name’?
 5028 |             cipherList += QString::fromLatin1(SSL_CIPHER_standard_name(thisCipher));
      |                                               ^~~~~~~~~~~~~~~~~~~~~~~~
      |                                               SSL_CIPHER_get_name
/home/conley/kde/src/qca/plugins/qca-ossl/qca-ossl.cpp: In member function ‘virtual QCA::TLSContext::SessionInfo opensslQCAPlugin::MyTLSContext::sessionInfo() const’:
/home/conley/kde/src/qca/plugins/qca-ossl/qca-ossl.cpp:5401:52: error: ‘SSL_CIPHER_standard_name’ was not declared in this scope; did you mean ‘SSL_CIPHER_get_name’?
 5401 |         sessInfo.cipherSuite = QString::fromLatin1(SSL_CIPHER_standard_name(SSL_get_current_cipher(ssl)));
      |                                                    ^~~~~~~~~~~~~~~~~~~~~~~~
      |                                                    SSL_CIPHER_get_name
/home/conley/kde/src/qca/plugins/qca-ossl/qca-ossl.cpp: In member function ‘virtual QCA::Provider::Context* opensslProvider::createContext(const QString&)’:
/home/conley/kde/src/qca/plugins/qca-ossl/qca-ossl.cpp:6926:47: error: ‘EVP_whirlpool’ was not declared in this scope; did you mean ‘OBJ_whirlpool’?
 6926 |                 return new opensslHashContext(EVP_whirlpool(), this, type);
      |                                               ^~~~~~~~~~~~~
      |                                               OBJ_whirlpool
[25/140] Building CXX object unittest/hexunittest/CMakeFiles/hexunittest.dir/hexunittest.cpp.o
[26/140] Building CXX object unittest/metatype/CMakeFiles/metatypeunittest.dir/metatype.cpp.o
[27/140] Building CXX object unittest/logger/CMakeFiles/loggerunittest.dir/loggerunittest.cpp.o
[28/140] Building CXX object unittest/keygenunittest/CMakeFiles/keygenunittest.dir/keygenunittest.cpp.o
[29/140] Building CXX object unittest/kdfunittest/CMakeFiles/kdfunittest.dir/kdfunittest.cpp.o
[30/140] Building CXX object unittest/pgpunittest/CMakeFiles/pgpunittest.dir/pgpunittest.cpp.o
[31/140] Building CXX object unittest/securearrayunittest/CMakeFiles/securearrayunittest.dir/securearrayunittest.cpp.o
[32/140] Building CXX object unittest/tls/CMakeFiles/tlsunittest.dir/tlsunittest.cpp.o
[33/140] Building CXX object unittest/velox/CMakeFiles/veloxunittest.dir/veloxunittest.cpp.o
[34/140] Building CXX object unittest/macunittest/CMakeFiles/macunittest.dir/macunittest.cpp.o
[35/140] Building CXX object unittest/staticunittest/CMakeFiles/staticunittest.dir/staticunittest.cpp.o
[36/140] Building CXX object unittest/symmetrickeyunittest/CMakeFiles/symmetrickeyunittest.dir/symmetrickeyunittest.cpp.o
[37/140] Building CXX object unittest/pkits/CMakeFiles/pkits.dir/pkits.cpp.o
/home/conley/kde/src/qca/unittest/pkits/pkits.cpp: In function ‘QCA::Certificate certFromDERFile(const QString&, const QString&)’:
/home/conley/kde/src/qca/unittest/pkits/pkits.cpp:92:18: warning: ignoring return value of ‘virtual bool QFile::open(QIODeviceBase::OpenMode)’, declared with attribute ‘nodiscard’ [-Wunused-result]
   92 |     certFile.open(QFile::ReadOnly);
      |     ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
In file included from /usr/include/qt6/QtCore/qdir.h:11,
                 from /usr/include/qt6/QtCore/qtemporarydir.h:9,
                 from /usr/include/qt6/QtTest/qtestcase.h:15,
                 from /usr/include/qt6/QtTest/qtest.h:13,
                 from /usr/include/qt6/QtTest/QTest:1,
                 from /home/conley/kde/src/qca/unittest/pkits/pkits.cpp:26:
/usr/include/qt6/QtCore/qfile.h:291:32: note: declared here
  291 |     QFILE_MAYBE_NODISCARD bool open(OpenMode flags) override;
      |                                ^~~~
/home/conley/kde/src/qca/unittest/pkits/pkits.cpp: In function ‘QCA::CRL crlFromDERFile(const QString&, const QString&)’:
/home/conley/kde/src/qca/unittest/pkits/pkits.cpp:102:17: warning: ignoring return value of ‘virtual bool QFile::open(QIODeviceBase::OpenMode)’, declared with attribute ‘nodiscard’ [-Wunused-result]
  102 |     crlFile.open(QFile::ReadOnly);
      |     ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
/usr/include/qt6/QtCore/qfile.h:291:32: note: declared here
  291 |     QFILE_MAYBE_NODISCARD bool open(OpenMode flags) override;
      |                                ^~~~
ninja: build stopped: subcommand failed.

# exit code was: 256

Is there something I’m missing?

It seems there is a build configuration issue:
RSA_F_RSA_OSSL_PRIVATE_DECRYPT (expected by code)
RSA_F_RSA_NULL_PRIVATE_DECRYPT (actually available on your system).

The NULL seems suspicious.

You probably don’t need the latest qca, you can skip it: kde-builder spectacle --resume-after qca

1 Like