Registered Member
|
Hello,
It looks like there is a problem with the commits of the Appimage. https://binary-factory.kde.org/job/KMyM ... age_Build/ https://binary-factory.kde.org/job/KMyM ... age_Build/ In both cases, the building part looks like it has been failing for a few days. Thank you, Steven |
KDE Developer
|
Thanks for the notification. I saw that myself yesterday but have no clue what changed. The problem seems to be related to sqlcipher and has not been introduced to a change in the KMyMoney source code.
ipwizard, proud to be a member of the KMyMoney forum since its beginning.
openSuSE Leap 15.4 64bit, KF5 |
KDE Developer
|
I analyzed this in a bit more detail. The problem in fact is related to sqlcipher. It seems to me that the needed library used to be installed in the build hosts system library area (/usr/lib/). The version contained in the dependency package was not used when the linker was instructed to include the library with -l sqlcipher. Other libraries are linked using their absolute path. Here's an excerpt from the linker options:
/home/appimage/tools/bin/c++ -std=c++0x -Wall -Wextra -Wcast-align -Wchar-subscripts -Wformat-security -Wno-long-long -Wpointer-arith -Wundef -Wnon-virtual-dtor -Woverloaded-virtual -Werror=return-type -Wvla -Wdate-time -fexceptions -Wall -Wextra -Wlogical-op -Wno-null-dereference -Wshadow -Wunused -Wno-misleading-indentation -Wsuggest-override -Wcast-qual -Wformat=2 -fno-common -O2 -g -DNDEBUG -Wl,--enable-new-dtags -Wl,--as-needed -Wl,--allow-multiple-definition -Wl,--no-undefined -rdynamic CMakeFiles/kmymoney.dir/kmymoney_autogen/mocs_compilation.cpp.o CMakeFiles/kmymoney.dir/main.cpp.o CMakeFiles/kmymoney.dir/kmymoney.cpp.o CMakeFiles/kmymoney.dir/pluginloader.cpp.o CMakeFiles/kmymoney.dir/kmymoneyadaptor.cpp.o CMakeFiles/kmymoney.dir/qrc_kmymoney.cpp.o -o ../bin/kmymoney -Wl,-rpath,/home/appimage/appimage-workspace/kmymoney-build/lib:/home/appimage/appimage-workspace/deps/usr/lib/x86_64-linux-gnu:/home/appimage/appimage-workspace/deps/usr/lib:::::::::::::::::::::: ../lib/libviews.a ../lib/libkmymoney_base.a ../lib/libkmymoney_common.a ../lib/libnewuserwizard.a ../lib/libnewaccountwizard.a ../lib/libnewinvestmentwizard.a ../lib/libnewloanwizard.a ../lib/libendingbalancedlg.a ../lib/libwizardpages.a ../lib/libdialogs.a ../lib/libwidgets.a ../lib/libsettings.a ../lib/libconverter.a ../lib/libkmm_menus.so.5.0.8 ../lib/libkmm_widgets.so.5.0.8 ../lib/libinterfaces.a /home/appimage/appimage-workspace/deps/usr/lib/x86_64-linux-gnu/libKChart.so.2.6.1 /home/appimage/appimage-workspace/deps/usr/lib/x86_64-linux-gnu/libKF5Holidays.so.5.51.0 /home/appimage/appimage-workspace/deps/usr/lib/x86_64-linux-gnu/libKF5Activities.so.5.51.0 -lsqlcipher /home/appimage/appimage-workspace/deps/usr/lib/libQt5WebEngineWidgets.so.5.11.3 /home/appimage/appimage-workspace/deps/usr/lib/libQt5WebEngineCore.so.5.11.3 /home/appimage/appimage-workspace/deps/usr/lib/libQt5WebChannel.so.5.11.3 ../lib/libkmm_printer.so.5.0.8 ../lib/libkmm_models.so.5.0.8 /home/appimage/appimage-workspace/deps/usr/lib/x86_64-linux-gnu/libKF5Notifications.so.5.51.0 ../lib/libonlinetask_interfaces.a /home/appimage/appimage-workspace/deps/usr/lib/x86_64-linux-gnu/libKF5KIOGui.so.5.51.0 ../lib/libkmymoney_base.a ../lib/libkmymoney_common.a ../lib/libkmm_settings.so.5.0.8 /home/appimage/appimage-workspace/deps/usr/lib/x86_64-linux-gnu/libKF5KIOFileWidgets.so.5.51.0 /home/appimage/appimage-workspace/deps/usr/lib/x86_64-linux-gnu/libKF5Bookmarks.so.5.51.0 /home/appimage/appimage-workspace/deps/usr/lib/x86_64-linux-gnu/libKF5Solid.so.5.51.0 /home/appimage/appimage-workspace/deps/usr/lib/x86_64-linux-gnu/libKF5KIONTLM.so.5.51.0 ../lib/libkmm_utils_webconnect.a ../lib/libkmm_utils_platformtools.a ../lib/libnewaccountwizard.a ../lib/libkmymoneywizard.a ../lib/libkmm_csvimportercore.so.5.0.8 ../lib/libkmm_mymoney.so.5.0.8 ../lib/libkmm_plugin.so.5.0.8 ../lib/libkmm_icons.so.5.0.8 ../lib/libkmm_payeeidentifier.so.5.0.8 /home/appimage/appimage-workspace/deps/usr/lib/x86_64-linux-gnu/libKF5IdentityManagement.so.5.9.2 /home/appimage/appimage-workspace/deps/usr/lib/x86_64-linux-gnu/libKF5PimTextEdit.so.5.9.2 /home/appimage/appimage-workspace/deps/usr/lib/x86_64-linux-gnu/libKF5AkonadiCore.so.5.9.2 /home/appimage/appimage-workspace/deps/usr/lib/x86_64-linux-gnu/libKF5ItemModels.so.5.51.0 /home/appimage/appimage-workspace/deps/usr/lib/x86_64-linux-gnu/libKF5Contacts.so.5.9.2 /home/appimage/appimage-workspace/deps/usr/lib/x86_64-linux-gnu/libKF5KIOWidgets.so.5.51.0 /home/appimage/appimage-workspace/deps/usr/lib/x86_64-linux-gnu/libKF5KIOCore.so.5.51.0 /home/appimage/appimage-workspace/deps/usr/lib/libQt5Concurrent.so.5.11.3 /home/appimage/appimage-workspace/deps/usr/lib/x86_64-linux-gnu/libKF5JobWidgets.so.5.51.0 /home/appimage/appimage-workspace/deps/usr/lib/x86_64-linux-gnu/libKF5KCMUtils.so.5.51.0 /home/appimage/appimage-workspace/deps/usr/lib/libQt5Quick.so.5.11.3 /home/appimage/appimage-workspace/deps/usr/lib/libQt5Qml.so.5.11.3 /home/appimage/appimage-workspace/deps/usr/lib/x86_64-linux-gnu/libalkimia5.so.7.0.2 /home/appimage/appimage-workspace/deps/usr/lib/libgmp.so /home/appimage/appimage-workspace/deps/usr/lib/x86_64-linux-gnu/libKF5XmlGui.so.5.51.0 /home/appimage/appimage-workspace/deps/usr/lib/x86_64-linux-gnu/libKF5TextWidgets.so.5.51.0 /home/appimage/appimage-workspace/deps/usr/lib/x86_64-linux-gnu/libKF5Completion.so.5.51.0 /home/appimage/appimage-workspace/deps/usr/lib/x86_64-linux-gnu/libKF5SonnetUi.so.5.51.0 /home/appimage/appimage-workspace/deps/usr/lib/libQt5PrintSupport.so.5.11.3 /home/appimage/appimage-workspace/deps/usr/lib/x86_64-linux-gnu/libKF5IconThemes.so.5.51.0 /home/appimage/appimage-workspace/deps/usr/lib/x86_64-linux-gnu/libKF5Archive.so.5.51.0 /home/appimage/appimage-workspace/deps/usr/lib/x86_64-linux-gnu/libKF5ConfigWidgets.so.5.51.0 /home/appimage/appimage-workspace/deps/usr/lib/x86_64-linux-gnu/libKF5ConfigGui.so.5.51.0 /home/appimage/appimage-workspace/deps/usr/lib/x86_64-linux-gnu/libKF5WidgetsAddons.so.5.51.0 /home/appimage/appimage-workspace/deps/usr/lib/x86_64-linux-gnu/libKF5Codecs.so.5.51.0 /home/appimage/appimage-workspace/deps/usr/lib/x86_64-linux-gnu/libKF5Auth.so.5.51.0 /home/appimage/appimage-workspace/deps/usr/lib/x86_64-linux-gnu/libKF5ItemViews.so.5.51.0 /home/appimage/appimage-workspace/deps/usr/lib/libQt5Widgets.so.5.11.3 /home/appimage/appimage-workspace/deps/usr/lib/libQt5Gui.so.5.11.3 /home/appimage/appimage-workspace/deps/usr/lib/libQt5Network.so.5.11.3 /home/appimage/appimage-workspace/deps/usr/lib/x86_64-linux-gnu/libKF5Service.so.5.51.0 /home/appimage/appimage-workspace/deps/usr/lib/x86_64-linux-gnu/libKF5CoreAddons.so.5.51.0 /home/appimage/appimage-workspace/deps/usr/lib/x86_64-linux-gnu/libKF5I18n.so.5.51.0 /home/appimage/appimage-workspace/deps/usr/lib/x86_64-linux-gnu/libKF5ConfigCore.so.5.51.0 /home/appimage/appimage-workspace/deps/usr/lib/libQt5Xml.so.5.11.3 /home/appimage/appimage-workspace/deps/usr/lib/libQt5DBus.so.5.11.3 /home/appimage/appimage-workspace/deps/usr/lib/libQt5Core.so.5.11.3 -Wl,-rpath-link,/home/appimage/appimage-workspace/deps/usr/lib/x86_64-linux-gnu:/home/appimage/appimage-workspace/deps/usr/lib I checked the dependency tarball and found the library to be in /home/appimage/appimage-workspace/deps/usr/lib/libsqlcipher.so.0.8.6 but I have no idea how to modify the KMyMoney build system so that instead of -lsqlcipher the linker is instructed to use /home/appimage/appimage-workspace/deps/usr/lib/libsqlcipher.so.0.8.6. Any ideas or suggestions are welcome.
ipwizard, proud to be a member of the KMyMoney forum since its beginning.
openSuSE Leap 15.4 64bit, KF5 |
Registered Member
|
Because I do not have the same build system locally I only can assume the reasons.
Looking at the kmymoney top level CMakeLists.txt there is if (PkgConfig_FOUND) pkg_check_modules(SQLCIPHER sqlcipher) endif() which indicates that kmymoney uses pkgconfig to find sqlcipher On my openSUSE_Leap 15.1 system I found rpm -q -l sqlcipher-devel /usr/include/sqlcipher /usr/include/sqlcipher/sqlite3.h /usr/include/sqlcipher/sqlite3ext.h /usr/lib64/libsqlcipher.so /usr/lib64/pkgconfig/sqlcipher.pc /usr/share/doc/packages/sqlcipher-devel /usr/share/doc/packages/sqlcipher-devel/README.md /usr/share/licenses/sqlcipher-devel /usr/share/licenses/sqlcipher-devel/LICENSE Looking inside the pkgconfig file ~/src/kmymoney> cat /usr/lib64/pkgconfig/sqlcipher.pc # Package Information for pkg-config prefix=/usr exec_prefix=/usr libdir=/usr/lib64 includedir=/usr/include Name: SQLCipher Description: SQL database engine Version: 3.20.1 Libs: -L${libdir} -lsqlcipher Libs.private: -ldl -lcrypto -lpthread Cflags: -I${includedir}/sqlcipher there is one line for interest Libs: -L${libdir} -lsqlcipher This line indicates from which the mentioned library string '-lsqlcipher' comes from https://cmake.org/cmake/help/v3.0/modul ... onfig.html mentions that the following variable are library related <XPREFIX>_LIBRARIES ... only the libraries (w/o the '-l') <XPREFIX>_LIBRARY_DIRS ... the paths of the libraries (w/o the '-L') so there might be a change to get the full path by using find_library afterwards e.g find_library ( SQLCIPHER_LIBRARY ${SQLCIPHER_LIBRARIES} HINTS ${SQLCIPHER_LIBRARY_DIRS} ) and to use ${SQLCIPHER_LIBRARY} for building the related target. |
Registered Member
|
On the other hand does the cmake pkgconfig module has related build in support
https://github.com/Kitware/CMake/blob/m ... cmake#L183 # scan the LDFLAGS returned by pkg-config for library directories and # libraries, figure out the absolute paths of that libraries in the # given directories A few line later it reports that there is an imported target which looks to be an other option: https://github.com/Kitware/CMake/blob/m ... cmake#L231 # create an imported target from all the information returned by pkg-config From the module it looks the target is named PkgConfig::SQLCIPHER in this case, which could be used in the related target_link_libraries line e.g target_link_libraries(qsqlcipher PkgConfig::SQLCIPHER ...) that all.
Last edited by Rhabacker on Wed Feb 26, 2020 12:59 pm, edited 1 time in total.
|
Registered Member
|
As addition to the last post the documentation of pkg_check_modules() says:
The ``IMPORTED_TARGET`` argument will create an imported target named ``PkgConfig::<prefix>`` that can be passed directly as an argument to :command:`target_link_libraries`. The ``GLOBAL`` argument will make the imported target available in global scope. which means that the following change is required for https://github.com/KDE/kmymoney/blob/04 ... ts.txt#L77 if (PkgConfig_FOUND) pkg_check_modules(SQLCIPHER sqlcipher IMPORTED_TARGET) endif() |
KDE Developer
|
Fixed. See KMyMoney build overview.
ipwizard, proud to be a member of the KMyMoney forum since its beginning.
openSuSE Leap 15.4 64bit, KF5 |
Registered users: bartoloni, Bing [Bot], Evergrowing, Google [Bot], ourcraft