Bug 491462

Summary: kfilemetadata-6.4.0 external plugin path LIBEXEC_INSTALL_DIR broken
Product: [Frameworks and Libraries] frameworks-kfilemetadata Reporter: Gabriel Marcano <gabemarcano>
Component: generalAssignee: Pinak Ahuja <pinak.ahuja>
Status: RESOLVED FIXED    
Severity: normal CC: gabemarcano
Priority: NOR    
Version: 6.4.0   
Target Milestone: ---   
Platform: Gentoo Packages   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Gabriel Marcano 2024-08-08 23:13:28 UTC
SUMMARY

kffilemetadata is looking for external plugins at the path:
    /usr//usr/libexec/kfilemetadata/externalextractors

which is clearly wrong. In the source code, this path is defined in src/config-kfilemetadata.h.in:
    #define LIBEXEC_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${KDE_INSTALL_LIBEXECDIR_KF}"

Unless there's something weird Gentoo is doing, `CMAKE_INSTALL_PREFIX` is resolving to `/usr/` and `KDE_INSTALL_LIBEXECDIR_KF` is resolving to `/usr/libexec/kf6`. The net effect is that `LIBEXEC_INSTALL_DIR` is being assigned `/usr//usr/libexec/kf6`.

This used to work with kf5, but something must have changed when transitioning to kf6.

STEPS TO REPRODUCE
1. Create an external extractor and store it in /usr/libexec/kf6/kfilemetadata/externalextractors
2. In dolphin, open the properties of a file relevant to the externalextractor and view details
or
1. strings -e l /usr/lib64/libKF6FileMetaData.so.6.4.0 | grep libexec

OBSERVED RESULT
No metadata is shown.

and

$ strings -e l /usr/lib64/libKF6FileMetaData.so.6.4.0 | grep libexec
/usr//usr/libexec/kf6/kfilemetadata/externalextractors
/usr//usr/libexec/kf6

EXPECTED RESULT
Metadata is shown.

and

$ strings -e l /usr/lib64/libKF6FileMetaData.so.6.4.0 | grep libexec
/usr/libexec/kf6/kfilemetadata/externalextractors
/usr/libexec/kf6

SOFTWARE/OS VERSIONS
Linux:  Gentoo Linux 2.15
KDE Plasma Version: 6.1.4
KDE Frameworks Version: 6.4.0
Qt Version: 6.7.2

ADDITIONAL INFORMATION

I've patched my local build of kfilemetadata by simply removing `{CMAKE_INSTALL_PREFIX}/` from the `LIBEXEC_INSTALL_DIR` definition, and that fixes the issue for me.
Comment 1 Bug Janitor Service 2024-08-10 08:09:12 UTC
A possibly relevant merge request was started @ https://invent.kde.org/frameworks/kfilemetadata/-/merge_requests/154
Comment 2 Andreas Sturmlechner 2024-08-10 10:18:32 UTC
Git commit 6708b9acf81b69e82166ac65893241235513c026 by Andreas Sturmlechner.
Committed on 10/08/2024 at 08:08.
Pushed by asturmlechner into branch 'master'.

cmake: Use KDE_INSTALL_FULL_LIBEXECDIR_KF instead of manual path mangling

KDE_INSTALL_LIBEXECDIR_KF is not guaranteed to be relative.

Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>

M  +1    -1    src/config-kfilemetadata.h.in

https://invent.kde.org/frameworks/kfilemetadata/-/commit/6708b9acf81b69e82166ac65893241235513c026