GerbilSoft/rom-properties

[Bug Report] Extension missing from Dolphin on Plasma 6

Closed this issue · 10 comments

Just recently Arch has merged Plasma 6 replacing the old Plasma 5 desktop, and it seems that rom-properties stopped working. I can't find it in the tabs nor in the preview settings page in Dolphin. Took a look in the code and it seems that there is already support for KF6 in the code. It is still incomplete? If yes, what specific parts are missing? I could take a look and implement it myself, assuming I'm up to the task at hand.

I've already ran kbuildsycoca6 --noincremental to no avail. Binaries are present but no extension show up in the UI.

Marco

I'm using KF6 and rom-properties shows up here. Did you rebuild it with KF6 enabled? There's a separate rom-properties-kf6.so file.

If it's a precompiled package, that package will need to be recompiled with KF6 support. (v2.3 was the first version with full KF6 support.)

Yep, files are there, just checked. Using arch and built the latest git package from sources.

Tried running Dolphin with LD_DEBUG=libs and it seems that (at least on Arch) it checks /usr/lib/qt6/plugins for plugins instead of /usr/lib/qt/plugins (note the added "6" after qt). Interestingly, Arch installs the qtpaths6 binary at /usr/lib/qt6/bin/qtpaths6, so it might be worth changing the CMake script to check for the binary at that path as well.

Can you post the contents of build/src/libunixcommon/config.libunixcommon.h from the build tree?

On my system (Gentoo Linux with KF6):

/* KDE4 plugin path */
/* #undef KDE4_PLUGIN_INSTALL_DIR */

/* KF5 plugin path */
#define KF5_PLUGIN_INSTALL_DIR "/usr/lib64/qt5/plugins"

/* KF5 PropertiesDialog plugin path */
#define KF5_PRPD_PLUGIN_INSTALL_DIR "/usr/lib64/qt5/plugins/kf5/propertiesdialog"

/* KF6 plugin path */
#define KF6_PLUGIN_INSTALL_DIR "/usr/lib64/qt6/plugins"

/* KF6 PropertiesDialog plugin path */
#define KF6_PRPD_PLUGIN_INSTALL_DIR "/usr/lib64/qt6/plugins/kf6/propertiesdialog"

/* ThunarX2 extensions path */
#define ThunarX2_EXTENSIONS_DIR "/usr/lib64/thunarx-2"

/* libnautilus-extension 3.0 extensions path */
#define LibNautilusExtension3_EXTENSION_DIR "/usr/lib64/nautilus/extensions-3.0"

/* libnautilus-extension 4.0 extensions path */
#define LibNautilusExtension4_EXTENSION_DIR "/usr/lib64/nautilus/extensions-4"

/* Define to 1 if you have the `getpwuid_r' function. */
#define HAVE_GETPWUID_R 1

/* Define to 1 if you have the `getpwuid' function. */
/* #undef HAVE_GETPWUID */

/* Define to 1 if you have the `statx` function. */
#define HAVE_STATX 1

[Minor correction: getpwuid() does exist, but the CMake script was skipping the check since getpwuid_r() is also present. I'm changing it to check for both regardless, since it looks weird if the config file claims getpwuid() doesn't exist.]

Can you post the contents of build/src/libunixcommon/config.libunixcommon.h from the build tree?

On my system (Gentoo Linux with KF6):

...

[Minor correction: getpwuid() does exist, but the CMake script was skipping the check since getpwuid_r() is also present. I'm changing it to check for both regardless, since it looks weird if the config file claims getpwuid() doesn't exist.]

Yeah, you are right, this looks broken on my end:

/***************************************************************************
 * ROM Properties Page shell extension. (rp-stub)                          *
 * config.libunixcommon.h.in: libunixcommon configuration. (source file)   *
 *                                                                         *
 * Copyright (c) 2017-2023 by David Korth.                                 *
 * SPDX-License-Identifier: GPL-2.0-or-later                               *
 ***************************************************************************/

#pragma once

/* KDE4 plugin path */
/* #undef KDE4_PLUGIN_INSTALL_DIR */

/* KF5 plugin path */
#define KF5_PLUGIN_INSTALL_DIR "/usr/lib/qt/plugins"

/* KF5 PropertiesDialog plugin path */
#define KF5_PRPD_PLUGIN_INSTALL_DIR "/usr/lib/qt/plugins/kf5/propertiesdialog"

/* KF6 plugin path */
#define KF6_PLUGIN_INSTALL_DIR "/usr/lib/qt/plugins"

/* KF6 PropertiesDialog plugin path */
#define KF6_PRPD_PLUGIN_INSTALL_DIR "/usr/lib/qt/plugins/kf6/propertiesdialog"

/* ThunarX2 extensions path */
#define ThunarX2_EXTENSIONS_DIR "/usr//usr/lib/thunarx-2"

/* libnautilus-extension 3.0 extensions path */
#define LibNautilusExtension3_EXTENSION_DIR "/usr//usr/lib/nautilus/extensions-3.0"

/* libnautilus-extension 4.0 extensions path */
#define LibNautilusExtension4_EXTENSION_DIR "/usr//usr/lib/nautilus/extensions-4"

/* Define to 1 if you have the `getpwuid_r' function. */
#define HAVE_GETPWUID_R 1

/* Define to 1 if you have the `getpwuid' function. */
/* #undef HAVE_GETPWUID */

/* Define to 1 if you have the `statx` function. */
#define HAVE_STATX 1

I do have a /usr/lib/qt and /usr/lib/qt6, it seems that cmake is pointing to qt5's plugin directory on both KF frameworks and installing it into the wrong directory.

Yep, wrong root folder

immagine

I'll have to set up an Arch VM and determine what needs to be fixed there. Will do that sometime later this week.

EDIT: If you haven't already done so, make sure you're specifying -DCMAKE_INSTALL_PREFIX=/usr when configuring.

I'm using this aur package updated to 2.3 manually, and yeah, the configure step is using the correct install prefix, see here: https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=rom-properties#n20

(Just change pkgver to 2.3, then run updpkgsums inside that folder from pacman-contrib package in arch, then run makepkg to compile it and generate a ready to install arch package that you can install with sudo pacman -U <package_name>)

Has there been any updates to getting this to work on Arch derivatives? I'm using EndeavourOS and it feels really weird to not have my ROM icons show up

Haven't followed up this yet, since I'm using arch less and less these days for gaming. Not sure if it still is a problem today.