NickvisionApps/Parabolic

[Bug] Build of 2025.8.1 is broken: `fatal error: libnick/app/datafilemanager.h: No such file or directory`

Closed this issue · 4 comments

Fails to build with the latest release of libnick:

/usr/bin/make  -f libparabolic/CMakeFiles/libparabolic.dir/build.make libparabolic/CMakeFiles/libparabolic.dir/build
make[2]: Entering directory `/opt/local/var/macports/build/parabolic-4e9a3e96/work/build'
[  7%] Building CXX object libparabolic/CMakeFiles/libparabolic.dir/src/controllers/adddownloaddialogcontroller.cpp.o
[  7%] Building CXX object libparabolic/CMakeFiles/libparabolic.dir/src/controllers/credentialdialogcontroller.cpp.o
[  9%] Building CXX object libparabolic/CMakeFiles/libparabolic.dir/src/controllers/mainwindowcontroller.cpp.o
[  9%] Building CXX object libparabolic/CMakeFiles/libparabolic.dir/src/controllers/keyringdialogcontroller.cpp.o
cd /opt/local/var/macports/build/parabolic-4e9a3e96/work/build/libparabolic && /opt/local/bin/g++-mp-14 -DBOOST_CONTAINER_DYN_LINK -DBOOST_CONTAINER_NO_LIB -DBOOST_DATE_TIME_DYN_LINK -DBOOST_DATE_TIME_NO_LIB -DBOOST_JSON_DYN_LINK -DBOOST_JSON_NO_LIB -I/opt/local/var/macports/build/parabolic-4e9a3e96/work/Parabolic-2025.8.1/libparabolic/include -isystem /opt/local/include/libnick -isystem /opt/local/include -isystem /opt/local/libexec/boost/1.81/include -isystem /opt/local/libexec/sqlcipher/include -isystem /opt/local/include/glib-2.0 -isystem /opt/local/lib/glib-2.0/include -isystem /opt/local/include/libsecret-1 -isystem /opt/local/include/gio-unix-2.0 -pipe -I/opt/local/libexec/openssl3/include -I/opt/local/libexec/boost/1.81/include -Os -DNDEBUG -I/opt/local/libexec/openssl3/include -I/opt/local/libexec/boost/1.81/include -isystem/opt/local/include -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++20 -arch ppc -mmacosx-version-min=10.6 -Wall -Wextra -Wpedantic -MD -MT libparabolic/CMakeFiles/libparabolic.dir/src/controllers/adddownloaddialogcontroller.cpp.o -MF CMakeFiles/libparabolic.dir/src/controllers/adddownloaddialogcontroller.cpp.o.d -o CMakeFiles/libparabolic.dir/src/controllers/adddownloaddialogcontroller.cpp.o -c /opt/local/var/macports/build/parabolic-4e9a3e96/work/Parabolic-2025.8.1/libparabolic/src/controllers/adddownloaddialogcontroller.cpp
cd /opt/local/var/macports/build/parabolic-4e9a3e96/work/build/libparabolic && /opt/local/bin/g++-mp-14 -DBOOST_CONTAINER_DYN_LINK -DBOOST_CONTAINER_NO_LIB -DBOOST_DATE_TIME_DYN_LINK -DBOOST_DATE_TIME_NO_LIB -DBOOST_JSON_DYN_LINK -DBOOST_JSON_NO_LIB -I/opt/local/var/macports/build/parabolic-4e9a3e96/work/Parabolic-2025.8.1/libparabolic/include -isystem /opt/local/include/libnick -isystem /opt/local/include -isystem /opt/local/libexec/boost/1.81/include -isystem /opt/local/libexec/sqlcipher/include -isystem /opt/local/include/glib-2.0 -isystem /opt/local/lib/glib-2.0/include -isystem /opt/local/include/libsecret-1 -isystem /opt/local/include/gio-unix-2.0 -pipe -I/opt/local/libexec/openssl3/include -I/opt/local/libexec/boost/1.81/include -Os -DNDEBUG -I/opt/local/libexec/openssl3/include -I/opt/local/libexec/boost/1.81/include -isystem/opt/local/include -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++20 -arch ppc -mmacosx-version-min=10.6 -Wall -Wextra -Wpedantic -MD -MT libparabolic/CMakeFiles/libparabolic.dir/src/controllers/mainwindowcontroller.cpp.o -MF CMakeFiles/libparabolic.dir/src/controllers/mainwindowcontroller.cpp.o.d -o CMakeFiles/libparabolic.dir/src/controllers/mainwindowcontroller.cpp.o -c /opt/local/var/macports/build/parabolic-4e9a3e96/work/Parabolic-2025.8.1/libparabolic/src/controllers/mainwindowcontroller.cpp
cd /opt/local/var/macports/build/parabolic-4e9a3e96/work/build/libparabolic && /opt/local/bin/g++-mp-14 -DBOOST_CONTAINER_DYN_LINK -DBOOST_CONTAINER_NO_LIB -DBOOST_DATE_TIME_DYN_LINK -DBOOST_DATE_TIME_NO_LIB -DBOOST_JSON_DYN_LINK -DBOOST_JSON_NO_LIB -I/opt/local/var/macports/build/parabolic-4e9a3e96/work/Parabolic-2025.8.1/libparabolic/include -isystem /opt/local/include/libnick -isystem /opt/local/include -isystem /opt/local/libexec/boost/1.81/include -isystem /opt/local/libexec/sqlcipher/include -isystem /opt/local/include/glib-2.0 -isystem /opt/local/lib/glib-2.0/include -isystem /opt/local/include/libsecret-1 -isystem /opt/local/include/gio-unix-2.0 -pipe -I/opt/local/libexec/openssl3/include -I/opt/local/libexec/boost/1.81/include -Os -DNDEBUG -I/opt/local/libexec/openssl3/include -I/opt/local/libexec/boost/1.81/include -isystem/opt/local/include -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++20 -arch ppc -mmacosx-version-min=10.6 -Wall -Wextra -Wpedantic -MD -MT libparabolic/CMakeFiles/libparabolic.dir/src/controllers/credentialdialogcontroller.cpp.o -MF CMakeFiles/libparabolic.dir/src/controllers/credentialdialogcontroller.cpp.o.d -o CMakeFiles/libparabolic.dir/src/controllers/credentialdialogcontroller.cpp.o -c /opt/local/var/macports/build/parabolic-4e9a3e96/work/Parabolic-2025.8.1/libparabolic/src/controllers/credentialdialogcontroller.cpp
cd /opt/local/var/macports/build/parabolic-4e9a3e96/work/build/libparabolic && /opt/local/bin/g++-mp-14 -DBOOST_CONTAINER_DYN_LINK -DBOOST_CONTAINER_NO_LIB -DBOOST_DATE_TIME_DYN_LINK -DBOOST_DATE_TIME_NO_LIB -DBOOST_JSON_DYN_LINK -DBOOST_JSON_NO_LIB -I/opt/local/var/macports/build/parabolic-4e9a3e96/work/Parabolic-2025.8.1/libparabolic/include -isystem /opt/local/include/libnick -isystem /opt/local/include -isystem /opt/local/libexec/boost/1.81/include -isystem /opt/local/libexec/sqlcipher/include -isystem /opt/local/include/glib-2.0 -isystem /opt/local/lib/glib-2.0/include -isystem /opt/local/include/libsecret-1 -isystem /opt/local/include/gio-unix-2.0 -pipe -I/opt/local/libexec/openssl3/include -I/opt/local/libexec/boost/1.81/include -Os -DNDEBUG -I/opt/local/libexec/openssl3/include -I/opt/local/libexec/boost/1.81/include -isystem/opt/local/include -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++20 -arch ppc -mmacosx-version-min=10.6 -Wall -Wextra -Wpedantic -MD -MT libparabolic/CMakeFiles/libparabolic.dir/src/controllers/keyringdialogcontroller.cpp.o -MF CMakeFiles/libparabolic.dir/src/controllers/keyringdialogcontroller.cpp.o.d -o CMakeFiles/libparabolic.dir/src/controllers/keyringdialogcontroller.cpp.o -c /opt/local/var/macports/build/parabolic-4e9a3e96/work/Parabolic-2025.8.1/libparabolic/src/controllers/keyringdialogcontroller.cpp
In file included from /opt/local/var/macports/build/parabolic-4e9a3e96/work/Parabolic-2025.8.1/libparabolic/src/controllers/mainwindowcontroller.cpp:1:
/opt/local/var/macports/build/parabolic-4e9a3e96/work/Parabolic-2025.8.1/libparabolic/include/controllers/mainwindowcontroller.h:14:10: fatal error: libnick/app/datafilemanager.h: No such file or directory
   14 | #include <libnick/app/datafilemanager.h>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [libparabolic/CMakeFiles/libparabolic.dir/src/controllers/mainwindowcontroller.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
In file included from /opt/local/var/macports/build/parabolic-4e9a3e96/work/Parabolic-2025.8.1/libparabolic/src/controllers/adddownloaddialogcontroller.cpp:1:
/opt/local/var/macports/build/parabolic-4e9a3e96/work/Parabolic-2025.8.1/libparabolic/include/controllers/adddownloaddialogcontroller.h:11:10: fatal error: libnick/app/cancellationtoken.h: No such file or directory
   11 | #include <libnick/app/cancellationtoken.h>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [libparabolic/CMakeFiles/libparabolic.dir/src/controllers/adddownloaddialogcontroller.cpp.o] Error 1
/opt/local/var/macports/build/parabolic-4e9a3e96/work/Parabolic-2025.8.1/libparabolic/src/controllers/keyringdialogcontroller.cpp: In member function 'const std::vector<Nickvision::Keyring::Credential>& Nickvision::TubeConverter::Shared::Controllers::KeyringDialogController::getCredentials() const':
/opt/local/var/macports/build/parabolic-4e9a3e96/work/Parabolic-2025.8.1/libparabolic/src/controllers/keyringdialogcontroller.cpp:23:26: error: 'class Nickvision::Keyring::Keyring' has no member named 'getCredentials'; did you mean 'std::vector<Nickvision::Keyring::Credential> Nickvision::Keyring::Keyring::m_credentials'? (not accessible from this context)
   23 |         return m_keyring.getCredentials();
      |                          ^~~~~~~~~~~~~~
In file included from /opt/local/var/macports/build/parabolic-4e9a3e96/work/Parabolic-2025.8.1/libparabolic/include/controllers/keyringdialogcontroller.h:8,
                 from /opt/local/var/macports/build/parabolic-4e9a3e96/work/Parabolic-2025.8.1/libparabolic/src/controllers/keyringdialogcontroller.cpp:1:
/opt/local/include/libnick/keyring/keyring.h:113:33: note: declared private here
  113 |         std::vector<Credential> m_credentials;
      |                                 ^~~~~~~~~~~~~
/opt/local/var/macports/build/parabolic-4e9a3e96/work/Parabolic-2025.8.1/libparabolic/src/controllers/credentialdialogcontroller.cpp: In member function 'std::vector<std::basic_string<char> > Nickvision::TubeConverter::Shared::Controllers::CredentialDialogController::getKeyringCredentialNames() const':
/opt/local/var/macports/build/parabolic-4e9a3e96/work/Parabolic-2025.8.1/libparabolic/src/controllers/credentialdialogcontroller.cpp:23:54: error: 'class Nickvision::Keyring::Keyring' has no member named 'getCredentials'; did you mean 'std::vector<Nickvision::Keyring::Credential> Nickvision::Keyring::Keyring::m_credentials'? (not accessible from this context)
   23 |         for(const Credential& credential : m_keyring.getCredentials())
      |                                                      ^~~~~~~~~~~~~~
In file included from /opt/local/var/macports/build/parabolic-4e9a3e96/work/Parabolic-2025.8.1/libparabolic/include/controllers/credentialdialogcontroller.h:6,
                 from /opt/local/var/macports/build/parabolic-4e9a3e96/work/Parabolic-2025.8.1/libparabolic/src/controllers/credentialdialogcontroller.cpp:1:
/opt/local/include/libnick/keyring/keyring.h:113:33: note: declared private here
  113 |         std::vector<Credential> m_credentials;
      |                                 ^~~~~~~~~~~~~
/opt/local/var/macports/build/parabolic-4e9a3e96/work/Parabolic-2025.8.1/libparabolic/src/controllers/keyringdialogcontroller.cpp: In member function 'std::optional<Nickvision::Keyring::Credential> Nickvision::TubeConverter::Shared::Controllers::KeyringDialogController::getCredential(const std::string&) const':
/opt/local/var/macports/build/parabolic-4e9a3e96/work/Parabolic-2025.8.1/libparabolic/src/controllers/keyringdialogcontroller.cpp:28:26: error: 'class Nickvision::Keyring::Keyring' has no member named 'getCredential'
   28 |         return m_keyring.getCredential(name);
      |                          ^~~~~~~~~~~~~
/opt/local/var/macports/build/parabolic-4e9a3e96/work/Parabolic-2025.8.1/libparabolic/src/controllers/keyringdialogcontroller.cpp: In member function 'Nickvision::TubeConverter::Shared::Models::CredentialCheckStatus Nickvision::TubeConverter::Shared::Controllers::KeyringDialogController::addCredential(const std::string&, const std::string&, const std::string&, const std::string&)':
/opt/local/var/macports/build/parabolic-4e9a3e96/work/Parabolic-2025.8.1/libparabolic/src/controllers/keyringdialogcontroller.cpp:45:27: error: 'class Nickvision::Keyring::Keyring' has no member named 'getCredential'
   45 |         else if(m_keyring.getCredential(name).has_value())
      |                           ^~~~~~~~~~~~~
/opt/local/var/macports/build/parabolic-4e9a3e96/work/Parabolic-2025.8.1/libparabolic/src/controllers/keyringdialogcontroller.cpp:51:30: error: 'class Nickvision::Keyring::Keyring' has no member named 'addCredential'
   51 |             return m_keyring.addCredential({ name, StringHelpers::trim(url), username, password }) ? CredentialCheckStatus::Valid : CredentialCheckStatus::DatabaseError;
      |                              ^~~~~~~~~~~~~
/opt/local/var/macports/build/parabolic-4e9a3e96/work/Parabolic-2025.8.1/libparabolic/src/controllers/credentialdialogcontroller.cpp: In member function 'void Nickvision::TubeConverter::Shared::Controllers::CredentialDialogController::use(int)':
/opt/local/var/macports/build/parabolic-4e9a3e96/work/Parabolic-2025.8.1/libparabolic/src/controllers/credentialdialogcontroller.cpp:38:48: error: 'class Nickvision::Keyring::Keyring' has no member named 'getCredentials'; did you mean 'std::vector<Nickvision::Keyring::Credential> Nickvision::Keyring::Keyring::m_credentials'? (not accessible from this context)
   38 |         if(index >= static_cast<int>(m_keyring.getCredentials().size()))
      |                                                ^~~~~~~~~~~~~~
/opt/local/include/libnick/keyring/keyring.h:113:33: note: declared private here
  113 |         std::vector<Credential> m_credentials;
      |                                 ^~~~~~~~~~~~~
/opt/local/var/macports/build/parabolic-4e9a3e96/work/Parabolic-2025.8.1/libparabolic/src/controllers/credentialdialogcontroller.cpp:42:49: error: 'class Nickvision::Keyring::Keyring' has no member named 'getCredentials'; did you mean 'std::vector<Nickvision::Keyring::Credential> Nickvision::Keyring::Keyring::m_credentials'? (not accessible from this context)
   42 |         const Credential& credential{ m_keyring.getCredentials()[index] };
      |                                                 ^~~~~~~~~~~~~~
/opt/local/include/libnick/keyring/keyring.h:113:33: note: declared private here
  113 |         std::vector<Credential> m_credentials;
      |                                 ^~~~~~~~~~~~~
/opt/local/var/macports/build/parabolic-4e9a3e96/work/Parabolic-2025.8.1/libparabolic/src/controllers/credentialdialogcontroller.cpp:42:73: error: invalid initialization of reference of type 'const Nickvision::Keyring::Credential&' from expression of type '<brace-enclosed initializer list>'
   42 |         const Credential& credential{ m_keyring.getCredentials()[index] };
      |                                                                         ^
/opt/local/var/macports/build/parabolic-4e9a3e96/work/Parabolic-2025.8.1/libparabolic/src/controllers/keyringdialogcontroller.cpp: In member function 'Nickvision::TubeConverter::Shared::Models::CredentialCheckStatus Nickvision::TubeConverter::Shared::Controllers::KeyringDialogController::updateCredential(const std::string&, const std::string&, const std::string&, const std::string&)':
/opt/local/var/macports/build/parabolic-4e9a3e96/work/Parabolic-2025.8.1/libparabolic/src/controllers/keyringdialogcontroller.cpp:71:30: error: 'class Nickvision::Keyring::Keyring' has no member named 'updateCredential'
   71 |             return m_keyring.updateCredential({ name, StringHelpers::trim(url), username, password }) ? CredentialCheckStatus::Valid : CredentialCheckStatus::DatabaseError;
      |                              ^~~~~~~~~~~~~~~~
/opt/local/var/macports/build/parabolic-4e9a3e96/work/Parabolic-2025.8.1/libparabolic/src/controllers/keyringdialogcontroller.cpp: In member function 'Nickvision::TubeConverter::Shared::Models::CredentialCheckStatus Nickvision::TubeConverter::Shared::Controllers::KeyringDialogController::deleteCredential(const std::string&)':
/opt/local/var/macports/build/parabolic-4e9a3e96/work/Parabolic-2025.8.1/libparabolic/src/controllers/keyringdialogcontroller.cpp:83:30: error: 'class Nickvision::Keyring::Keyring' has no member named 'deleteCredential'
   83 |             return m_keyring.deleteCredential(name) ? CredentialCheckStatus::Valid : CredentialCheckStatus::DatabaseError;
      |                              ^~~~~~~~~~~~~~~~
make[2]: *** [libparabolic/CMakeFiles/libparabolic.dir/src/controllers/keyringdialogcontroller.cpp.o] Error 1

@nlogozzo Could you please address this?

libnick has been updated to v2025.9.2, which contains many changes. Parabolic v2025.8.1 still supports the old version of libnick.

Parabolic v2025.9.0 (being released tonight/tomorrow) will support the new libnick.

@nlogozzo Well, I assumed that the latest releases of each are supposed to be compatible. If the update for parabolic is coming, then no problem, of course.

libnick V2025.9.2 has a new API. Parabolic needs to be updated to support that. Coming in Parabolic V2025.9.0

Thank you!