Probably since the last monthly update of my Manjaro (KDE), a few date ago, I get the following message : > ./digiKam-8.5.0-20240822T090055-Qt6-x86-64.appimage ... ... -- Detected host Linux manjarolinux-64-"24..7" -- AppImage mounted directory: /tmp/.mount_digiKaqf2Tdu Check library libudev.so.0 Check library libxcb-dri3.so.0 Check library libcrypto.so.1.1 Check library libssl.so.1.1 Check library libnss3.so Check library libnssutil3.so Check library libsmime3.so Check library libgmodule-2.0.so.0 Check library libgnutls.so.30 Check library libnettle.so.8 -- Preloading shared libs: :/usr/lib64/libxcb-dri3.so.0:/usr/lib64/libnss3.so:/usr/lib64/libnssutil3.so:/usr/lib64/libsmime3.so:/usr/lib64/libgmodule-2.0.so.0:/usr/lib64/libgnutls.so.30:/usr/lib64/libnettle.so.8 digikam: symbol lookup error: /usr/lib64/libgnutls.so.30: undefined symbol: nettle_rsa_oaep_sha384_decrypt, version HOGWEED_6 > May be not a digikam problem ? NB. I have no problem with digikam 8.4 from the distrib repository.
1/ Extract appimage bundle content in local to be able to edit startup bash script : ./digiKam-8.5.0-20240822T090055-Qt6-x86-64.appimage --appimage-extract This will create a subdir named squashfs-root 2/ Edit the ./squashfs-root/AppRun script. Comment line 176 and try to run the AppRun script (this one is automatically called when you run the appimage bundle. Gilles Caulier
Comment on line 176 => digikam starts without problem.
Git commit 24b0976975dcc6e7a0e06569fddd8af146b6bd21 by Gilles Caulier. Committed on 22/08/2024 at 14:12. Pushed by cgilles into branch 'master'. check if not manjaro linux 24.7 for this preloading M +4 -2 project/bundles/appimage/data/AppRun https://invent.kde.org/graphics/digikam/-/commit/24b0976975dcc6e7a0e06569fddd8af146b6bd21
I started the appimage build with my last patch. I will be online in one hour... Gilles Caulier
Ok with last appimage. Thanks !
(In reply to caulier.gilles from comment #3) > Git commit 24b0976975dcc6e7a0e06569fddd8af146b6bd21 by Gilles Caulier. > Committed on 22/08/2024 at 14:12. > Pushed by cgilles into branch 'master'. > > check if not manjaro linux 24.7 for this preloading > > M +4 -2 project/bundles/appimage/data/AppRun > > https://invent.kde.org/graphics/digikam/-/commit/ > 24b0976975dcc6e7a0e06569fddd8af146b6bd21 The originally reported error happened exactly the same on my openSUSE Tumbleweed (20240908) using latest weekly snapshot AppImage digiKam-8.5.0-20240909T160114-Qt6-x86-64-debug.appimage so I found this report. When I disabled (commented) the Manjaro workaround on line 170 (if....fi) it got fixed and digikam launches fine.
Hi Ilgaz, The AppImage startup script must print the Linux host info on the first lines. These info are used to decide which shared libs must be loaded from the bundle or from the host. Can you give me a trace of the AppImage startup up on your computer ? Gilles Caulier
Hi Gilles, The OS name and version are missing here in openSUSE Tumbleweed, which results in this output: -- Detected host Linux -64- Maik
There is only a $VENDOR=suse, there is no version number. One way under openSUSE would be "cat /etc/os-release" NAME="openSUSE Tumbleweed" # VERSION="20240908" ID="opensuse-tumbleweed" ID_LIKE="opensuse suse" VERSION_ID="20240908" PRETTY_NAME="openSUSE Tumbleweed" ANSI_COLOR="0;32" # CPE 2.3 format, boo#1217921 CPE_NAME="cpe:2.3:o:opensuse:tumbleweed:20240908:*:*:*:*:*:*:*" #CPE 2.2 format #CPE_NAME="cpe:/o:opensuse:tumbleweed:20240908" BUG_REPORT_URL="https://bugzilla.opensuse.org" SUPPORT_URL="https://bugs.opensuse.org" HOME_URL="https://www.opensuse.org" DOCUMENTATION_URL="https://en.opensuse.org/Portal:Tumbleweed" LOGO="distributor-logo-Tumbleweed" Tying it to the VERSIONS_ID in openSuse Tumbleweed doesn't really make sense, as it changes too quickly. Maik
Git commit 5a1f028e029b98323032d1b964cce5563bcf2793 by Maik Qualmann. Committed on 11/09/2024 at 19:56. Pushed by mqualmann into branch 'master'. support current openSuse Tumbleweed In AppImage M +15 -1 project/bundles/appimage/data/AppRun https://invent.kde.org/graphics/digikam/-/commit/5a1f028e029b98323032d1b964cce5563bcf2793
Since Appimage_2024-09-12 I get this error: -- Preloading shared libs: :/usr/lib64/libxcb-dri3.so.0:/usr/lib64/libnss3.so:/usr/lib64/libnssutil3.so:/usr/lib64/libsmime3.so:/usr/lib64/libgmodule-2.0.so.0:/usr/lib64/libgnutls.so.30:/usr/lib64/libnettle.so.8 digikam: symbol lookup error: /usr/lib64/libgnutls.so.30: undefined symbol: nettle_rsa_oaep_sha384_decrypt, version HOGWEED_6 With Appimage_2024-09-11 it was ok. Do you want I open another bug ?
No. note : nothing has changed in the AppImage bundle.
> note : nothing has changed in the AppImage bundle. Ok. Maybe there's been a Manjaro update between 11/9 and 12/9 ; I don't remember.
Certainly. To hack, with the last AppImage file, extract the content from the bundle in temporary dir by passing the "--appimage-extract" argument on the command line. In the subdir just created, you will found the AppRun bash script used to start the application in the AppImage. As the whole bundle is now extracted, you can run it as well to execute AppRun script. The behaviors must be exactly the same. How to hack this problem: look on this line of the script : https://invent.kde.org/graphics/digikam/-/blob/master/project/bundles/appimage/data/AppRun?ref_type=heads#L148 There are line to branch the rules about preloading shared libs from the system before to run the application (instead the bundle one). Typically you have a lib to load here with your system, the problem of course is to found right one. Gilles
Created attachment 173863 [details] AppRun script I don't understand what you want I do so I attached apprun script. Let me know if you need something else.
Not al all (:=)))... I want the new line to pre-load the system shared lib from your system to allow digiKam to run as expected... In fact it's a patch of AppRun script. Gilles
(In reply to caulier.gilles from comment #16) > Not al all (:=)))... > > I want the new line to pre-load the system shared lib from your system to allow digiKam to run as expected... Sorry, I don't know what you mean :-( I have only this error log : -- Preloading shared libs: :/usr/lib64/libxcb-dri3.so.0:/usr/lib64/libnss3.so:/usr/lib64/libnssutil3.so:/usr/lib64/libsmime3.so:/usr/lib64/libgmodule-2.0.so.0:/usr/lib64/libgnutls.so.30:/usr/lib64/libnettle.so.8 digikam: symbol lookup error: /usr/lib64/libgnutls.so.30: undefined symbol: nettle_rsa_oaep_sha384_decrypt, version HOGWEED_6 and the apprun script I attached in previous post.
Ok... In your AppRun script, remove line 188 to 193: https://invent.kde.org/graphics/digikam/-/blob/master/project/bundles/appimage/data/AppRun?ref_type=heads#L188 ... and try to start it. Gilles
That is ok now !
I downloaded the 8.5 appimage and after an update on my Debian, it doesn't work anymore ( symbol lookup error: /usr/lib/x86_64-linux-gnu/libgnutls.so.30: undefined symbol: nettle_rsa_oaep_sha384_decrypt, version HOGWEED_6) I'm not willing to unsquashing the fs, editing scripts, and re-squashing it -- as it was suggested by others here. That's not a solution for the end user, I need an appimage that works out of the box to suggest to my users (I help a number of Linux users in my Greek hometown). Please re-open this bug report, or update the .appimage file to work, so we can re-download it. Thank you.
To fix the problem under Debian I need the output of: cat /etc/*-release Maik
digiKam-8.6.0-20241123T170103-Qt6-x86-64.appimage digikam: symbol lookup error: /usr/lib/x86_64-linux-gnu/libgnutls.so.30: undefined symbol: nettle_rsa_oaep_sha384_decrypt, version HOGWEED_6 cat /etc/*-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=20.10 DISTRIB_CODENAME=groovy DISTRIB_DESCRIPTION="Ubuntu Groovy Gorilla (development branch)" PRETTY_NAME="Debian GNU/Linux trixie/sid" NAME="Debian GNU/Linux" VERSION_CODENAME=trixie ID=debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/"
Git commit 9b30877567af4b9694c1d64374b59ea490087eab by Maik Qualmann. Committed on 24/11/2024 at 15:43. Pushed by mqualmann into branch 'master'. add Ubuntu 20.10 to check preloading M +4 -3 project/bundles/appimage/data/AppRun https://invent.kde.org/graphics/digikam/-/commit/9b30877567af4b9694c1d64374b59ea490087eab
I have the same issue on Manjaro: > /etc/arch-release:Manjaro Linux > /etc/lsb-release:DISTRIB_ID="ManjaroLinux" > /etc/lsb-release:DISTRIB_RELEASE="24.1.2" > /etc/lsb-release:DISTRIB_CODENAME="Xahea" > /etc/lsb-release:DISTRIB_DESCRIPTION="Manjaro Linux" > /etc/manjaro-release:Manjaro Linux > /etc/os-release:NAME="Manjaro Linux" > /etc/os-release:PRETTY_NAME="Manjaro Linux" > /etc/os-release:ID=manjaro > /etc/os-release:ID_LIKE=arch > /etc/os-release:BUILD_ID=rolling > /etc/os-release:ANSI_COLOR="32;1;24;144;200" > /etc/os-release:HOME_URL="https://manjaro.org/" > /etc/os-release:DOCUMENTATION_URL="https://wiki.manjaro.org/" > /etc/os-release:SUPPORT_URL="https://forum.manjaro.org/" > /etc/os-release:BUG_REPORT_URL="https://docs.manjaro.org/reporting-bugs/" > /etc/os-release:PRIVACY_POLICY_URL="https://manjaro.org/privacy-policy/" > /etc/os-release:LOGO=manjarolinux I use DK 8.5, but the current conditions of the development version do not match either: > if [[ ! (($OS_NAME == "ubuntu" && $OS_VERSION -ge 2010) || > ($OS_NAME == "manjarolinux" && $OS_VERSION -ge 247) || > ($OS_NAME == "fedora linux" && $OS_VERSION -ge 40) || > ($OS_NAME == "opensuse tumbleweed" && $OS_VERSION -ge 20240908)) ]] ; then My version is lower than 247, but I wonder if the check makes sense at all for a rolling distribution. Wouldn't it be better to allow preload_shared_library to fail for libgnutls.so.30, instead of having it mandatory depending on these conditions?
If preloading fails, the startup script aborts. Since we remove the dots, your version should be falsely recognized as higher. It is not completely impossible to compare floating point numbers in bash, I will fix it. Maik
Git commit 4d3610fb13add7d5d79337cba841c8a40321f4e6 by Maik Qualmann. Committed on 07/12/2024 at 20:28. Pushed by mqualmann into branch 'master'. add support for floating-point version numbers M +6 -6 project/bundles/appimage/data/AppRun https://invent.kde.org/graphics/digikam/-/commit/4d3610fb13add7d5d79337cba841c8a40321f4e6
This seems to be broken on Arch Linux as well. I've confirmed that adding `($OS_NAME == "arch") ||` fixes this bug. cat /etc/*-release DISTRIB_ID="Arch" DISTRIB_RELEASE="rolling" DISTRIB_DESCRIPTION="Arch Linux" NAME="Arch Linux" PRETTY_NAME="Arch Linux" ID=arch BUILD_ID=rolling ANSI_COLOR="38;2;23;147;209" HOME_URL="https://archlinux.org/" DOCUMENTATION_URL="https://wiki.archlinux.org/" SUPPORT_URL="https://bbs.archlinux.org/" BUG_REPORT_URL="https://gitlab.archlinux.org/groups/archlinux/-/issues" PRIVACY_POLICY_URL="https://terms.archlinux.org/docs/privacy-policy/" LOGO=archlinux-logo
Git commit 204fc032aa3b37da9688e5896947317835729d44 by Maik Qualmann. Committed on 29/12/2024 at 21:20. Pushed by mqualmann into branch 'master'. add Arch rolling release for the AppImage M +2 -1 project/bundles/appimage/data/AppRun https://invent.kde.org/graphics/digikam/-/commit/204fc032aa3b37da9688e5896947317835729d44
Maik, sorry to ask again, but why not try to "preload_shared_library libgnutls.so.30" and silently ignore failure to do so? Not only it would be easier to maintain, it would also be more robust on existing distributions (e.g. old Arch installations) or distributions unknown to the script (e.g. many :) )
I can't currently find a solution to continue digiKam if a preload error occurs. Solutions like "set +e" don't work here either. Maik
Created attachment 176985 [details] Patch using ld.so instead of mere file existence for preload Hi Maik, thanks for looking into this again! I gave it a try. Here is a version of the function using ld.so to check if the library can be preloaded, instead of relying on the existence of the file. It works file on my system (Manjaro). Note that if we go this way, OS_NAME, OS_VERSION... are not strictly necessary anymore. That would simplify the script further.
Git commit 5b8a076368c1dd4c058d00e42aad1ea8884d8295 by Maik Qualmann. Committed on 31/12/2024 at 11:44. Pushed by mqualmann into branch 'master'. apply patch #176985 from Olivier Croquette to check pre-loading libraries M +18 -24 project/bundles/appimage/data/AppRun https://invent.kde.org/graphics/digikam/-/commit/5b8a076368c1dd4c058d00e42aad1ea8884d8295
Hi Olivier, Thank you for the patch, it works perfectly here under openSUSE too. We leave the reading of OS name/version in the output as information. Maik
Great, thank you Maik.