| Summary: | Can't find libappstream.so.5 library | ||
|---|---|---|---|
| Product: | [Developer tools] kdesrc-build | Reporter: | tomblackwhite |
| Component: | general | Assignee: | Michael Pyne <mpyne> |
| Status: | RESOLVED UPSTREAM | ||
| Severity: | normal | CC: | nate |
| Priority: | NOR | Keywords: | qt6 |
| Version First Reported In: | Git | ||
| Target Milestone: | --- | ||
| Platform: | openSUSE | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
Try a clean build and delete the old installed libappstream.so file. See https://github.com/ximion/appstream/issues/538. I think I find the reason, I install appimagelauncher rpm package which is from github release.
The package include some files are installed in the /usr/lib/x86_64-linux-gnu . But other opensuse package's .so files are installed in the
/usr/lib64.
So kdesrc-build install appstream .so files in ~/kde6/build/kde6/usr/lib64
When click the applauncher ,it find libAppStreamQt.so in lib64.
But libAppStreamQt.so can't find libappstream.so.5. Because libAppStreamQt uses the wrong RUNPATH.
I just uninstall appimagelauncher. And Rebuild and install appstream. The problem disappears.
The debug information from build appstream.
Substituting ${kdedir} with /home/tomblack/kde6/usr
Substituting ${kdedir} with /home/tomblack/kde6/usr
Substituting ${kdedir} with /home/tomblack/kde6/usr
Substituting ${kdedir} with /home/tomblack/kde6/usr
Substituting ${libname} with lib/x86_64-linux-gnu
Substituting ${num-cores} with auto
-- Reading dependencies from /home/tomblack/kde6/src/sysadmin/repo-metadata/dependencies/dependency-data-kf6-qt6
Using path: 'third-party/appstream' for item: appstream
Resolving dependencies for module: appstream
Copying up dependencies and transitive dependencies for item: appstream
No command-line filter seems to be present.
Adding appstream to module list
Holding performance profile
Using no IPC mechanism
<<< Update Process >>>
<<< Build Process >>>
Building appstream (build system meson) (1/1)
Queueing PKG_CONFIG_PATH to be set to /home/tomblack/kde6/usr/lib/x86_64-linux-gnu/pkgconfig:/home/tomblack/.gvm/pkgsets/go1.19.4/global/overlay/lib/pkgconfig
Queueing LD_LIBRARY_PATH to be set to /home/tomblack/kde6/usr/lib/x86_64-linux-gnu:/home/tomblack/.gvm/pkgsets/go1.19.4/global/overlay/lib
Queueing PATH to be set to /home/tomblack/kde6/usr/bin:/home/tomblack/.gvm/pkgsets/go1.19.4/global/bin:/home/tomblack/.gvm/gos/go1.19.4/bin:/home/tomblack/.gvm/pkgsets/go1.19.4/global/overlay/bin:/home/tomblack/.gvm/bin:/home/tomblack/.bin:/home/tomblack/.emacs.d/bin:/home/tomblack/.local/bin:/home/tomblack/bin:/usr/local/bin:/usr/bin:/bin:/opt/gradle/gradle-8.3/bin
Queueing LDFLAGS to be set to -Wl,-rpath=/home/tomblack/kde6/usr/lib/x86_64-linux-gnu
Source update complete for appstream: Skipped
cd /home/tomblack/kde6/build
Preparing build system for appstream.
Removing files in build directory for appstream
Old build system cleaned, starting new build system.
cd /home/tomblack/kde6/build/appstream
cd /home/tomblack/kde6/src/appstream
run_logged_command(): Module appstream, Command: meson setup /home/tomblack/kde6/build/appstream --prefix /home/tomblack/kde6/usr -Dqt=true
Setting environment variable LDFLAGS to -Wl,-rpath=/home/tomblack/kde6/usr/lib/x86_64-linux-gnu
Setting environment variable PATH to /home/tomblack/kde6/usr/bin:/home/tomblack/.gvm/pkgsets/go1.19.4/global/bin:/home/tomblack/.gvm/gos/go1.19.4/bin:/home/tomblack/.gvm/pkgsets/go1.19.4/global/overlay/bin:/home/tomblack/.gvm/bin:/home/tomblack/.bin:/home/tomblack/.emacs.d/bin:/home/tomblack/.local/bin:/home/tomblack/bin:/usr/local/bin:/usr/bin:/bin:/opt/gradle/gradle-8.3/bin
Setting environment variable LD_LIBRARY_PATH to /home/tomblack/kde6/usr/lib/x86_64-linux-gnu:/home/tomblack/.gvm/pkgsets/go1.19.4/global/overlay/lib
Setting environment variable PKG_CONFIG_PATH to /home/tomblack/kde6/usr/lib/x86_64-linux-gnu/pkgconfig:/home/tomblack/.gvm/pkgsets/go1.19.4/global/overlay/lib/pkgconfig
# kdesrc-build running: 'meson' 'setup' '/home/tomblack/kde6/build/appstream' '--prefix' '/home/tomblack/kde6/usr' '-Dqt=true'
# from directory: /home/tomblack/kde6/src/appstream
The Meson build system
Version: 1.2.2
Source dir: /home/tomblack/kde6/src/appstream
Build dir: /home/tomblack/kde6/build/appstream
Build type: native build
Project name: AppStream
Project version: 1.0.0
C compiler for the host machine: cc (gcc 13.2.1 "cc (SUSE Linux) 13.2.1 20230912 [revision b96e66fd4ef3e36983969fb8cdd1956f551a074b]")
C linker for the host machine: cc ld.bfd 2.40.0.20230412-5
Host machine cpu family: x86_64
LD_DEBUG=libs ldd libAppStreamQt.so | less
find library=libappstream.so.5 [0]; searching
20638: search path=/home/tomblack/.gvm/pkgsets/go1.19.4/global/overlay/lib/glibc-hwcaps/x86-64-v3:/home/tomblack/.gvm/pkgsets/go1.19.4/global/overlay/lib/glibc-hwcaps/x86-64-v2:/home/tomblack/.gvm/pkgsets/go1.19.4/global/overlay/lib (LD_LIBRARY_PATH)
20638: trying file=/home/tomblack/.gvm/pkgsets/go1.19.4/global/overlay/lib/glibc-hwcaps/x86-64-v3/libappstream.so.5
20638: trying file=/home/tomblack/.gvm/pkgsets/go1.19.4/global/overlay/lib/glibc-hwcaps/x86-64-v2/libappstream.so.5
20638: trying file=/home/tomblack/.gvm/pkgsets/go1.19.4/global/overlay/lib/libappstream.so.5
20638: search path=/home/tomblack/kde6/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v3:/home/tomblack/kde6/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v2:/home/tomblack/kde6/usr/lib/x86_64-linux-gnu (RUNPATH from file ./libAppStreamQt.so)
20638: trying file=/home/tomblack/kde6/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v3/libappstream.so.5
20638: trying file=/home/tomblack/kde6/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v2/libappstream.so.5
20638: trying file=/home/tomblack/kde6/usr/lib/x86_64-linux-gnu/libappstream.so.5
20638: search cache=/etc/ld.so.cache
20638: search path=/lib64/glibc-hwcaps/x86-64-v3:/lib64/glibc-hwcaps/x86-64-v2:/lib64:/usr/lib64/glibc-hwcaps/x86-64-v3:/usr/lib64/glibc-hwcaps/x86-64-v2:/usr/lib64 (system search path)
20638: trying file=/lib64/glibc-hwcaps/x86-64-v3/libappstream.so.5
20638: trying file=/lib64/glibc-hwcaps/x86-64-v2/libappstream.so.5
20638: trying file=/lib64/libappstream.so.5
20638: trying file=/usr/lib64/glibc-hwcaps/x86-64-v3/libappstream.so.5
20638: trying file=/usr/lib64/glibc-hwcaps/x86-64-v2/libappstream.so.5
20638: trying file=/usr/lib64/libappstream.so.5
|
SUMMARY STEPS TO REPRODUCE 1. When the system has two directories /usr/lib64 and /usr/lib/x86_64-linux-gnu 2. cd ~/kde6 && ./kdesrc-build plasma-desktop appstream && bash ~/kde6/build/kde/workspace/plasma-workspace/login-sessions/install-sessions.sh 3. reboot system and login in plasma6 then click the applauncher OBSERVED RESULT file:///home/tomblack/kde6/usr/share/plasma/plasmoids/org.kde.plasma.kickoff/contents/ui/main.qml:20:1: can't load library /home/tomblack/kde6/usr/lib64/qml/org/kde/plasma/private/kicker/libkickerplugin.so:(libappstream.so.5: can't open shared library: no file or directory ) EXPECTED RESULT the app should show SOFTWARE/OS VERSIONS Linux/KDE Plasma: openSUSE Tumbleweed 20231013 (available in About System) KDE Plasma Version: 5.27.80 KDE Frameworks Version: 5.240.0 Qt Version: 6.6.0 ADDITIONAL INFORMATION I remove the /usr/lib/x86_64-linux-gnu . And rebuild the appstrem use kdesrc-build. The applauncher shows the apps. I find the code in kde-env-master.sh ---------code------- libname=lib if test -d /usr/lib/x86_64-linux-gnu; then libname=lib/x86_64-linux-gnu elif test -d /usr/lib64 -a '!' -L /usr/lib64; then libname=lib64 fi ------code------ and code in modules/ksb/BuildContext.pm ----code---- my $libname = "lib"; $libname = "lib64" if (-d "/usr/lib64" and not -l "/usr/lib64"); $libname = "lib/x86_64-linux-gnu" if (-d "/usr/lib/x86_64-linux-gnu"); ---code--- I think the order is the reson