This forum has been archived. All content is frozen. Please use KDE Discuss instead.

Appimage building failure

Tags: None
(comma "," separated)
stephanesp
Registered Member
Posts
31
Karma
0

Appimage building failure

Mon Feb 24, 2020 5:49 pm
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
User avatar
ipwizard
KDE Developer
Posts
1359
Karma
6
OS

Re: Appimage building failure

Mon Feb 24, 2020 5:57 pm
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.
16:45:41 [ 13%] Linking CXX shared module ../../../lib/qsqlcipher.so
16:45:41 /usr/bin/x86_64-linux-gnu-ld: cannot find -lsqlcipher
16:45:41 collect2: error: ld returned 1 exit status
16:45:41 kmymoney/plugins/sqlcipher/CMakeFiles/qsqlcipher.dir/build.make:113: recipe for target 'lib/qsqlcipher.so' failed
16:45:41 make[2]: *** [lib/qsqlcipher.so] Error 1
16:45:41 CMakeFiles/Makefile2:4116: recipe for target 'kmymoney/plugins/sqlcipher/CMakeFiles/qsqlcipher.dir/all' failed
16:45:41 make[1]: *** [kmymoney/plugins/sqlcipher/CMakeFiles/qsqlcipher.dir/all] Error 2


ipwizard, proud to be a member of the KMyMoney forum since its beginning. :-D
openSuSE Leap 15.4 64bit, KF5
User avatar
ipwizard
KDE Developer
Posts
1359
Karma
6
OS

Re: Appimage building failure

Tue Feb 25, 2020 8:12 pm
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. :-D
openSuSE Leap 15.4 64bit, KF5
Rhabacker
Registered Member
Posts
6
Karma
0

Re: Appimage building failure

Tue Feb 25, 2020 10:56 pm
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.
Rhabacker
Registered Member
Posts
6
Karma
0

Re: Appimage building failure

Tue Feb 25, 2020 11:37 pm
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.
Rhabacker
Registered Member
Posts
6
Karma
0

Re: Appimage building failure

Wed Feb 26, 2020 12:57 pm
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()
User avatar
ipwizard
KDE Developer
Posts
1359
Karma
6
OS

Re: Appimage building failure

Thu Feb 27, 2020 7:49 pm


ipwizard, proud to be a member of the KMyMoney forum since its beginning. :-D
openSuSE Leap 15.4 64bit, KF5


Bookmarks



Who is online

Registered users: bartoloni, Bing [Bot], Evergrowing, Google [Bot], ourcraft