[kio] /: Look for kdesu in the correct location

Marko Käning mk-lists at email.de
Sat Feb 21 17:37:10 UTC 2015


Hi Marco,

I’ve seen your below commit for kio and wondered whether something similar
regarding CMAKE_INSTALL_FULL_LIBEXECDIR could be done for kconfig, since 
currently I need this OSX-specific configure option:
---
$ cat config/build/darwin-mavericks.cfg 
[DEFAULT]
configureExtraArgs=-DCMAKE_INSTALL_BUNDLEDIR="lib/libexec/kf5"
---
to make sure that kconfig can actually find kconfig_compiler.app which
otherwise gets installed in an OSX-location [1].

Surely this application doesn’t need to be exposed to a user, thus the
location in $PREFIX/lib/libexec/kf5 is ok.

But in case cmake does install it - like in [1] below the path
/Applications/KDE - kconfig and kservice [2] should also be able to find
kconfig_compiler's application package.

Greets,
Marko




[1] https://paste.kde.org/pdubpj7nm
[2] https://mail.kde.org/pipermail/kde-frameworks-devel/2014-May/016059.html




On 09 Feb 2015, at 18:41 , Marco Martin <notmart at gmail.com> wrote:

> Git commit 5d70bd5de594ff40a009c0e783f9a0a7eed2f14e by Marco Martin.
> Committed on 09/02/2015 at 17:39.
> Pushed by mart into branch 'master'.
> 
> Look for kdesu in the correct location
> 
> Look for kdesu under CMAKE_INSTALL_FULL_LIBEXECDIR directory
> patch by Maarten De Meyer
> 
> REVIEW:120185
> CCMAIL:de.meyer.maarten at gmail.com
> 
> M  +2    -2    autotests/krununittest.cpp
> M  +11   -1    src/core/desktopexecparser.cpp
> 
> http://commits.kde.org/kio/5d70bd5de594ff40a009c0e783f9a0a7eed2f14e
> 
> diff --git a/autotests/krununittest.cpp b/autotests/krununittest.cpp
> index 73a3932..03cbde8 100644
> --- a/autotests/krununittest.cpp
> +++ b/autotests/krununittest.cpp
> @@ -154,8 +154,8 @@ void KRunUnitTest::testProcessDesktopExec()
>                 int pt = ex + te * 2 + su * 4;
>                 QString exe;
>                 if (pt == 4 || pt == 5) {
> -                    exe = QStandardPaths::findExecutable("kdesu");
> -                    if (exe.isEmpty()) {
> +                    exe = QFile::decodeName(CMAKE_INSTALL_FULL_LIBEXECDIR_KF5 "/kdesu");
> +                    if (!QFile::exists(exe)) {
>                         qWarning() << "kdesu not found, skipping test";
>                         continue;
>                     }
> diff --git a/src/core/desktopexecparser.cpp b/src/core/desktopexecparser.cpp
> index e20f046..7bb29ba 100644
> --- a/src/core/desktopexecparser.cpp
> +++ b/src/core/desktopexecparser.cpp
> @@ -393,7 +393,17 @@ QStringList KIO::DesktopExecParser::resultingArguments() const
>         if (d->service.terminal()) {
>             result << "su";
>         } else {
> -            result << QStandardPaths::findExecutable("kdesu") << "-u";
> +            QString kdesu = QFile::decodeName(CMAKE_INSTALL_FULL_LIBEXECDIR_KF5 "/kdesu");
> +            if (!QFile::exists(kdesu)) {
> +                kdesu = QStandardPaths::findExecutable("kdesu");
> +            }
> +            if (!QFile::exists(kdesu)) {
> +                // Insert kdesu as string so we show a nice warning: 'Could not launch kdesu'
> +                result << QStringLiteral("kdesu");
> +                return result;
> +            } else {
> +                result << kdesu << "-u";
> +            }
>         }
> 
>         result << d->service.username() << "-c";
> 



More information about the Kde-frameworks-devel mailing list